RoPE 丢了绝对位置吗?LLM 的设计是证明出来的吗?
这是一堂岔路课,来自一次真实的学习对话。学完 RoPE,还没进 Q/K/V 之前,提问是:
「使用这种旋转的位置编码,似乎只保留了相对位置,缺少了绝对位置,这样效果是 ok 的吗。是实验证明的吗。还是有理论?是不是 LLM 训练很多方法都实际是实验证明,没有绝对的论证?」
本课一问:RoPE 丢了绝对位置吗?LLM 的设计是证明出来的吗?
这一课先不碰:长上下文(回主线第 5 课)。
先修正问题里的一个说法
RoPE 没有丢掉绝对位置。更准确的说法是:每个 q、k 的旋转角由它自己的绝对位置决定;两个 token 做点积时,位置部分自然表现为相对距离。RoFormer 原文的说法也是这两句合在一起:用旋转矩阵编码绝对位置,同时让自注意力里显式出现相对位置的依赖。
用最简单的数字核对一遍:每往后一个位置多转 10°。k 在位置 2 转 20°,q 在位置 5 转 50°,两者差 30°;整句往后挪 18 个位置,k 在 20 转 200°,q 在 23 转 230°,差还是 30°。下面每个数都是 2×2 旋转矩阵现乘出来的:
下面是两个普通的 2 维向量(教学构造):q(提问的一方,在位置 m)和 k(被查的一方,在位置 n)。 RoPE 不给它们「加」任何东西,只是按各自的位置把它们转一个角度:位置 m 转 m × 10°,位置 n 转 n × 10°。 拖两个滑杆,盯住右边那个「旋转后点积」。
关键是旋转矩阵是正交矩阵:R(φ)ᵀ = R(−φ),而且两次旋转可以相加:R(α)R(β) = R(α+β)。 于是 m 和 n 只能以 n − m 的形式留下来,绝对位置在点积里被约掉了。 这正是苏剑林推出 RoPE 的方式——先立下「内积后只剩相对位置」这个方程,解出来就是旋转矩阵。
试三件事:① 看初始状态,q 转 50°、k 转 20°,差 30°;② 点一次「整体平移 +18」,变成 230° 和 200°,差还是 30°,旋转后点积一个数都没变;③ 对照下面「真实算术」里 qm 的坐标:位置 5 和位置 23 的 q 完全是两个不同的向量——绝对位置确实用上了,只是在点积里被约掉了。
常见误解:「RoPE 只保留相对位置。」
旋转本身用的就是绝对位置 m;旋转后的 qm 带着 m 的信息。「只剩 n − m」说的是点积这一步的结果,不是 RoPE 把绝对位置扔了。
那模型还知道「我是第几个」吗?
打分里只剩相对距离,但模型并不因此对绝对位置一无所知,线索至少有三条:
- 不旋转的维度:Qwen3.8 每个头 256 维里只有 64 维旋转,另外 192 维上的打分只看内容。所以一次打分是「带相对位置的部分」加「不带位置的部分」,哪部分重要由训练决定。
- 因果掩码:第 0 个 token 只能看到自己,第 100 个能看到 101 个 token。「能看到多少个」本身随绝对位置变化(第 1 课演示里勾选掩码就能看到输出随之改变)。有研究证明,只靠因果结构、不加任何位置编码,模型在理论上也能表示出绝对位置和相对位置 证据等级 · 有理论动机 有数学或机制上的理由说明它可能有效,但没有证明它一定更好。最后是否采用,仍然要看实验。 本条理论构造加小规模合成任务实验,不是前沿大模型上的结论。 出处Kazemnejad et al. 2023 ↗需联网 。
- 内容与多层组合:句首的特殊 token、段落格式,以及多层之间信息的逐层传递,都能间接透露位置。
绝对位置也不是永远没用:「只看文章开头」「列表里的第一项」「序列末尾」这类任务就用得上它。但对大多数语言规律来说,「苹果离『吃』很近」比「苹果恰好在全文第 1,013 个 token」有用得多,同一个搭配放在第 10 个位置和第 1,010 个位置,规律一样。这就是相对位置被看重的理由。
第二个问题:LLM 的设计是证明出来的吗?
两者都有,但现代 LLM 远不是从一个完整的数学理论推导出来的。更有用的办法是把每一条结论分到三层里去,这一章的每一课都在页面上这么标:
| 层 | 含义 | RoPE 身上的例子 |
|---|---|---|
| 数学可证明 证据等级 · 数学可证明 在写明的前提下可以严格推导出来,不依赖实验。只要前提成立,换数据、换规模仍然成立。 本条在写明的前提下严格成立,换数据、换规模都不变。 出处待补 | 前提成立,结论就成立 | R(m)ᵀR(n) = R(n − m):点积只依赖相对位置;多频率下打分的上界随距离衰减 |
| 有理论动机 证据等级 · 有理论动机 有数学或机制上的理由说明它可能有效,但没有证明它一定更好。最后是否采用,仍然要看实验。 本条有理由认为它可能有效,但没有证明它一定更好。 出处待补 | 说得通,但证明不了「最好」 | 语言有一定的平移不变性,所以相对位置可能比绝对坐标更值得学;「距离越远关联越弱」符合直觉。但没有定理说 RoPE 是最优的位置编码 |
| 实验验证 证据等级 · 实验验证 由对比实验得出的经验结论,只在出处写明的模型、数据和规模下成立。换了条件可能不再成立,引用时要带上实验设置。 本条只在出处写明的模型、数据、规模下成立。 出处待补 | 比出来的,换条件可能变 | RoFormer 在翻译和中文长文本上的对比;EleutherAI 在 125M、1.4B 模型上的对比;Qwen 在自家模型上试过把 RoPE 去掉,又加了回来(第 5 课) |
同一个方法常常三层都有,缺哪一层都说不完整。最有说服力的例子来自 RoPE 的作者自己:论文 §4.5.5「局限」一节写道,虽然把相对位置形式化成了 2D 子空间里的旋转,他们说不清它为什么比其他位置编码收敛得更快;虽然证明了远程衰减,他们也没找到它在长文本上表现更好的可信解释 证据等级 · 实验验证 由对比实验得出的经验结论,只在出处写明的模型、数据和规模下成立。换了条件可能不再成立,引用时要带上实验设置。 本条作者原文承认的两点局限,这里是意译。 出处RoFormer §4.5.5 Limitations(本地 PDF) ↗ 。数学性质是证明出来的,「它更好」却是比出来的,而且比出来之后,解释还欠着。
锚点模型上随处都是「实验选出来」的数字,没有一个有定理:
- hidden_size = 5,120,为什么不是 5,000 或 6,000?没有「5,120 最优」的证明。
- 24 个 Q 头、每头 256 维,24 × 256 = 6,144,比 hidden_size 还大;为什么这样配?实验。
- FFN 中间维 17,408 = 3.4 × 5,120,为什么是 3.4?实验。
- RoPE 的 base = 10,000,000、只转 25% 的维度:实验;原始 Transformer 的 10000 也没有推导。
常见误解:「既然靠实验,LLM 就是在瞎试。」
不是。更准确的分工是:数学告诉我们一个方法有什么性质,并排除明显不合理的设计;理论和直觉告诉我们什么值得试;实验告诉我们它实际上有没有效;规模化再验证放大到几十亿、几千亿参数、万亿 token 之后规律还成不成立。通常的顺序是:理论直觉 → 提出方法 → 小规模实验 → 有效 → 扩大训练 → 大量评测 → 发现规律 → 再补理论解释,而不是「完整理论 → 数学推导 → 必然得到 Transformer」。
🔍 同一个结论,换个规模就变:一个本章里的真例子
第 3 课的实测里,我们自己的小模型上 sinusoidal 明显比可学习位置差;原始论文的对照里两者几乎一样。差别的大头来自实验条件:原论文先把 embedding 乘了 √dmodel,我们的第一版实现没有乘;补上这一步,差距缩小了大半,但仍然没有消失——原论文是 6 层翻译模型训 10 万步,我们是 3.7M 参数的语言模型训 400 步。实验结论要连同实验条件一起引用,这正是 EvidenceBadge 在「实验验证」这一档写着「只在出处写明的模型、数据、规模下成立」的原因。
带走一个学习习惯
以后学每一个组件,都问这三个问题:
① 它解决什么问题?
② 数学上为什么可能有效?
③ 实验上为什么最后选了它?
这样既不会陷进公式里,也不会把一次实验的结果当成定理。这一章每一课末尾的「证据三问」表,就是这三个问题的答卷。
位置编码的演进,你在这里
- 解决了注意力对所有 token 一视同仁,一次矩阵乘并行算完。卡在交换「小明打了小王」为「小王打了小明」,每个 token 的输出向量逐位相同,差值 = 0(第 1 课在浏览器里实算)。
- 解决了每个位置一个不同的数,简单直接。卡在编号没有上限:在位置 37,内容只剩位置信号的 2.7%(内容 RMS = 1 时;按项目初始化尺度只剩 0.054%)。
- 解决了位置也查表,和词向量一样训练出来。卡在表有多少行就只能处理多少个位置:GPT-2 的位置表 1,024 行 × 768 维 = 786,432 个参数,位置 1,024 没有对应的行。
- 解决了不背位置,用多组 sin/cos 现算,任意位置都算得出来;两个位置编码的点积只依赖距离。卡在「算得出」不等于「会用」:原文表 3 里它和可学习位置几乎一样(dev PPL 4.92 vs 4.92,BLEU 25.8 vs 25.7);而且加在输入上,整句平移后注意力分数会变。
- 解决了直接告诉注意力「相隔多远」,语言规律在文章各处一样。卡在要改注意力的计算,为每个距离单独加一项,距离还被截断在 [rmin, rmax] 之内(RoFormer §2.3 的综述)。
- 解决了按位置旋转 Q、K,转完再点积,绝对位置被约掉,只剩 n − m;不加参数。卡在能算到任意长,却只在训练见过的角度内可靠:Qwen3 原生 32,768,64 个频率对里有 24 对一圈都没转满;Qwen3.8 原生 262,144,32 对里有 10 对。
- 解决了把新位置折算回见过的范围:Qwen3 32,768 → YaRN ×4 = 131,072;Qwen3.8 262,144 → ×4 ≈ 1M。卡在窗口 ≠ 有效长度:Qwen3.8-Flash-Next 技术报告自报,8 针 MRCR 在 128K 为 97.14,到 1M 只剩 20.71(全注意力版本)。
- 解决了Qwen3.8 只转 25% 的维度;Kimi K3、GLM-5.3-Flash 的全局注意力层不用任何位置编码,顺序交给线性注意力层。卡在Qwen 报告:全注意力层去掉 RoPE,预训练看不出差别,后训练后「停不下来」的比例明显升高——所以它保留了 RoPE。两条路线都做到了百万级上下文,没有唯一正解。
一句话
RoPE 用绝对位置去转,在点积里只留下相对距离;LLM 的设计多数是「数学性质 + 理论动机 + 实验选择」三层叠出来的。
回到主线
回主线第 5 课:能算出位置编码,就能读懂长文吗? → 第 5 课
你可能会问
- 「那有的模型干脆不要位置编码,又是怎么回事?」 那是 2026 年真实存在的一条路线(Kimi K3、GLM-5.3-Flash 的全局注意力层),见第 5 课的 NoPE 一节;本课的「因果掩码透露位置」就是它的理论依据之一。
- 「页面上的证据徽章怎么用?」 点开任一个徽章,能看到这一等级的含义、这条结论为什么是这一级,以及出处链接。同一句话里出现两个不同等级的徽章很正常:一个方法的性质可以是证明的,它的效果却是比出来的。