Attention模型综述

1.引言

Attention模型在14年的机器翻译中就被提出。
优势有:
1、提高MT,QA等的能力;
2、提高神经网络的可解释性;
3、克服RNN因过长而导致的丢失信息,记忆不够精准。

2. Attention

Attention模型综述

其中x1x2x3x_1、x_2、x_3是输入,y1y2y_1、y_2是输出,h1h2h3h_1、h_2、h_3是encoder后的隐藏状态(本文把它叫做candidate state),s1s_1s2s_2是decoder的隐藏状态(本文把它叫做query state),αijα_ijsis_ihjh_j的相关程度,cchh的加权和(权重是s和h的相关程度),把它当作attention作用于decoder。以上这就是最基本、最简单的attention机制的计算过程。

Attention与传统的编码解码不一样之处:

Attention模型综述

3.Attention分类

3.1普通Attention

Attention步骤:
ei=a(u,vi) (compute attention scores) αi=eiiei (normalize) c=iαivi (encode) \begin{aligned} e_{i}=& a\left(\boldsymbol{u}, \boldsymbol{v}_{i}\right) \quad \text { (compute attention scores) } \\ \alpha_{i}=& \frac{e_{i}}{\sum_{i} e_{i}} & \text { (normalize) } \\ c= & \sum_{i} \alpha_{i} \boldsymbol{v}_{i} & \text { (encode) } \end{aligned}

第一步:任务相关的向量 u 和段落 v 进行匹配, 即 a(u, v);
通常,可以常用
乘法:
uTv( dot )uTWv (general) \begin{array}{cc}{\boldsymbol{u}^{\boldsymbol{T}} \boldsymbol{v}} & {(\text { dot })} \\ {\boldsymbol{u}^{\boldsymbol{T}} \boldsymbol{W} \boldsymbol{v}} & {\text { (general) }}\end{array}

加法:
w2Ttanh(W1[u;v])\boldsymbol{w}_{2}^{\boldsymbol{T}} \tanh \left(W_{1}[\boldsymbol{u} ; \boldsymbol{v}]\right)

MLP:
σ(w2Ttanh(W1[u;v]+b1)+b2)\sigma\left(\boldsymbol{w}_{2}^{\boldsymbol{T}} \tanh \left(W_{1}[\boldsymbol{u} ; \boldsymbol{v}]+\boldsymbol{b}_{1}\right)+b_{2}\right)

第二步:归一化
获得的分数αi\alpha_i 归一化。

第三步:解码
和 u 匹配高的 viv_i 获得更高的权重。

3.2 变种

3.2.1 Multi-dimensional Attention

ei=tanh(uTWvi)=concat(tanh(uTWkvi))e_{i}=\tanh \left(\boldsymbol{u}^{\boldsymbol{T}} \boldsymbol{W} \boldsymbol{v}_{\boldsymbol{i}}\right)=\operatorname{concat}\left(\tanh \left(\boldsymbol{u}^{\boldsymbol{T}} W_{\boldsymbol{k}} \boldsymbol{v}_{\boldsymbol{i}}\right)\right)

每个scores使用一个向量去表示。

3.2.2 Hierarchical Attention

hi(t)=BiGRU(vi(t))\boldsymbol{h}_{i}^{(t)}=\operatorname{BiGRU}\left(\boldsymbol{v}_{i}^{(t)}\right)
vi=tsoftmax(uwThi(t))hi(t)\boldsymbol{v}_{i}=\sum_{t} \operatorname{softmax}\left(\boldsymbol{u}_{w}^{T} \boldsymbol{h}_{i}^{(t)}\right) \cdot \boldsymbol{h}_{i}^{(t)}
hi=BiGRU(vi)\boldsymbol{h}_{i}=\operatorname{BiGRU}\left(\boldsymbol{v}_{i}\right)
c=isoftmax(usThi)hi\boldsymbol{c}=\sum_{i} \operatorname{softmax}\left(\boldsymbol{u}_{s}^{T} \boldsymbol{h}_{i}\right) \cdot \boldsymbol{h}_{i}

3.2.3 Self Attention

匹配每个元素 viv_i 和另外一个模式 vv'

ei=a(v,vi)e_{i}=a\left(\boldsymbol{v}^{\prime}, \boldsymbol{v}_{i}\right)
eij=a(vi,vj)e_{i j}=a\left(v_{i}, v_{j}\right)
αij=softmax(eij)\alpha_{i j}=\operatorname{softmax}\left(e_{i j}\right)

Transformer self-attention的做法是:

A=softmax[(VW1)(VW2)Tdout]A=\operatorname{softmax}\left[\frac{\left(V W_{1}\right)\left(V W_{2}\right)^{T}}{\sqrt{d_{o u t}}}\right]
C=AT(VW3)C=A^{T}\left(V W_{3}\right)

位置编码提供位置信息:

PE(pos,2i)=sin(pos/100002i/d)PE(pos,2i+1)=cos(pos/100002i/d)\begin{aligned} P E(\text {pos}, 2 i) &=\sin \left(\text {pos} / 10000^{2 i / d}\right) \\ P E(\text {pos,} 2 i+1) &=\cos \left(\text {pos} / 10000^{2 i / d}\right) \end{aligned}

3.2.4 Memory-based Attention
给定 {(ki,vi)}\left\{\left(\boldsymbol{k}_{\boldsymbol{i}}, \boldsymbol{v}_{\boldsymbol{i}}\right)\right\} 和查询的 q:

  1. ei=a(q,ki)e_{i}=a\left(\boldsymbol{q}, \boldsymbol{k}_{i}\right) (address memory)
  2. αi=exp(ei)iexp(ei)\alpha_{i}=\frac{\exp \left(e_{i}\right)}{\sum_{i} \exp \left(e_{i}\right)} (normalize)
  3. c=iαivic=\sum_{i} \alpha_{i} v_{i} (read contents)

3.2.5 其他分类

Attention模型综述
按Number of positions分类
按输入序列的不同position分类

soft:使用输入序列的隐藏状态的平均权重来生成context的向量,这种attention的好处是可微(可以BP训练),但是计算复杂度较大。

hard:使用输入序列的隐藏状态随机采样(attention权重的伯努利分布)来生成context的向量,这种attention的坏处是不可微(不好优化),但是计算复杂度较小(采用采样后,肯定变小)。所以一般采用变分学习法或策略梯度法来优化。

global:跟soft基本一样。

local:算是soft和hard的一种折中,它分为两步:在输入序列中找到attention的点或位置(可以自己设置,也可以通过算法或模型来学习);然后around这个位置设置一个窗口,并在这个窗口上做soft的attention。在这个窗口中,他的计算开销变小(序列变短)而且是可微的(在这个窗口中肯定连续,因为是around)。


参考:

  1. An Attentive Survey of Attention Models;
  2. 译文 Attention综述
  3. An Introductory Survey on Attention Mechanisms in NLP Problems;