Effective Approaches to Attention-based Neural Machine Translation论文笔记
这篇文章在NMT(Neural machine translation)上尝试了两种简单且有效的注意力机制:一个可以注意所有单词的全局方法(global approach),和一个只看部分单词的局部方法(local approach).
1.全局方法类似(Bahdanau et al.2015),但是结构更简单,
2.局部方法可以看为是hard和soft注意力机制(Xu et al.,2015)的混合:它计算代价比全局方法和soft方法低。 同时不同于hard方法局部注意力机制几乎任何位置都是可微的,也就是更容易应用和训练。
这两种方法的一致之处是,在decoding阶段的每个时间步,两种方法首先都会将LSTM(decoder是多层的话)顶层的隐藏状态(也就是当前decoder隐藏状态)作为输入,目的是导出上下文向量(context vector),捕获了相关的词源端信息,然后通过和结合得到当前时刻的预测词。
具体的,给定当前隐层状态和词源端信息,我们通过一个简单的连接层来结合这两个向量的信息,来产生注意力机制的隐层状态: 可以看见就是简单连接了两个向量.
然后注意力向量,会作为softmax层的输入,来产生预测分布:
两种模型不同之处就是的获取过程是不同的。
Global Attention
全局注意力机制在导出上下文向量时会考虑encoder层的所有隐层状态.如图所示,
最下面一行蓝色的矩形表示encoder层,红色矩形表示decoder层. 模型中,有一个变长的矢量(对齐向量alignment vector),它的size等于编码层时间步数,它通过比较当前decoder层隐层状态和每个词源隐层状态:
这里的score是基于内容的函数,我们考虑三种形式:
除此之外,在我们的早期尝试中,我们使用基于局部的函数:
相当于一组权重,上下文向量可以看做是使用对所有词源隐层状态做加权平均得到的.
Local Attention
全局注意力缺点是对每一个目标输出都尝试关注所有单词,其计算开销大且对于更长的序列是不实际的,因此本文又提出了局部注意力机制,这部分工作是受Xu et al等提出的hard和soft注意力机制的启发。在他们的工作中soft注意力机制对应全局注意力方法,只是权重被"softly"的放置于图像的所有patch上. 而hard注意力机制,会在每个时间步选择某一个patch去关注.
虽然不需要关注所有输入源,但是其是不可微的,且其需要更加复杂的技巧比如减少方差,或者需要强化学习进行训练.
我们的局部注意力机制集中于选择一个小的上下文窗口,并且是可微的,且这种方法可以避免soft attention中的大量计算代价,与此同时比hard attention更容易训练.
具体的,在每个decode时间步,模型首先生成一个对齐位置(aligned position) .那么上下文向量是对窗口(window)中的词源隐层状态的加权平均.其中是凭经验(empirically)选择的,与全局注意力机制中不同,此时局部对齐向量是固定维度的,即.
我们对局部注意力机制考虑两种变体:
A.单调对齐(Monotonic alignment )(Local-m)-我们简单设置,也就是假设词源和目标序列大致单调排列。此时对齐向量的计算为(1)式,也就是Local-m和全局模型是一样的,只是向量是固定长度的,这是因为是固定的,窗口也固定了,那么(1)式只在固定长度窗口上计算。
B.预测对齐(Predictive alignment)(Local-p)-这里我们不在使用简单对齐,而是预测一个对齐位置:
这里和是模型参数,是需要学习的。是源句长度,上式的结果是.为了支持附近的对齐点,我们设置了一个以为中心的高斯过程,具体的,的定义如下:
其中函数也是见(1)式.且根据经验设置.注意是一个实数;是以为中心的窗口中的整数.Local-p与Local-m相似,只是动态的计算,并且使用截断的高斯分布来修改原始对齐权重(也就是上式中加入了后半部分的高斯过程改变原始对齐权重),使用导出,我们可以计算和的反向传播梯度.这个模型处处可微.