文章主要介绍了两种Multi-dimensional Self-Attention机制和Directional Self-Attention机制。在此基础上设计了Directional Self-Attention Network用于sentence encoding。
背景知识
Multi-dimensional Self-Attention
假设输入序列为,传统的attention机制是计算每一个的权重,然后求。而multi-dimensional是计算每一个的权重,令,最后求。
下图更具体地描述了传统attention(a)和multi-dimensional attention(b)的区别,其中需要注意的是为了保证在时序维度上,每一维的特征的权重和都为1,multi-dimensional attention在计算权重的时候,计算softmax的维度是时序维度(红框部分)。
token2token
source2token
Directional Self-Attention
上图是Directional Self-Attention(DiSA)的示意图。
DiSA首先通过FC层将输入映射到,即:
然后将送入multi-dimensional token2token self-attention计算得到。在计算的过程中,作者对multi-dimensional token2token self-attention做了一些修改,减少了一些参数,同时引入了方向:
-
将token2token中,score function里面的矩阵改为一个标量,同时把里面的部分除以,在实验中被设置为5。另外,使用。
关于使用的motivation,文章并没有说清楚
在score function中引入位置掩码(position mask),掩码
最后的score function如下:
其中代表一个全1的矩阵。
positional mask能编码时序的原因:
假设且,由于是通过softmax得到的,因此趋近于0,而则不受影响。
对于self attention而言,通常需要排除自身的attention,因此,这篇文章加了一个diagonal-disable mask:
同时,文章使用了两个时序掩码:forward mask和backward mask:
DiSA最后的输出通过以下计算得到,称为融合门(fusion gate):
Directional Self-Attention Network
文章最后提出了语言编码(Sentence Encoding)模型,如上图。