Knowing When to Look: Adaptive Attention viaA Visual Sentinel for Image Captioning
1、提出问题
语言中的一些非视觉词汇(虚词和惯用词汇),如英语的“the”和“of”或者“behind a red stop”后接“sign”,生成这些词并不需要很多的视觉信息,而更多的来源于我们的语言模型。
2、创新点
- 介绍了一种自适应的编码器-解码器框架(Adaptive attention model),该框架自动决定何时查看图像以及何时依赖语言模型生成下一个单词。
- 提出了一种新的空间注意力模型(spatial attention model),然后在此基础上设计了具有“视觉信息”的自适应注意力模型。
3、模型
3.1、Spatial Attention Model
图a是传统的 attention model;
图b是本文提出的 spatial attention model;
区别:ct 不在参与LSTM的输出结果 ; 生成ct的向量不再是ht-1而是ht。
上下文向量ct的计算:
g() 是注意力功能;V=[v1,…,vk] 是图像特征,vi是d * 1维,V 是d * k维;ht是隐藏层,d * 1维。
具体计算过程:
V和ht作为输入,通过一个单层神经网络和一个softmax函数将注意力分布各个区域:
1T是1 * k的向量,所有元素均为1,目的是让 (Wght) 1T 相乘得到k * k大小的矩阵;Wv、Wg维度是k * d,wh维度是k * 1; α \alpha α是注意力权重,维度维k * 1。
最后的到上下文向量ct :
3.2、Adaptive Attention Model
首先提出了一个 visual sentinel:作者认为对于非视觉词的生成应该取决于历史信息而不是视觉信息,所以引入了一个组件对视觉信息加以控制。于是将引进了 visual sentinel,就得到了 adaptive attention model。
和上面的 Spatial Attention Model 相比,多了一个语言信息向量st。
具体计算过程:
在原有的LSTM加上了两个公式,得到语言信息向量st:
xt是LSTM的输入(输入是啥在下一节);mt是memory cell;gt是sentinel gate,决定模型关注图像本身还是关注visual sentinel;
⊙ \odot ⊙代表逐元素相乘; δ \delta δ代表sigmoid激活函数。
然后,得到新的上下文向量c^t:
β \beta β参数 :取值范围是[0,1],控制模型对st和ct的关注程度。
β \beta β为1时,则当前时间步文本的生成只取决于之前已生成的文本信息st; β \beta β为 0 则只取决于视觉信息ct,和 Spatial Attention 机制一样。因此可以决定在t时刻是否看视觉信息,以及看多少。
然后,得到 α \alpha α拓展后的注意力权重 α \alpha α^t:
[ ; ]代表拼接在一起; α \alpha α^t有k + 1个元素, β \beta βt是最后一个元素,即 β \beta βt= α \alpha α^t[k+1].
最终生成词的概率分布:
3.3、Implementation Details
编码器使用CNN获得图像的特征 A={a1,…,ak}。
全局图像特征为:
为了便于建模,经过以下处理:
解码端的输入xt为经过 embedding 之后的向量wt和全局图像特征vg拼起来,即xt=[wt;vg]。