[Image Caption系列(2)] Knowing when to look(Adaptive attention)论文阅读笔记

CSDN的博客标题长度有限制,写不全,这篇论文是2016年的一篇名为Knowing when to look: Adaptive attention via a visual sentinel for image captioning1的文章,这篇文章我认为创新点特别的好,用一个十分简单的方式较大程度上提升了Image Caption的效果。

首先介绍一下这篇论文解决的问题,在我们的语言中是由一些虚词和惯用词汇的,如英语的“the”和“of”以及“behind a red stop”后接“sign”,在Image Caption生成句子时,生成这些词并不需要很多的视觉信息,而更多的来源于我们的语言模型(Language Model)。在这篇论文,作者提出了一种模型让该模型自适应(adaptive)决定什么时候更依靠视觉信息,什么时候更依靠语言模型,即让网络学习到when to look。
总结起来这篇论文的贡献点如下(我的总结,非原文的contribution):

  1. 提出了一种新的Spatial Attention的模型;
  2. 提出了Adaptive Attention,让网络自适应的去决定依靠视觉信息或语言模型。

1. Spatial Attention Model

如图所示,新的Spatial Attention模型与Show, attend and tell一文中的Attention模型的差别如下:

[Image Caption系列(2)] Knowing when to look(Adaptive attention)论文阅读笔记_第1张图片

这里的主要区别在于 c t c_t ct不再参与LSTM的输出结果,且用于生成 c t c_t ct的向量不再是 h t − 1 h_{t-1} ht1而是 h t h_t ht
用公式表达如下:
c t = g ( V , h t ) c_t = g(V, h_t) ct=g(V,ht)其中 g g g为Spatial Attention的过程, V = [ v 1 , . . . , v k ] V=[v_1,...,v_k] V=[v1,...,vk] v i ∈ R d v_i\in\mathbb{R}^d viRd v i = R e L U ( W a a i ) , a i v_i=ReLU(\bm{W}_a\bm{a}^i), a^i vi=ReLU(Waai),ai是Encoder提取的特征向量,所以 V ∈ R d × y V\in \mathbb{R}^{d \times y} VRd×y g g g的具体过程如下: z t = w h T t a n h ( W v V + ( W g h t ) 1 T \bm{z_{t}} = \bm{w_{h}}^T tanh(\bm{W_vV}+(\bm{W_gh_t})\boldsymbol{1}^T zt=whTtanh(WvV+(Wght)1T α t = s o f t m a x ( z t ) \bm{\alpha_t}=softmax(\bm{z_t}) αt=softmax(zt) c t = ∑ i = 1 k α t i v t i \bm{c_t}=\sum_{i=1}^k\bm{\alpha_{ti}v_{ti}} ct=i=1kαtivti其中 1 ∈ R k \bm{1}\in \mathbb{R}^k 1Rk为所有元素均为1的向量, W v , W g ∈ R k × d , w h ∈ R k , α ∈ R k \bm{W_v},\bm{W_g}\in\mathbb{R}^{k\times d}, w_h\in\mathbb{R}^k, \bm{\alpha}\in \mathbb{R}^k Wv,WgRk×d,whRk,αRk均为要学习的参数。

2. Adaptive Attention Model

Adaptive attention的精髓在于语言信息和视觉信息权重 β t \beta_t βt的生成,有了这个 β t \beta_t βt网络可以在每个单词生成时给出合适的权重,让他选择去更依赖语言信息还是视觉信息。
首先介绍一下语言信息向量 s t \bm{s_t} st的生成:
g t = σ ( W x x t + W h h t − 1 ) \bm{g_t} = \sigma(\bm{W_xx_t}+\bm{W_hh_{t-1}}) gt=σ(Wxxt+Whht1) b m s t = g t ⊙ t a n h ( m t ) bm{s_t}=\bm{g_t}\odot tanh(\bm{m_t}) bmst=gttanh(mt)其中 m t \bm{m_t} mt表示LSTM中的记忆单元, ⊙ \odot 表示元素级的乘法, x t \bm{x_t} xt为LSTM的输入向量,在本文中 x t = [ w t ; v g ] , v g = R e L U ( W b a g ) , a g = 1 k ∑ i = 1 k a i \bm{x_t}=[\bm{w}_t;\bm{v}^g], \bm{v}^g=ReLU(\bm{W}_b \bm{a}^g), \bm{a}^g=\frac{1}{k}\sum_{i=1}^{k}\bm{a}_i xt=[wt;vg],vg=ReLU(Wbag),ag=k1i=1kai
为了获取 β t \beta_t βt,作者把Attention模块改了一下,如下图所示:

[Image Caption系列(2)] Knowing when to look(Adaptive attention)论文阅读笔记_第2张图片

作者把 s t s_t st也输入到Attention模块中,以得到新的 α t \alpha_t α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 ) ) ] ) \hat{\bm{\alpha}}_t=softmax([\bm{z}_t;\bm{w_h^T} tanh(\bm{W_ss_t}+(\bm{W_gh_t}))]) α^t=softmax([zt;whTtanh(Wsst+(Wght))])
然后取 α ^ t \hat{\bm{\alpha}}_t α^t的最后一项即为 β t \beta_t βt
最终用于生成单词的向量 c ^ t = β t s t + ( 1 − β t ) c t \bm{\hat{c}}_t=\beta_t\bm{s}_t+(1-\beta_t)\bm{c_t} c^t=βtst+(1βt)ct生成单词的过程(即图中的MLP)如下 p t = s o f t m a x ( W p ( c ^ t + h t ) ) \bm{p}_t=softmax(\bm{W}_p(\bm{\hat{c}}_t+h_t)) pt=softmax(Wp(c^t+ht))


  1. http://openaccess.thecvf.com/content_cvpr_2017/papers/Lu_Knowing_When_to_CVPR_2017_paper.pdf ↩︎

你可能感兴趣的:(Image,Caption)