Transformer中引入相对位置编码~

Google的论文Attention Is All You Need中看到一条挺“吓人”的公式,

通过对输入的向量序列$\boldsymbol{X} = [\boldsymbol{x}_{1},\dots,\boldsymbol{x}_{n}]$​​​进行线性变换获得,即,

由于$\boldsymbol{Q},\boldsymbol{K},\boldsymbol{V}$都是来自向量序列$\boldsymbol{X}$,因此称这种注意力机制为Self Attention。

展开来看,其实对于位置$i$,Self Attention模型的输出为,

这里softmax是对$j$​​​​维度进行归一化。其位置信息叠加到$x_i$​​向量内,因此$e_{ij}$可以改写为,

于是$e_{ij}$的位置信息有二元结构$(i,j)$​决定,称为绝对位置编码。绝对位置编码有个致命的问题:对于超过一定长度的本文无法建模。

为解决这个问题,Google在论文Self-Attention with Relative Position Representations对Attention模型做修改,称为Relation-aware Self-Attention,它做如下修改,

以便引入相对位置编码,让位置信息只依赖$|i-j|$​,解决长文位置编码问题。引入这两个向量$a_{i j}^{K}$和$a_{i j}^{V}$(红色数学符号)是为了让Attention模型获得相对位置感知。此时还没有体会到位置的相对性,关键就是解决$a_{i j}^{K}$​和$a_{i j}^{V}$​的取值问题,论文的做法是提供$P_V,P_K$​两个矩阵,用于位置的取值检索,有

这里$P_K[r]$​​指矩阵$P_K$​​的第$r$​​行,由于$r = \operatorname{clip}(i-j, p_{\text{min}}, p_{\text{max}})$​​​,因此只要$P_K$​​​矩阵的大小有限即可表达任意长度$|i-j|$​​的相对位置。同理,对于矩阵$P_V$。

总结

本文比较简短,介绍Google的Transformer如何引入相对位置编码。

转载请包括本文地址:https://allenwind.github.io/blog/9582
更多文章请参考:https://allenwind.github.io/blog/archives/