1.引言
Attention模型在14年的机器翻译中就被提出。
优势有:
1、提高MT,QA等的能力;
2、提高神经网络的可解释性;
3、克服RNN因过长而导致的丢失信息,记忆不够精准。
2. Attention
其中x1、x2、x3是输入,y1、y2是输出,h1、h2、h3是encoder后的隐藏状态(本文把它叫做candidate state),s1和s2是decoder的隐藏状态(本文把它叫做query state),αij是si和hj的相关程度,c是h的加权和(权重是s和h的相关程度),把它当作attention作用于decoder。以上这就是最基本、最简单的attention机制的计算过程。
Attention与传统的编码解码不一样之处:
3.Attention分类
3.1普通Attention
Attention步骤:
ei=αi=c=a(u,vi) (compute attention scores) ∑ieieii∑αivi (normalize) (encode)
第一步:任务相关的向量 u 和段落 v 进行匹配, 即 a(u, v);
通常,可以常用
乘法:
uTvuTWv( dot ) (general)
加法:
w2Ttanh(W1[u;v])
MLP:
σ(w2Ttanh(W1[u;v]+b1)+b2)
第二步:归一化
获得的分数αi 归一化。
第三步:解码
和 u 匹配高的 vi 获得更高的权重。
3.2 变种
3.2.1 Multi-dimensional Attention
ei=tanh(uTWvi)=concat(tanh(uTWkvi))
每个scores使用一个向量去表示。
3.2.2 Hierarchical Attention
hi(t)=BiGRU(vi(t))
vi=∑tsoftmax(uwThi(t))⋅hi(t)
hi=BiGRU(vi)
c=∑isoftmax(usThi)⋅hi
3.2.3 Self Attention
匹配每个元素 vi 和另外一个模式 v′
ei=a(v′,vi)
eij=a(vi,vj)
αij=softmax(eij)
Transformer self-attention的做法是:
A=softmax[dout(VW1)(VW2)T]
C=AT(VW3)
位置编码提供位置信息:
PE(pos,2i)PE(pos,2i+1)=sin(pos/100002i/d)=cos(pos/100002i/d)
3.2.4 Memory-based Attention
给定 {(ki,vi)} 和查询的 q:
-
ei=a(q,ki) (address memory)
-
αi=∑iexp(ei)exp(ei) (normalize)
-
c=∑iαivi (read contents)
3.2.5 其他分类
按Number of positions分类:
按输入序列的不同position分类
soft:使用输入序列的隐藏状态的平均权重来生成context的向量,这种attention的好处是可微(可以BP训练),但是计算复杂度较大。
hard:使用输入序列的隐藏状态随机采样(attention权重的伯努利分布)来生成context的向量,这种attention的坏处是不可微(不好优化),但是计算复杂度较小(采用采样后,肯定变小)。所以一般采用变分学习法或策略梯度法来优化。
global:跟soft基本一样。
local:算是soft和hard的一种折中,它分为两步:在输入序列中找到attention的点或位置(可以自己设置,也可以通过算法或模型来学习);然后around这个位置设置一个窗口,并在这个窗口上做soft的attention。在这个窗口中,他的计算开销变小(序列变短)而且是可微的(在这个窗口中肯定连续,因为是around)。
参考:
-
An Attentive Survey of Attention Models;
-
译文 Attention综述;
-
An Introductory Survey on Attention Mechanisms in NLP Problems;