重点
attention mechanism可以和很多现有模型结合,插入两层之间:attention model接手前一层的输出,以及一个上下文参数(这个上下文是注意力机制的关键),经过注意力模型,从前一层的输出中筛选出和上下文相关的一部分(没必要直接删减,可以采用加权平均的方式筛选)作为注意力模型的输出,这个输出作为下一层的输入,从而让下一层关注于局部信息,下图是一个示意图
image captioning中,输入的子图的CNN特征,即输入图还是要先划分成若干子图,每个子图分别提取CNN特征,然后每个注意力模型要输入所有子图的CNN特征,注意力模型的输出送入RNN解码器
Attention
涉及注意力的神经处理在Neuroscience和Computational Neuroscience领域内得到广泛研究.一个特殊的方向是visual attention: 很多动物利用视觉输入的一些特殊部分来计算视觉响应.这一原则在神经计算领域由巨大作用,我们不必选择全部可用的信息,而只需要选择相关的部分来计算响应,大部分输入信息都是无关的.
Attention for Image Captioning
我们用”图像注释”(image captioning)的例子来解释注意力机制. image captioning的目标是为给定的图片增加注释,描述图片内容.
一个经典的image captioning系统利用预训练的CNN对图像编码,生成隐状态
h
h
,然后利用RNN解码该隐状态,递归的生成图片注释的每个文字.
这种方法的缺陷是:当模型生成下一个字时,这个字只是描述了图的一部分. 但是隐状态是对整个图的编码,因此基于全局信息的
h
h
生成对部分图像内容的描述效果不是很好,attention mechanism正适合处理这种问题.
基于attention mechanism, 图像首先被划分乘个部分,每个部分都用CNN处理,生成对应的隐状态
h1,...,hn
h
1
,
.
.
.
,
h
n
. 当RNN生成一个新的词时,attention mechanism会选择相关的那一部分图像输入解码器.
下图的上面一行,我们可以看到每个文字是通过白色区域生成的.
下面的例子中,下划线标注的文字是通过图中白色区域生成的
我们将继续解释注意力模型的工作原理
What is an attention model?
注意力模型接受
n
n
个输入参数(在前面的例子中相当于
h
h
)和一个上下文, 返回一个向量
z
z
, 逻辑上要是从输入
yi
y
i
中生成的和
c
c
相关的摘要.更加精确的描述,是
yi
y
i
的算术平均值,权重就是每个
yi
y
i
和上下文
c
c
的关联度.
上面的例子中,上下文是生成的句子的开头,是子图(
hi
h
i
)的CNN特征描述, 输出的是过滤后,而且和当前生成词相关的特征图.
attention model的一个有趣的特性是算术平均值的权重可以可视化,因此前面显示的图表中白色区域显示的就是图中权重较大的区域.
下图显示了attention model的细节
下面我们一步步解释网络的细节.
首先我们认识一下输入.
c
c
是上下文, 是数据的一部分
下一步,通过 tanh t a n h 层计算 m1,...,mn m 1 , . . . , m n , 计算 yi y i 和 c c 的aggregation的值. 如图所示,每个只依赖于对应的 yi y i ,而不依赖其他 yj j≠i y j j ≠ i
然后利用softmax计算权重. softmax的响应类似argmax,但是它是可求导的. 假设我们有一个argmax函数,满足
argmax(x1,...,xn)=(0,...,0,1,0,...0)
a
r
g
m
a
x
(
x
1
,
.
.
.
,
x
n
)
=
(
0
,
.
.
.
,
0
,
1
,
0
,
.
.
.0
)
,输入向量中唯一的1对应输入向量中最大值. softmax的定义如下
如果 xi x i 中有一个比其他的值大,那么 softmax(x1,...,xn) s o f t m a x ( x 1 , . . . , x n ) 将和 argmax(x1,...,xn) a r g m a x ( x 1 , . . . , x n ) 很接近.
si s i 是 mi m i 向 wm w m 方向上投影值的softmax结果,因此这里softmax可以被理解为和上下文相关度最大的值.
输出 z z 是的加权算术平均值,其中权重是和上下文的关联度.
An other computation of relevance
上述注意力模型可以修改,首先 tanh t a n h 层可以被其他网络层替换,只要可以混合 c c 和即可.下图是一个点乘的版本
这个版本更加容易理解,这个注意力模型softly-choosing和上下文最相关的变量.实际上两个系统输出的结果差异不大.
Soft Attention and Hard Attention
上面讨论的是Soft attention, 完全可导, 可以方便的插入任意系统, 和系统其他部分一样,进行梯度反向传播.
Hard attention是一个随机过程: 不是输入所有隐状态导解码器,而是按照概率
si
s
i
对隐状态采样.为了进行梯度传播,需要利用Monte Carlo sampling估算梯度.
Soft/Hard注意力机制各有优缺点,但是因为soft注意力机制容易计算梯度信息而得到广泛应用.
Return to the image captioning
现在我们对image captioning系统有了更进一步理解
上述image captioning经典模型中增加了一个新的注意力模型层.当我们预测词i时,LSTM的隐状态是 hi h i . 我们把 hi h i 作为上下文选择相关的子图.注意力模型的输出 zi z i ,相关子图的CNN特征,作为LSTM的输入,然后LSTM预测新的词和下一个隐含状态 hi+1 h i + 1
Learning to Align in Machine Translation
Bahdanau, et al 提出一个结合注意力机制的语言翻译模型. 在解释注意力机制之前,早期的语言翻译模型基于编解码网络.英语的句子作为编码器RNN的输入,生成隐含状态
h
h
, 解码器RNN利用输出正确的法语语句.
直觉上,翻译和image captioning类似.当我们生成一个新的词,我们通常只依赖源语言的一个词. 注意力模型可以让每个新词只依赖输入文本的一部分.
和image captioning模型的唯一区别是
hi
h
i
成为RNN的一个隐层(译注:编码器端的RNN?,感觉就是相当于子图)
不是整个句子生成一个隐含状态,编码器生成
T
T
和隐含状态,每一个对应一个词. 每次解码器端RNN需要生成一个词,注意力模型会决定每个隐含状态对输入的贡献,如下图,一般只会选择一个. 贡献度通过softmax计算:隐含状态的贡献权重是
ai
a
i
,而且
∑aj=1
∑
a
j
=
1
.
在上面的例子中,注意力模型不需要额外的监督参数,完全基于梯度就可以学习相关模型参数,所以可以和任何已有的编解码模型组合.
这个过程可以看作对齐过程,因为网络往往只依赖一个输入词就可以生成一个输出词.大部分注意力权重是0(黑色)而只有一个是1(白色). 下图显示了翻译过程中的注意力权重, 显示了对齐过程和网络学习到的知识.
Attention without Recurrent Neural Networks
至此我们讨论的注意力模型都是基于编解码模型. However, when the order of input does not matter, it is possible to consider independant hidden states hj h j . This is the case for instance in Raffel et Al, where the attention model is fully feed-forward. The same applies to the simple case of Memory Networks