ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

大模型之RoFormer详解:旋转位置编码如何把绝对位置变成相对关系

2026/9/1 16:01:49 拓冰建站 浏览量
大模型之RoFormer详解:旋转位置编码如何把绝对位置变成相对关系 写在前面【从零走向AGI】旨在深入了解通用人工智能AGI的发展路径从最基础的概念起逐步构建完整的知识体系。项目地址https://github.com/AI-mzq/From-Zero-to-AGI.git魔方AI空间猫先生从零走向AGI面试面经AIGC算法岗/开发岗面试面经交流社群涵盖AI Agent、AIGC图像创作、AI视频、LLM大模型、AI多模态、数字人、传统深度学习、具身智能等AIGC面试干货资源欢迎大家加入https://t.zsxq.com/YtJ09RoFormer详解旋转位置编码如何把绝对位置变成相对关系导读Transformer 的 self-attention 本身对 token 顺序并不敏感必须额外注入位置。传统做法把绝对位置向量直接加到词向量上或在 attention 分数中加入相对位置偏置。RoFormer 提出 Rotary Position EmbeddingRoPE不再相加而是按 token 位置对 query 和 key 的每一对维度做旋转。旋转角度与位置成正比因此 query 在位置m mm、key 在位置n nn的内积会自然化为只依赖相对位移m − n m-nm−n的形式。RoPE 同时保留绝对位置信息的可计算表示和相对距离建模能力还能直接用于线性 attention。论文在机器翻译、预训练语言模型、GLUE、Performer 和中文长文本任务上进行验证。猫先生认为RoPE 的关键不是“换一种位置向量”而是把位置信息放进 Q/K 的几何变换里让 attention 的相关性计算自己产生相对位置关系。这种接口非常适合后来的自回归大模型和长上下文扩展。论文标题RoFormer: Enhanced Transformer with Rotary Position Embedding论文地址https://arxiv.org/abs/2104.09864论文 HTML 全文https://arxiv.org/html/2104.09864GitHubhttps://github.com/ZhuiyiTechnology/roformerHuggingFacehttps://huggingface.co/docs/transformers/model_doc/roformer原文脉络论文先回顾绝对位置编码和相对位置编码再形式化“位置如何进入 Q/K/V”的问题第三节提出二维旋转并推广到任意维度随后证明长距离衰减、线性 attention 兼容性和高效实现第四节通过翻译、预训练、下游微调和中文长文本实验验证效果最后讨论尚未解释清楚的收敛与长文优势。1-2. 背景与相关工作位置编码的两条路线RNN 通过递归天然携带顺序CNN 依靠局部窗口和堆叠层感知位置而纯 Transformer attention 对输入做置换仍能得到同样的无序集合表示。因此 Transformer 需要显式的位置编码。绝对位置编码通常把位置向量p i p_ipi​加到 token 表示x i x_ixi​后再投影为 Q/K/V。相对位置方法则在 attention 权重中加入m − n m-nm−n的偏置或额外向量。前者容易实现却未必直接表达两个 token 的相对距离后者能表达相对关系但很多方案与线性 attention 的核分解不兼容。RoFormer 的目标是找到函数使得⟨ f q ( x m , m ) , f k ( x n , n ) ⟩ g ( x m , x n , m − n ) . \langle f_q(x_m,m),f_k(x_n,n)\rangleg(x_m,x_n,m-n).⟨fq​(xm​,m),fk​(xn​,n)⟩g(xm​,xn​,m−n).也就是说位置编码后的 Q/K 内积应显式依赖相对位移而不是把绝对位置作为两个独立的附加向量。3. RoPE用旋转矩阵编码位置3.1 二维直观图 1二维 RoPE 通过角度m θ 1 m\theta_1mθ1​旋转 query/key 向量把 token 位置写入向量方向。来源RoFormer 论文 Figure 1。对二维向量( x 1 , x 2 ) (x_1,x_2)(x1​,x2​)位置m mm对应一个旋转角度m θ m\thetamθR ( m θ ) [ cos ⁡ ( m θ ) − sin ⁡ ( m θ ) sin ⁡ ( m θ ) cos ⁡ ( m θ ) ] . R(m\theta)\begin{bmatrix}\cos(m\theta)-\sin(m\theta)\\\sin(m\theta)\cos(m\theta)\end{bmatrix}.R(mθ)[cos(mθ)sin(mθ)​−sin(mθ)cos(mθ)​].将向量乘以该矩阵后长度保持不变方向随位置旋转。不同维度对使用不同频率θ i \theta_iθi​于是高维表示可以同时编码短距离和长距离变化。3.2 从绝对旋转得到相对内积RoFormer 对 query 和 key 分别旋转q m R Θ , m W q x m , k n R Θ , n W k x n . q_mR_{\Theta,m}W_qx_m,\qquad k_nR_{\Theta,n}W_kx_n.qm​RΘ,m​Wq​xm​,kn​RΘ,n​Wk​xn​.由于旋转矩阵正交且满足R m T R n R n − m R_m^TR_nR_{n-m}RmT​Rn​Rn−m​二者内积可以写成q m T k n x m T W q T R Θ , n − m W k x n . q_m^Tk_nx_m^TW_q^TR_{\Theta,n-m}W_kx_n.qmT​kn​xmT​WqT​RΘ,n−m​Wk​xn​.绝对位置m , n m,nm,n被合并为相对位移n − m n-mn−m。这就是 RoPE 同时编码绝对位置、又在 attention 中显式建模相对位置的原因。3.3 任意维度与高效实现对于d dd维向量RoPE 将相邻维度两两配对对第i ii对使用频率θ i 10000 − 2 ( i − 1 ) / d . \theta_i10000^{-2(i-1)/d}.θi​10000−2(i−1)/d.工程实现不需要显式构造稀疏旋转矩阵而是对向量做逐元素计算x r o t x ⊙ cos ⁡ ( m θ ) r o t a t e _ h a l f ( x ) ⊙ sin ⁡ ( m θ ) . x_{rot}x\odot\cos(m\theta)\mathrm{rotate\_half}(x)\odot\sin(m\theta).xrot​x⊙cos(mθ)rotate_half(x)⊙sin(mθ).rotate_half将每个二维对子变为( − x 2 , x 1 ) (-x_2,x_1)(−x2​,x1​)。该实现只包含逐元素乘加容易融合到 attention kernel 中也不会改变向量范数。图 2RoPE 在高维表示中对多个维度对使用不同旋转频率位置索引决定每一对的旋转角度。来源RoPE 原理示意图。猫先生认为RoPE 的“相对位置”并不是额外学习一张距离表而是由旋转矩阵的群结构直接产生。正交性保证数值稳定频率组则提供了从局部到远距离的多尺度位置信号。3.4 长距离衰减与线性 attention论文证明在频率按几何级数分布时位置差增大后旋转内积的平均上界会衰减。这意味着模型对近邻 token 可以保持更强耦合对非常远的位置则有自然的距离偏好。这里的结论是理论上界和平均趋势并非每个具体 attention 分数都严格单调下降。RoPE 只改变 Q/K 的特征变换不依赖 softmax 的特定形式因此可以把相对位置信息带入线性 attention。作者在 Performer 上的实验验证了这一点这是许多“直接给 attention 加 bias”的位置方法难以做到的。4. 实验与结果4.1 机器翻译在 WMT14 英德任务上使用 RoPE 的 Transformer 达到 27.5 BLEU高于基线 Transformer 的 27.3。该结果说明旋转位置编码可以在不改变主干结构的情况下带来稳定收益。4.2 预训练语言模型与 GLUE作者在 BookCorpus 和 Wikipedia 上预训练 BERT 形式的 RoFormer并在 GLUE 上微调。表格结果并非所有任务都提升MRPC、STS-B、QQP 等任务更好但 SST-2、QNLI 和 MNLI 有下降。更准确的结论是RoFormer 在多个任务上有竞争力并非全面取代 BERT 位置编码。4.3 线性 attention 与中文长文本在字符级 Performer 实验中加入 RoPE 后语言模型损失下降更快说明旋转位置编码与线性 attention 兼容。中文 CAIL2019-SCM 长文本实验中RoFormer-1024 达到 69.79%高于 RoFormer-512 的 68.29% 和 WoBERT-512 的 68.10%表明更长输入窗口能带来额外收益。图 3Transformer encoder-decoder 中位置编码的插入位置。RoPE 将传统输入端的位置相加改为在 attention 的 Q/K 上旋转。来源Transformer 架构背景图。5. 局限与可复现性论文开源了 RoFormer 实现并已被 HuggingFace 集成便于在 BERT 或 GPT 类模型中替换位置编码。需要注意论文没有完全解释 RoPE 为什么收敛更快也没有给出长文本优势的完整机制证明部分实验使用的预训练规模和对比设置有限。RoPE 仍依赖 Transformer attention长序列的二次复杂度并未消失它改善的是位置关系表达而不是 KV Cache、显存或计算量本身。上下文扩展到远超训练长度时频率基底、插值和缩放策略仍需要额外设计。总结把位置编码放进几何变换RoPE 的核心路径可以概括为把 embedding 的相邻维度组成二维平面按位置对每个平面旋转利用旋转矩阵的正交性让 Q/K 内积只保留相对位移再用多频率覆盖不同距离尺度。它没有改变 Transformer 的主体却改变了位置进入 attention 的方式因此成为 LLaMA、Qwen 等现代大模型常用的位置编码基础。读者最值得带走的一点是相对位置关系可以通过对 Q/K 做绝对位置旋转自然产生而不必额外维护一套距离参数。参考资料RoFormer: Enhanced Transformer with Rotary Position EmbeddingRoFormer 论文 HTMLRoFormer 官方代码