Attention机制论文阅读——global attention和local attention
论文名字:Effective Approaches to Attention-based Neural Machine Translation
这篇文章提出了两种attention机制:全局attention机制和局部attention机制(区别在于关注的是所有encoder状态还是部分encoder状态)
文章中计算context向量的过程:
通过两种attention机制得到上下文向量:
Global Attention:
主要思想是考虑所有的编码器的隐藏层状态。
是一个长度可变的alignment vector,长度等于编码器部分时间序列的长度。它通过对比当前的解码器隐藏层状态
和每一个编码器隐藏层的状态
得到:
是一个解码器状态和一个编码器状态对比得到的。在这里,socre是一个基于内容的函数,可以通过如下三个方法实现:
通过将所有的整合成一个权重矩阵,得到Wa,即可计算得到:
对做一个加权平均操作即可得到contex向量
,然后继续进行后续步骤。
Local Attention:
global attention在计算每一个解码器的状态时需要关注所有的编码器输入,计算量比较大。
local attention机制选择性的关注于上下文所在的一个小窗口,这能减少计算代价。
在这个模型中,对于是时刻t的每一个目标词汇,模型首先产生一个对齐的位置(aligned position),context向量
由编码器中一个集合的隐藏层状态计算得到,编码器中的隐藏层包含在窗口
中,D的大小通过经验选择。因此,global attention和local attention中一个区别就是:前者中对齐向量
的大小是可变的,大小决定于编码器部分输入序列的长度,而后者中context向量
的大小是固定的,
。文章中提出了模型的两个变种:
1、Monotonic alignment(local-m):
设置 ,假设源序列和目标序列大致单调对齐,那么对齐向量
可以定义为:
2、Predictive alignment(local-p):
在这种模型中,模型预测了一个对齐位置,而不是假设源序列和目标序列单调对齐。
和
是模型的参数,通过训练来预测位置。S是源句子的长度,这样计算之后,
。为了支持
附近的对齐点,设置一个围绕
的高斯分布,这样,对齐权重就可以表示为:
这里的对齐函数和global中的对齐函数相同,其中 ,
是一个真实的数字,s在以
为中心的窗口中的整数。
后续步骤:
得到之后计算
的方法,通过一个连接层将上下文向量ct和ht整合成
:
是一个attention向量,这个向量通过如下的公式产生预测输出词汇的概率分布: