1.直观理解
- 原生的正弦波绝对位置编码(Absolute PE)其实是个“路痴”,它算点积时只能感知距离,根本分不清前后,完全是靠后来不对称的权重矩阵强行“学”出来的方向感。
- RoPE 则是直接在数学根基上解决这个问题。它的核心理念极其优雅:用绝对位置的计算方式,实现了相对位置的表达。
- RoPE 的直观理解: 想象词向量是钟表上的一根指针。RoPE 不贴标签,而是根据词的座位号,把指针旋转一个特定的角度。
- 第 1 个位置,指针顺时针转 10 度。
- 第 2 个位置,指针顺时针转 20 度。
- 第 $m$ 个位置,指针顺时针转 $m \times 10$ 度。
why ?
在计算 Attention 打分(点积)时,点积的几何意义是看两个向量的夹角。
假设词 A 在位置 2(转了 20 度),词 B 在位置 5(转了 50 度)。它们在表盘上的相对夹角是多少?是 $50 - 20 = 30$ 度!
你会惊奇地发现,不管它们坐在哪里,只要它们相差 3 个位置,它们的相对旋转角度永远是 30 度。相对位置信息,就这样自然而然地被编码进了点积的结果里。
2.数学推导
RoPE 的推导目标非常明确:我们需要找到一个函数 $f(\cdot)$,当我们用这个函数对 Query 向量 $q$(位置 $m$)和 Key 向量 $k$(位置 $n$)进行位置编码后,它们的内积仅仅是它们自身特征和相对位置 $m-n$ 的函数。
用公式表达就是:
为了求解这个方程,RoPE 的作者(苏剑林等)巧妙地借助了二维复平面。
步骤一:复数表示法
假设 $q$ 和 $k$ 是二维平面上的向量,我们可以用复数(欧拉公式)来表示它们:
步骤二:引入旋转
我们定义函数 $f$,它的作用就是给原向量乘上一个旋转因子 $e^{im\theta}$(其中 $\theta$ 是预设的常数频率):
步骤三:点积
在复平面上,两个向量的内积(实数域的点积)等于其中一个复数乘以另一个复数的共轭,再取实部($\text{Re}$):
位置 $m$ 和 $n$ 彻底绑定在了一起,变成了唯一的变量 $(m - n)$。这就意味着,无论绝对位置怎么变,只要相对距离一样,注意力得分的底色就是一样的。而且,因为有了原始向量的初始角度 $\theta_q - \theta_k$ 的加持,此时的 $\cos$ 展开后是不具备对称性的,完美解决了原生位置编码分不清前后的问题!
3.高维空间
刚才的推导是在二维平面里。但在真实的 Transformer 中,$d_{model}$ 是高维的(比如 512 维)。RoPE 的解决思路非常暴力且优雅:把高维空间两两分组,变成一堆二维平面的集合。对于 512 维的向量,我们把它切分成 256 个二维向量:
- 第 0 维和第 1 维组成一个复平面,用频率 $\theta_0$ 旋转。
- 第 2 维和第 3 维组成一个复平面,用频率 $\theta_1$ 旋转。
- …
如果写成矩阵的形式,它就是一个分块对角矩阵(Block Diagonal Matrix):
4.总结
- 没有额外的参数: RoPE 不需要模型去学习任何新的权重参数,纯数学推演,即插即用。
- 绝对与相对的完美融合: 它是在把词向量送入 Attention 前对其本身(绝对位置)进行操作的,但算出来却带着(相对位置)的属性,省去了在 Attention 矩阵 $N \times N$ 上做复杂运算的麻烦。
- 极强的外推性(Extrapolation): 因为它本质上是不同频率的波。哪怕遇到了训练时没见过的超长文本,这种旋转的数学规律依然是成立的。