DiSAN: Directional Self-Attention Network for RNN/CNN-Free Language Understanding

文章主要介绍了两种Multi-dimensional Self-Attention机制和Directional Self-Attention机制。在此基础上设计了Directional Self-Attention Network用于sentence encoding。

背景知识

  • Attention Mechanism

Multi-dimensional Self-Attention

假设输入序列为,传统的attention机制是计算每一个的权重,然后求。而multi-dimensional是计算每一个的权重,令,最后求。
下图更具体地描述了传统attention(a)和multi-dimensional attention(b)的区别,其中需要注意的是为了保证在时序维度上,每一维的特征的权重和都为1,multi-dimensional attention在计算权重的时候,计算softmax的维度是时序维度(红框部分)。

traditional attention VS multi-dimensional attention

token2token

source2token

Directional Self-Attention

Directional Self-Attention(DiSA)

上图是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如下:
f \left( h _ { i } , h _ { j } \right) = c \cdot \tanh \left( \left[ W ^ { ( 1 ) } h _ { i } + W ^ { ( 2 ) } h _ { j } + b ^ { ( 1 ) } \right] / c \right) + M _ { i j } \boldsymbol{1}
其中代表一个全1的矩阵。

positional mask能编码时序的原因
假设且,由于是通过softmax得到的,因此趋近于0,而则不受影响。

对于self attention而言,通常需要排除自身的attention,因此,这篇文章加了一个diagonal-disable mask:

同时,文章使用了两个时序掩码:forward mask和backward mask:

DiSA最后的输出通过以下计算得到,称为融合门(fusion gate):

Directional Self-Attention Network

Directional Self-Attention Network (DiSAN)

文章最后提出了语言编码(Sentence Encoding)模型,如上图。

你可能感兴趣的:(DiSAN: Directional Self-Attention Network for RNN/CNN-Free Language Understanding)