注意力机制分析综述
注意力机制(AttentionMechanism)[601早期被应用于机器翻译任务,通过基于RNN的编码-解码器框架中使用注意力机制为特征的不同方面分配权重从而达到忽略输入的中噪声或者冗余,而后被广泛使用在自然语言处理、图像识别及语音识别等各种不同类型的深度学习任务中。注意力机制根据覆盖范围或窗口选择可以分为全局注意力和局部注意力。其中全局注意力机制的基本思想是将所有的隐藏状态融合成新的上下文向量,如下图2.3所示:
图2.3全局注意力机制结构示意图
在全局注意力机制下,编码器的隐藏状态h会与序列中所有的源状态h进行比较,通过这种方式对h与h相关程度进行打分,接着对每一个隐藏状态h的score(h,h)打分进行一个SoftMax函数归一化最终得到每一个隐藏状态的权重at,a是一个变长对齐向量,表示当前时刻的万对应于所有原始万的注意力
分配权重。
(2-12)
其中对于打分函数的计算方法,LuongAttention[61]中提出了三种,实验表明第一
种点积的的方式对于全局注意力机制比较有效。
(2-13)
得到每个步骤的注意力权重后,通过对这些步骤进行一个加权和的操作得到最终上下文向量的表示:
(2-14)
全局注意力机制充分结合了编码器所有的隐藏状态,将解码器的隐藏状态与编码器的隐藏状态一—比较得出评分,最后得到注意力权重。由于全局注意力机制是一种软注意力机制,即每一时刻解码器都要对所有的编码器状态进行比较,因此这种方式对于长序列来说计算成本很大,效率低下,同时远距离的单词效果并不理想。为了克服这一困难,提出了局部注意力机制[61,解码器只需注意一小部分编码器状态即可,如下图2.4所示:
图2.4局部注意力机制结构示意图
局部注意力机制对软注意力机制以及硬注意力机制进行了对比与权衡,借鉴了硬注意力机制的方式,每一次取部分状态进行计算,同时对模型进行改进,使其更易于训练。就局部注意力机制而言,首先要做的就是寻找局部的中心位置。
当源序列和目标序列不是单调对齐时,寻找局部中心位置算法称为PredictiveAlignment,通过构建参数,让网络自学习并优化参数,最终找到正确的中心位置。如下(2-15)式所示:
Pt=S·sigmoid(vitanh(W?ht))(2-15)
vt和Wp均为模型的可学习参数,ht为解码器的隐含状态,由于Sigmoid函数的的输出值的区间为(0,1),所以中心位置pt的大小为(0,S),S为源序列的长度。
得到中心位置以后,我们再确定其周围位置点的权重因子。这里我们假设局
部注意力机制满足高斯分布,即中心点的注意力权重计算方式同全局注意力机制里面一样,但是周围点的注意力权重则以此为高斯分布展开。添加了以pt为均值、σ=为标准差的高斯分布系数U(p,o)。与全局注意力机制类似,得到at以后,再将at与编码器的所有隐含状态进行一个加权和的操作即可得到最终的上下文信息ct,at(s)的计算方式如下所示:
(2-16)