Roformer:Enhanced Transformer with rotary position embedding
Intorduction
最近位置编码在Transformer表现了高效性,它可以在训练中更好的监督不同位置的不同元素之间的依赖关系。作者提出了一种高效的利用位置信息的方法基于旋转位置编码(RoPE),该方法使用旋转矩阵对绝对位置进行编码,同时在自注意公式中加入显式相对位置依赖。
Method
首先给 q 、k引入绝对位置信息,假设q的位置为m,k的位置为n:
由于计算attention的方式是 q与k矩阵相乘,作者的想法是引入了绝对位置的信息的qm和kn 计算attention后(就是相乘后),他们的结果还可以显示的表示二者的相对位置,公式如下:
作者通过引入负数的方式来求解f(x),这里简单介绍一下复数的转换公式:
r 为复数值到原点的距离,theta为旋转角度。
然后带入到上面公式:
然后作者通过一些列的公式证明(证明过程省略),得到了二维情况下f(x)为:
也就是通过这个fx给 q、k引入绝对位置信息,通过attention操作后,还可以显示的表示他们的相对位置信息。
通过复数公式转换,把它写成矩阵形式:
由于矩阵乘法表示一个矩阵映射到另一个矩阵的空间变换,而上述矩阵则是对q进行了旋转操作,所以也叫做旋转位置编码。
写成高维度的形式为:
由于 0 比较多,会很浪费算力,所以把它写成下面的形式:
然后作者在θi的选择上,我们同样沿用了Sinusoidal位置编码的方案,即θi=10000−2i/d,它可以带来一定的远程衰减性。
Experiment
代码实现
私聊获取
Conclusion
从理论上来看,RoPE与Sinusoidal位置编码有些相通之处,但RoPE不依赖于泰勒展开,更具严谨性与可解释性;从预训练模型RoFormer的结果来看,RoPE具有良好的外推性,应用到Transformer中体现出较好的处理长文本的能力。此外,RoPE还是目前唯一一种可用于线性Attention的相对位置编码。
Reference
https://arxiv.org/pdf/2104.09864.pdf