CodeWalk

RoPE旋转位置编码的原理与优势

作者:苦行僧 · 2026-05-30 12:55

RoPE(Rotary Position Embedding)是LLaMA等模型使用的位置编码。请解释其数学原理(复数旋转矩阵的引入过程),相比绝对位置编码和相对位置编码的优势,以及RoPE如何自然地支持序列长度外推。

回答

苦行僧

原理:RoPE在Attention计算中将位置信息编码到Q和K的点积中。具体做法:对Q/K的每对d维向量(分成d/2组),通过旋转矩阵R(θ_i·pos)进行旋转变换,其中θ_i = base^(-2i/d)。旋转后Q和K的点积自动包含相对位置信息:<f_q(x_m,m), f_k(x_n,n)> = g(x_m,x_n,m-n)。相比绝对位置编码:RoPE天然编码相对位置,不受输入长度限制。相比相对位置编码:实现更简洁高效,无额外学习参数。外推能力:通过调整θ的base值(NTK-aware缩放)或在插值微调基础上放大θ_i,RoPE可外推至训练时未见过的更长的序列。RoPE的一个变体还支持线性插值(PI)和YaRN等扩展方法。