论文笔记:Knowing When to Look: Adaptive Attention via A Visual Sentinel for Image Captioning

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_26253653/article/details/79416234

论文链接:Knowing When to Look: Adaptive Attention via A Visual Sentinel for Image Captioning


Introduction

目前大多数的基于attention机制的image captioning模型采用的都是encoder-decoder的框架。然而在decode的时候,decoder应该对不同的词有不同的attention策略。例如,”the”、”of”等词,或者是跟在”cell”后面的”phone”等组合词,这类词叫做非视觉词(non-visual word),更多依赖的是语义信息而不是视觉信息。而且,在生成caption的过程中,非视觉词的梯度会误导或者降低视觉信息的有效性。因此,本文提出了带有视觉标记的自适应的attention模型(adative attention model with a visual sentinel),在每一个time step,模型决定更依赖于图像还是visual sentinel。其中,visual sentinel存放了decoder已经知道的信息。

本文的贡献在于

  1. 提出了带有视觉标记的自适应的attention模型
  2. 提出了新的spatial attention机制
  3. 提出了LSTM的扩展,在hidden state以外加入了一个额外的visual sentinel vector

Method

Spatial Attention Model

文章介绍了普通的encoder-decoder框架,这里不再赘述。但文章定义了context vector c t ,对于没有attention机制的模型, c t 就是图像经过CNN后提取出的feature map,是不变的;而对于有attention机制的模型,基于hidden state,decoder会关注图像的不同区域, c t 就是该区域经过CNN后提取出的feature map。

文章对 c t 的定义如下:

c t = g ( V , h t )

其中g是attention function, V = [ v 1 , . . . , v k ] 代表k个区域的图像feature, h t 是t时刻RNN的hidden state。
由此可以得到k个区域的attention分布 α t

z t = w h T t a n h ( W v V + ( W g h t ) 1 1 T ) (这里把 V h t 相加,而有些论文则使用一个双线性矩阵来连接它们)
α t = s o f t m a x ( z t )

其中 1 1 R k 是所有元素为1的向量,目的是让 ( W g h t ) 1 1 T 相乘得到k*k大小的矩阵。
最终本文的 c t

c t = i = 1 k α t i v t i

show, attend and tell使用 h t 1 的做法不同,本文使用的是 h t 。结构如下
这里写图片描述
作者认为 c t 可以看作 h t 的残差连接,可以在预测下一个词时降低不确定性或者提供情报。(不是应该做一个实验验证使用 h t h t 1 的差别?)并且发现,这种spatial attention方式比其他模型表现更好。

Adaptive Attention Model

decoder存储了长时和短时的视觉和语义信息,而visual sentinel s t 作为从里面提取的一个新的元件,用来扩展上述的spatial attention model,就得到了adaptive attention model。

具体的扩展方式就是在原有的LSTM基础上加了两个公式:

g t = σ ( W x x t + W h h t 1 )
s t = g t t a n h ( m t )

其中 x t 是LSTM的输入, m t 是memory cell(有些论文里用 c t 表示)。
这里的 g t 叫sentinel gate,公式形式类似于LSTM中的input gate, forget gate, ouput gate,决定了模型到底关注图像还是visual sentinel;而 s t 公式的构造与LSTM中的 h t = o t t a n h ( c t ) 类似。

而adaptive attention model中的context vector c ^ = β t s t + ( 1 β t ) c t

β t [ 0 , 1 ] 可以视为真正意义上的sentinel gate,控制模型关注visual sentinel和 c t 的程度。
与此同时,spatial attention部分k个区域的attention分布 α t 也被扩展成了 α t ^ ,做法是在 z t 后面拼接上一个元素:

α t ^ = s o f t m a x ( [ z t ; w h T t a n h ( W s s t + ( W g h t ) ) ] )

扩展后的 α t ^ 有k+1个元素,而 β t = α t ^ [ k + 1 ]
(CVPR和arxiv版本的原文都写的是 β t = α t [ k + 1 ] ,我在github上问了作者,这确实是个笔误https://github.com/jiasenlu/AdaptiveAttention/issues/14
这里的 W g z t = w h T t a n h ( W v V + ( W g h t ) 1 1 T ) 中的 W g 是相同的(为什么这样做? W h 也是一样的,作者在这里没有提到,在后续的论文里的公式(9)提到了)。

上述公式可以简化为:

β t = w h T t a n h ( W s s t + ( W g h t ) ) ]
c ^ = β t s t + ( 1 β t ) c t
α t ^ = s o f t m a x ( [ z t ; β t ] )

最终单词的概率分布:
p t = s o f t m a x ( W p ( c ^ + h t ) )

具体架构如下:
这里写图片描述


Implementation Details

文章选择了ResNet的最后一层卷积层的特征来表示图像,维度是2048x7x7,并使用 A = { a 1 , . . . , a k } , a i R 2048 来表示k个局部图像特征,而全局图像特征则是局部特征的平均:
a g = 1 k i = 1 k a i
局部图像特征需要经过转换:
v i = R e L U ( W a a i )
v g = R e L U ( W b a g )
最终全局图像特征将与word embedding拼接在一起成为LSTM的输入: x t = [ w t ; v g ] (这里有一个细节,是不是因为这里把全局图像特征拼接进来了,才导致模型spatial attention与其他模型相比的提升呢?作者并没有进行这样的对比。https://github.com/jiasenlu/AdaptiveAttention/issues/2
局部图像特征则用在了attention部分。


Experiment

这里写图片描述
Table 1在test splits上对比了在Flickr30k和MSCOCO数据集上模型与其他模型的表现,可以看到,模型的spatial attention部分就已经比其他模型表现好了,而加入了adaptive attention部分以后表现更加出色。

这里写图片描述
Table 2在COCO server上对比了模型与其他模型的表现可以看到,adaptive attention模型(emsemble后)的表现是当时SOTA的结果。

这里写图片描述
Fig 4是spatial attention的权重 α 的可视化结果,前两列是成功的样本,最后一列是失败的样本。模型进行attention的区域基本都是合理的,只是可能对一些物体的材质判断失误。

这里写图片描述
Fig 5主要是sentinel gate 1 β 的可视化,对于视觉词,模型给出的概率较大,即更倾向于关注图像特征 c t ,对于非视觉词的概率则比较小。同时,同一个词在不同的上下文中的概率也是不一样的。如”a”,在一开始的概率较高,因为开始时没有任何的语义信息可以依赖、以及需要确定单复数。

这里写图片描述
Fig 6对COCO和Flickr30k中词典中的词被认为是视觉词的平均概率进行了排序,来看看模型能否分辨出视觉词与非视觉词,两个数据集间的相关性为0.483。其中,
1. 对于一些实际上是视觉词,但是与其他词有很大关联性的词,模型也会把它视为非视觉词,如”phone”一般都跟在”cell”后面。
2. 不同数据集上不同的词的概率不一样,如”UNK”,可能是由于训练数据分布的不同。
3. 对于一些有相近意义的同源词,如”crossing”, “cross”, “crossed”,他们的概率却相差很大。(为什么?)
模型没有依赖外部的语料信息,完全是自动地发现这些趋势。

这里写图片描述
Fig 11显示了使用弱监督方法生成的bounding box与真实bounding box的对比。本文是第一个使用这种方法来评估
image caption的attention效果的。具体生成方法是,对于某个单词而言,先用NLTK将其映射到大类上,如”boy”, “girl”映射到people。然后图像中attention weight小于阈值(每个单词的阈值都不一样)的部分就会被分割出来,取分割后的最大连通分量来生成bounding box。并计算生成的和真实bounding box的IOU(intersection over union),对于spatial attention和adaptive attention模型,其平均定位准确率分别为0.362和0.373。说明了,知道何时关注图像,也能让模型更清楚到底要去关注图像的哪个部分。

这里写图片描述
Fig 7显示了top 45个COCO数据集中出现最频繁的词的定位准确性。对于一些体积较小的物体,其准确率是比较低的,这是因为attention map是从7x7的feature map中直接放大的,而7x7的feature map并不能很好地包含这些小物体的信息。

这里写图片描述
Fig 8显示了单词”of”在spatial attention和adaptive attention模型中的attention map。如果没有visual sentinel,非视觉词如”of”的attention就会高度集中在图像的边缘部分,可能会在反向传播时形成噪声影响训练。


总结

本文提出了adaptive attention机制,其模型公式都非常简单,adaptive attention部分增加的几个变量也非常简洁,但却对模型的表现有了很大的提升。文章进行的详尽的实验又进一步验证了adaptive attention的有效性,可谓非常巧妙。

PS:如果读者想要复现这篇论文的结果,这个链接会对你有帮助。https://github.com/jiasenlu/AdaptiveAttention/issues/4


猜你喜欢

转载自blog.csdn.net/sinat_26253653/article/details/79416234