【image caption】Adaptive Attention

《Knowing When to Look: Adaptive Attention via A Visual Sentinel for Image Captioning》 CVPR.2017

文章目录

  • Adaptive attention model
    • 1. 改进 spatial attention model
    • 2. 提出 visual sentinel
  • Q & A

本文观点:
在 caption 中非视觉词 (比如 the,of 等) 的生成,并不需要视觉信息,它们的梯度反而会影响到视觉信息的有效性。而且,有些看似需要视觉特征来生成的词,也可以通过人类的语言模型预测出来 (比如 “taking on a cell” 后面生成 “phone”)。

改进方法:
设计了蕴含历史信息的 visual sentinel,来表示已生成文本的历史信息。然后引进一个参数,来控制 attention 中视觉信息和历史信息的比重。相当于从时间的维度来决定什么时候看,看多少。

此外,作者改变了 spatial attention model,提出了带有视觉标记的自适应的 attention 模型(adaptive attention model with a visual sentinel),使得模型在生成每一个词时,可以决定需要关注图像本身还是只需要依靠语言模型。如果判断需要关注图像,再通过 spatial attention 来决定关注图像的哪个区域。
【image caption】Adaptive Attention_第1张图片
本文贡献:

  • 提出了新的 spatial attention model;
  • 提出了 Adaptive attention model;
  • 在生成 word 时r让 model 自动判断“什么时候去看图”(sentinel gate),以及“看图的哪里”(spatial attention)。

Adaptive attention model

1. 改进 spatial attention model

首先,作者提出了改进的 spatial attention 模型。
(在《Show, attend and tell: Neural image caption generation with visual attention》的 attention model 上进行改进)

图 (a) 是传统的 attention model,由 h t − 1 h_{t-1} ht1 决定要看的图片信息。
图 (b) 是作者提出的 spatial attention model,由 h t h_t ht 来决定要看的信息,作者认为这可以降低 hidden state 对于下一个词预测的不确定性。
【image caption】Adaptive Attention_第2张图片
注意两者的区别就在于 c t c_t ct 如何生成
(是否可以做一个实验验证使用 h t h_t ht h t − 1 h_{t-1} ht1 的性能差别?)

context vector c t c_t ct 的计算:
c t = g ( V , h t ) c_t=g(V,h_t) ct=g(V,ht)

  • g 为 attention function
  • V = [ v 1 , . . . , v k ] V=[v_1,...,v_k] V=[v1,...,vk] 为图像中 k 个区域的 feature, v i v_i vi 是 d * 1 维, V V V为 d * k 维
  • h t h_t ht 是 t 时刻 RNN 的 hidden state,为 d * 1 维

图像中 k 个区域的 attention distuibution:
z t = w h T t a n h ( W v V + ( W g h t ) I T ) , α t = s o f t m a x ( z t ) z_t=w^T_htanh(W_vV+(W_gh_t)\mathbb I^T),\alpha_t=softmax(z_t) zt=whTtanh(WvV+(Wght)IT)αt=softmax(zt)

  • I \mathbb I I 是 k * 1 的向量,所有元素均为 1,目的是让 ( W g h t ) I T (W_gh_t)\mathbb I^T (Wght)IT 相乘得到 k * k 大小的矩阵

得到最终的 c t c_t ct c t = ∑ i = 1 k a t i v t i c_t=\sum^{k}_{i=1}a_{ti}v_{ti} ct=i=1kativti

2. 提出 visual sentinel

这里是本文的核心创新,作者认为对于非视觉词,它们的生成应该取决于 历史信息而不是视觉信息,因此在这种情况下应该对视觉信息加以控制。所以在此处引进 visual sentinel。

通过在 spatial attention model 中添加新元件 visual sentinel,就得到了adaptive attention model。
【image caption】Adaptive Attention_第3张图片
和前面改进的 spatial attention model 相比,就是多了一个 s t s_t st 信息,而它的生成结构其实和 h t h_t ht 是一致的,所以它所蕴含的就是 generator 已经生成的文本信息。

具体的扩展方式就是在原有的 LSTM 基础上加了俩公式:
g t = σ ( W x x t + W h h t − 1 ) , s t = g t ⊙ t a n h ( m t ) g_t=\sigma(W_xx_t+W_hh_{t-1}),s_t=g_t⊙tanh(m_t) gt=σ(Wxxt+Whht1)st=gttanh(mt)

  • x t x_t xt 是 LSTM 的输入
  • m t m_t mt 是 memory cell
  • g t g_t gt 是 sentinel gate,决定了模型关注图像本身还是关注 visual sentinel
  • s t s_t st 的公式构造和 LSTM 中的 h t h_t ht 类似

s t s_t st 引入到 attention 后,attention 生成的新 context 向量 c ^ t \hat c_t c^t c ^ = β t s t + ( 1 − β t ) c t \hat c=\beta_ts_t+(1-\beta_t)c_t c^=βtst+(1βt)ct

引入一个新的参数 β t \beta_t βt (sentinel gate,取值范围 [0,1]),控制模型关注 s t s_t st c t c_t ct 的程度。

  • β t \beta_t βt 为 1 时,则当前 time step 文本的生成只取决于之前已生成的文本信息;
  • β t \beta_t βt 为 0 则只取决于视觉信息,与上文的空间 attention 机制一样。由此,便可以决定在t时刻是否看视觉信息,以及看多少。

k 个区域的 attention 分布 α t \alpha_t αt 也扩展成了 α ^ t \hat \alpha_t α^t
具体做法是在 z t z_t zt 后面拼接一个元素:
α ^ = s o f t m a x ( [ z t ; w h T t a n h ( W s s t + ( W g h t ) ) ] ) \hat \alpha=softmax([z_t;w^T_htanh(W_ss_t+(W_gh_t))]) α^=softmax([zt;whTtanh(Wsst+(Wght))])

扩展后的 α ^ t \hat \alpha_t α^t 有 k + 1 个元素,且 β t = α ^ t [ k + 1 ] \beta_t=\hat \alpha_t[k+1] βt=α^t[k+1]
(这里论文中有一个笔误,写的是 β t = α t [ k + 1 ] \beta_t=\alpha_t[k+1] βt=αt[k+1]

最终生成词的概率分布:
p t = s o f t m a x ( W p ( c ^ + h t ) ) p_t=softmax(W_p(\hat c+h_t)) pt=softmax(Wp(c^+ht))

Q & A

问题:本文中的 context vector c t c_t ct 和普通 encoder-decoder 框架中的 context vector c t c_t ct 有什么不同?

涉及到两种上下文向量建模方法:① vanilla-encoder-decoder 方法;② attention-based encoder-decoder 方法

  • 对于没有 attention 机制的模型 (vanilla-encoder-decoder), c t c_t ct 就是图像经过 CNN 后提取出的 feature map,是不变的。也就是说 c t c_t ct 仅取决于 encoder
  • 而对于有 attention 机制的模型 (attention-based encoder-decoder),基于 hidden state,decoder 会关注图像的不同区域, c t c_t ct 是某一个区域经过 CNN 后提取出的 feature map。也就是说 c t c_t ct 取决于 encoder 和 decoder

你可能感兴趣的:(论文笔记,#,Others)