目录
先看两个短语:
我 喜欢 苹果
苹果 喜欢 我
Token 没有变。顺序变了,意思也变了。Attention 必须知道每个 Token 在哪里。
RoPE 的办法很特别。它不把位置向量加到 Token Embedding 上。它转动 Q 和 K,然后再计算点积。
先记住一句话
RoPE 用绝对位置决定旋转角度,用两个角度的差表示相对距离。
1、RoPE 改了哪里
Attention 先从每个 Token 生成 Q、K、V。
Hidden State → Q、K、V
Q · K → Attention 分数
Attention × V → 输出
RoPE 插在“生成 Q、K”和“计算点积”之间:
Q → 按位置旋转 → Q′
K → 按位置旋转 → K′
Q′ · K′ → 带位置信息的分数
标准 RoPE 不直接修改 V。
疑问:旋转后,原来的 Embedding 变了吗?
不会。RoPE 改变的是 Q 和 K,不是原始 Token Embedding。
Token ID
↓
Token Embedding
↓
Hidden State
├─ Wq → Q ── RoPE → Q′
├─ Wk → K ── RoPE → K′
└─ Wv → V ─────────→ V
这里有三层不同的表示:
| 表示 | 它是什么 |
|---|---|
| Token Embedding | Token 刚进入模型时的初始向量 |
| Hidden State | 模型结合上下文后得到的表示 |
| Q、K、V | Hidden State 经过三组线性投影得到的临时工作向量 |
RoPE 位于 Q、K 生成之后。它不会回头修改 Token Embedding,也不会直接覆盖 Hidden State。
Q、K 旋转后,数值确实发生了变化。但旋转不是压缩,也不是删除信息。
\[\lVert R_\theta q\rVert=\lVert q\rVert\]旋转改变方向,不改变向量长度。它也是可逆的:
\[R_\theta^{-1}=R_{-\theta}\]RoPE 真正要改变的是 Q 与 K 的夹角。夹角改变后,点积就会包含位置信息,从而影响 Attention 选择“关注谁”。
Q 和 K 原本表达“我在找什么”和“我能提供什么”。RoPE 让它们在比较时,同时带上“我们相隔多远”。
2、把两维看成一个平面
先只看 Q 的两个维度。把它们写成平面上的点 (x₁, x₂)。
位置为 m 时,RoPE 把这个点旋转 mθ:
旋转只改变方向。它不改变向量长度。
位置 0 不转。位置 1 转 θ。位置 2 转 2θ。因此,每个绝对位置都有自己的角度。
3、关键是角度差
假设 Q 在位置 m,K 在位置 n。旋转后再做点积:
中间的共同旋转会抵消。最后只剩 n-m。
例如,位置 2 和位置 5 相差 3。位置 20 和位置 23 也相差 3。对于同一组 Q、K 内容向量,这两组位置产生相同的相对旋转。
这就是 RoPE 最关键的性质:它用绝对位置完成旋转,却让 Q、K 点积自然包含相对位置。
4、动手改变两个位置
下面是一个二维玩具模型。Q 和 K 使用相同的单位向量,只保留位置带来的影响。真实模型的分数还包含 Token 内容、不同维度和缩放。
位置 2 与位置 5 相差 3。把两者同时向后移动,角度差和位置项保持不变。
5、真实模型不只转一个平面
真实 Q、K 有很多维。RoPE 把维度两两配对,并给每一对不同的频率。
| 维度组 | 角度变化 | 直观作用 |
|---|---|---|
| 高频组 | 变化快 | 区分邻近位置 |
| 中频组 | 变化适中 | 表示中等距离 |
| 低频组 | 变化慢 | 覆盖更长距离 |
可以把这些频率看成多把尺子。短尺子看近处。长尺子看远处。模型同时使用它们。
6、为什么不旋转 V
Q 和 K 决定“关注谁”。它们的点积产生 Attention 分数。
V 保存要汇总的内容。RoPE 的目标是把位置放进相关性分数。因此,标准做法旋转 Q、K,不直接旋转 V。
7、长上下文为什么仍需验证
RoPE 可以为更大的位置编号计算角度。但能计算不等于能理解。
模型可能没有在长序列上训练。高频分量也可能在很远的位置产生陌生的相位模式。因此,扩展上下文常会调整位置或频率,例如线性缩放、动态 NTK 或 YaRN。
判断扩展是否有效,不能只看配置中的最大长度。还要测试长文本检索、困惑度和推理任务。
容易混淆的 4 件事
- RoPE 不旋转 Token ID,也不是直接旋转原始文字。
- RoPE 作用于 Attention 中的 Q、K。
- 相对距离进入点积,不表示模型只知道相对位置。
- 更长的可计算位置不保证更长的有效上下文。
记住这 5 件事
- RoPE 把向量维度两两配对。
- 位置编号决定每一对的旋转角度。
- Q 和 K 都要旋转。
- 点积中的共同旋转会抵消,留下相对位置。
- 多种频率负责不同距离尺度。
8、一分钟视频讲解
视频时长约 71 秒。画面、旁白和字幕按下面的分镜同步生成。
| 时间 | 画面 | 旁白 |
|---|---|---|
| 00–08 秒 | “我喜欢苹果”与“苹果喜欢我”交换位置。 | Token 相同,顺序不同,意思就不同。Attention 需要知道 Token 在哪里。 |
| 08–20 秒 | Q、K 两支箭头出现在坐标轴上。 | RoPE 不把位置向量加到输入。它把 Q 和 K 的维度两两配对,再按位置旋转。 |
| 20–34 秒 | 位置 2 的 Q 转 2θ;位置 5 的 K 转 5θ。 | 位置决定绝对角度。位置越靠后,旋转越多。 |
| 34–48 秒 | 两个角度合并为差值 3θ,公式变成 R(n−m)。 | 计算点积时,共同旋转会抵消。最后留下的是两个位置的差。 |
| 48–60 秒 | 多组快慢不同的圆环同时旋转。 | 不同维度使用不同频率。模型因此能同时观察近距离和远距离。 |
| 60–70 秒 | Q、K 高亮,V 保持不动;出现总结句。 | 记住:RoPE 用绝对位置旋转 Q 和 K,让 Attention 的点积看见相对距离。 |
参考资料
第十二课复习总图
下一课比较 MHA、MQA、GQA 与 MLA:它们共享或压缩了什么?