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,即可计算得到:

扫描二维码关注公众号,回复: 1451654 查看本文章


做一个加权平均操作即可得到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向量,这个向量通过如下的公式产生预测输出词汇的概率分布:




猜你喜欢

转载自blog.csdn.net/nbawj/article/details/80551404