动机
RNN的结构是通过隐状态对序列信息进行编码的。
第二个 I 的输出和第一个 I 的输出是不同的,这是因为输入到其中的隐状态是不同的。对于第二个 I 来说,隐状态经过了单词"I think therefore",而第一个 I 是刚刚经过初始化的。因此,RNN的隐状态会使得处于不同位置的相同词具有不同的输出表示。恰恰相反的是,具有自注意力机制的Transformer(没有位置编码的)会使得不同位置的相同词具有相同的输出表示。
上图表示的是输入序列为"I think therefore I am",然后传送到Transformer的的结果。
Self-Attention
其中,, ,, , h为注意力头数
Relation-aware Self-Attention
在普通self-attention的基础上,这篇文章引入了两个与相对位置相关的向量:,
如果attention的目标词是的话,那么在计算对的注意力特征的时候,需要额外考虑对的两个与位置相关的向量。
引入这两个向量之后,上述self-attention的计算可以修改为:
Relative Position Representations
Relative Position Representations的目标是给出, 的计算方式。作者假设如果序列中两个元素的距离超过,则这两元素之间的位置信息就没有意义了。同时,, 应该只跟相对位置有关,而与,没有关系。作者直接将, 定义为了可训练的向量,本质上是训练和: