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

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

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模型的差别如下:

这里的主要区别在于 c t c_t 不再参与LSTM的输出结果,且用于生成 c t c_t 的向量不再是 h t 1 h_{t-1} 而是 h t h_t
用公式表达如下:
c t = g ( V , h t ) c_t = g(V, h_t) 其中 g g 为Spatial Attention的过程, V = [ v 1 , . . . , v k ] V=[v_1,...,v_k] v i R d v_i\in\mathbb{R}^d v i = R e L U ( W a a i ) , a i v_i=ReLU(\bm{W}_a\bm{a}^i), a^i 是Encoder提取的特征向量,所以 V R d × y V\in \mathbb{R}^{d \times y} 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 α t = s o f t m a x ( z t ) \bm{\alpha_t}=softmax(\bm{z_t}) c t = i = 1 k α t i v t i \bm{c_t}=\sum_{i=1}^k\bm{\alpha_{ti}v_{ti}} 其中 1 R k \bm{1}\in \mathbb{R}^k 为所有元素均为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 均为要学习的参数。

2. Adaptive Attention Model

Adaptive attention的精髓在于语言信息和视觉信息权重 β t \beta_t 的生成,有了这个 β t \beta_t 网络可以在每个单词生成时给出合适的权重,让他选择去更依赖语言信息还是视觉信息。
首先介绍一下语言信息向量 s t \bm{s_t} 的生成:
g t = σ ( W x x t + W h h t 1 ) \bm{g_t} = \sigma(\bm{W_xx_t}+\bm{W_hh_{t-1}}) b m s t = g t t a n h ( m t ) bm{s_t}=\bm{g_t}\odot tanh(\bm{m_t}) 其中 m t \bm{m_t} 表示LSTM中的记忆单元, \odot 表示元素级的乘法, x t \bm{x_t} 为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
为了获取 β t \beta_t ,作者把Attention模块改了一下,如下图所示:

作者把 s t s_t 也输入到Attention模块中,以得到新的 α t \alpha_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 \hat{\bm{\alpha}}_t 的最后一项即为 β t \beta_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} 生成单词的过程(即图中的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))


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

猜你喜欢

转载自blog.csdn.net/lhanchao/article/details/82889400