【Show, Attend and Tell】--- 阅读笔记

转自对酒当鸽CSDN


这篇论文提出了Attention机制对于Encoder-Decoder进行改进。在Encoder-Decoder结构中,Encoder将输入序列编码为 h n h_n hn。这样做的一个潜在问题是,如果原始序列中包含的许多信息,而 h n h_n hn 的长度又是一定的,那么 h n h_n hn 就存不下我们所需的所有信息。
利用Attention机制,Decoder可以在输入序列中选取需要的特征,提高了Encoder-Decoder模型的性能。

LSTM

首先,让我们先来回顾下LSTM的机制。LSTM的结构图如下图所示:

【Show, Attend and Tell】--- 阅读笔记_第1张图片

  • 红色表示输入
  • 蓝色表示输出
  • 绿色表示记忆单元
  • 虚线表示前一时刻的变量

每个组件的具体表达式如下:

意义 表达式
数据输入 z = g ( [ x t , y t − 1 ] ) z=g([x_t,y_{t-1}]) z=g([xt,yt1])
输入门 i = σ [ x t , y t − 1 , c t − 1 ] i=σ[x_t,y_{t-1},c_{t-1}] i=σ[xt,yt1,ct1]
遗忘门 g = σ [ x t , y t − 1 , c t − 1 ] g=σ[x_t,y_{t-1},c_{t-1}] g=σ[xt,yt1,ct1]
输出门 o = σ [ x t , y t − 1 , c t − 1 ] o=σ[x_t,y_{t-1},c_{t-1}] o=σ[xt,yt1,ct1]

该图中使用了两种非线性激活函数:
σ ( u ) = 1 1 + e − u σ(u)=\frac{1}{1+e^{-u}} σ(u)=1+eu1
g ( u ) = h ( u ) = t a n h ( u ) = e z − e − z e z + e − z g(u)=h(u)=tanh(u)=\frac{e^{z}-e^{-z}}{e^{z}+e^{-z}} g(u)=h(u)=tanh(u)=ez+ezezez

方括号[ ]表示线性变化,具有一般形式:


每个函数具有不同参数W,R,p, b,通过训练获得。

LSTM的一种变体 attention LSTM

LSTM新增了一个和输入同尺度的注意力权重 α t α_t αt,由输入和输出/隐状态计算得到:
α t = s o f t m a x ( k ( x t , y t − 1 ) ) α_t=softmax(k(x_t,y_{t−1})) αt=softmax(k(xt,yt1)),其中k是计算相关性的网络

用这个权重给原始输入加权

x ^ = ϕ ( α t , x t ) \widehat{x}=ϕ(α_t,x_t) x =ϕ(αt,xt)
使用加权的输入代替原来的 x t x_t xt,那么LSTM的结构如下图所示:
【Show, Attend and Tell】--- 阅读笔记_第2张图片

让我们再回到论文的内容

结构

从输入到输出依旧经过decoder及encoder两个部分。
【Show, Attend and Tell】--- 阅读笔记_第3张图片

  • 特征(annotation): a 1 . . . a i . . . a L {a_1...a_i...a_L } a1...ai...aL, 每个 a i a_i ai都是一个D维特征,共有L个,描述图像的不同区域
  • 上下文(context): z 1 . . . z t . . . z C {z_1...z_t...z_C } z1...zt...zC,每个 z i z_i zi也是一个D维特征,共有C个,表示每个单词对应的上下文
  • 输出(caption): y 1 . . . y t . . . y C {y_1...y_t...y_C } y1...yt...yC y t y_t yt组成一句“说明”(caption)。句子长度C不定。每个单词 y t y_t yt是一个K维概率,K是词典的大小。

从输入图像 I 到 a

  • 特征a直接使用现成的VGG网络中conv5_3层的14 * 14 * 512特征。所以,区域数量 L = 14 * 14 = 196,维度 D = 512

从 a 到 z

  • 每个特征向量 a i a_i ai对应的权重 α i α_i αi是根据聚焦模型 f a t t f_{att} fatt计算得到的。
    e t i = f a t t ( a i , h t − 1 ) e_{ti}=f_{att}(a_i,h_{t-1}) eti=fatt(ai,ht1)
    α t i = e x p ( e t i ) ∑ k = 1 L e x p ( e t k ) α_{ti}=\frac{exp(e_{ti})}{\sum_{k=1}^{L}exp(e_{tk})} αti=k=1Lexp(etk)exp(eti)

  • 计算得到权重之后,我们就可以计算 z ^ = ϕ ( { a i } , { α i } ) \widehat{z}=ϕ(\left \{ a_i \right \},\left \{ α_i \right \}) z =ϕ({ai},{αi})

  • ϕ ϕ ϕ 函数有两种形式 hardsoft

  • 权重 α i α_{i} αi记录了对每个特征向量 a i a_i ai的关注

从z到y

  • z作为LSTM的输入,y作为LSTM的输出

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