漫谈注意力机制(六):Transformer与位置信息
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/