Image Caption浅谈(2)

引言

上一次,提到seq2seq模型到nic模型,这种Encoder-Decoder结构中,Encode把所有的输入序列都编码成一个统一的语义特征 h n 再解码,因此, h n 中必须包含原始句子中的所有信息,它的长度就成了限制模型性能的瓶颈。对于短句来说还好,但当句子较长时,一个 h n 可能存不下那么多信息,就会造成翻译精度的下降。在这种情况下,论文《Neural machine translation by jointly learning to align and translate》提出了一种Attention机制,不再使用统一的语义特征,而让Decoder在输入序列中自由选取需要的特征,大大提高了Encoder-Decoder的模型性能。有兴趣的朋友可以去读一下这篇文章,这里不再多讨论。

Image Caption With Attention

同样的道理,我们在Iamge Caption中也可以借鉴这种Attention的机制,于是就有了《Show, Attend and Tell: Neural Image Caption Generation with Visual Attention》这篇文章,以前decoder在不同的时刻对接收到的信息进行解码并生成单词时,所接收到的encoder vector都是相同的。但是实际上,在生成不同的词时,所应“关注”的信息是不一样的,attention机制就是为了实现在生成一个词时去关注当前所“应该”关注的显著(salient)信息这一目的,手段就是对输入信息的各个局部赋予权重。
这里写图片描述
之前NIC模型用的是最后一层的向量作为特征,这样是具有更多的语义信息,但是缺点是失去了更多能让caption丰富的细节信息,因此在这项工作中采用稍微低层一点的特征( 14 14 512 )。
这里写图片描述

Attention机制

加入attention机制的模型如下图所示
这里写图片描述
I 是输入图片, a i 是图像特征D维,共有L个。 z t 称为 context vector,是捕捉了特定区域视觉信息的上下文向量。想要实现这种机制的方式就是在时刻 t ,为输入序列的各个区域 i 计算出一个权重 α i ,因为需要满足输入序列的各个区域的权重是加和为一的,使用Softmax来实现这一点。至于Softmax需要输入的信息,则如上所讲,需要包含两个方面:一个是被计算的区域 α i ,另一个就是上一个时刻的信息 h t 1 :

e t i = f att ( a i , h t 1 )

α t i = exp ( e t i ) k = 1 L exp ( e t k )

f a t t 是计算区域 i 和时刻 t 这两个信息的打分函数,本文使用多层感知机+softmax。这里举一个简单的例子,比如featuremap大小为3*3,最终算出来的 α 就是对应的3*3九个值,和为1(softmax)。这里的意义就是赋予featuremap不同区域的各一个权值。
有了权重,就要计算context z ^ t = ϕ ( { a i } , { α t i } ) ,这个函数 ϕ 就代指文中提出的两种attention机制,对应于将权重施加到图像区域到两种不同的策略。
本文提出两种attention机制:

(1)Stochastic “Hard” Attention

“Hard” Attention,机制中权重 α 所扮演的角色是图像区域 a i 在时刻 t 被选中作为输入decoder的信息的概率,有且仅有一个区域会被选中。相比之下“Hard” Attention 更有难度,实现细节这里不多讨论,有兴趣可以去读一下原文。

(2)Deterministic “Soft” Attention

大多数开源代码均为soft attention,相比之下,在 soft attention 机制中,权重 α 所扮演的角色是图像区域 a i 在时刻 t 的输入decoder的信息中的所占的比例。既然这样,就将各区域 a i 与对应的权重 α i 做加权求和就可以得到 z ^ t

E p ( s t | a ) [ z ^ t ] = i = 1 L α t , i a i

在训练时,得到 z ^ t ,将 z ^ t 和feature做concatenate,输入到lstm进行解码。

总结

本文就是在nic模型的基础上,根据机器翻译的attention机制,提出了两种attention模型,由于使用了Attention机制,就可以根据权重系数 α 的大小,在生成每个词时模型关注到了图片的哪个区域。下面展示一个例子,在图片中用白色高亮标注了生成下划线单词时模型关注的区域:
这里写图片描述

参考

  1. Show, Attend and Tell: Neural Image Caption Generation with Visual Attention
  2. https://blog.csdn.net/shenxiaolu1984/article/details/51493673
  3. http://www.cnblogs.com/Determined22/p/6914926.html

猜你喜欢

转载自blog.csdn.net/xuezhan123/article/details/79704112
今日推荐