🏠 总目录📚 本教程 专题 C · RoPE:位置感 ← →
📑 本页目录(点开跳转)

专题 C · RoPE:模型怎样知道位置

⏱ 9 分钟 | 可选专题


🎯 一句话

注意力本身只会比较内容,不知道“猫在老鼠前面”还是后面。RoPE(旋转位置编码)把位置信息变成向量的旋转角度,让模型在比较 token 时自然感知相对距离和方向。

位置 3:转一个角度位置 8:转得更多比较夹角就能感到相隔多远同一类向量,在不同位置转不同角度
这只是二维示意;真实模型在许多二维平面里同时旋转。重点不是画圆,而是“差多少位置,就多多少相对旋转”。

为什么不用“直接加位置编号”

维度位置(第几个 token)→低维(上面)变化快,高维(下面)变化慢每个位置拿到一串独一无二的「条纹指纹」不同频率的正弦/余弦叠在一起,像二进制计数器的各个位⭐ 为什么需要它:注意力本身是【和顺序无关】的 —— 打乱输入,结果完全一样所以位置信息必须显式加进去,否则模型分不清「猫追老鼠」和「老鼠追猫」
这就是上面说的「给每个位置一张位置名片」——不同频率的正弦叠在一起,每个位置拿到一串独一无二的「条纹指纹」。⭐ 为什么需要它:注意力本身和顺序无关 —— 打乱输入结果完全一样。位置信息必须显式加进去,否则模型分不清「猫追老鼠」和「老鼠追猫」。

早期做法是给每个位置一张位置名片,再和 token 向量相加。它能告诉模型“这是第 8 个位置”,但模型还要自己费劲推导“第 8 个和第 3 个相隔 5”。

RoPE 把位置直接混入注意力所用的 Q、K 向量。于是当两个 token 比较相关度时,结果天然会随相对位置变化。对语言这种“相邻、隔很远、顺序倒过来意义不同”的数据很合适。

长上下文为什么仍然难

RoPE 让模型有位置感,并不等于模型自动擅长无限长文本。它在训练时见过的长度有限;超出很多时,需要专门的长上下文训练或缩放策略,效果也要靠真实任务验证。

别混淆两句话:窗口“能装下”多少 token,是容量;模型“能稳定用好”多少内容,是能力。这两件事不等价。

✅ 检查点

点开核对

RoPE 让相对位置变成向量旋转差,因此注意力比较内容时也能感到距离和方向。它解决位置感,不承诺无限记忆。

🔗 想再深一层,去哪一套

去哪 为什么
AI 基础设施 08 · FlashAttention 「长上下文为什么仍然难」的工程那一半:n×n 的注意力矩阵写不回显存,怎么靠分块绕开
AI 基础设施 16 · KV Cache 另一半:上下文越长,缓存越大 —— 那一章讲它到底有多大,以及 GQA / MQA / MLA 怎么砍

🛑 可以停在这里

不用背旋转矩阵或频率公式。你能说清“RoPE 解决相对位置感”即可。

⚡ 走神救援

RoPE 让不同位置的向量转不同角度,所以模型比较两个 token 时能感到相对距离。它给的是位置感,不是无限记忆。

👉 02d-MoE混合专家.md

打卡记录保存在你的浏览器里,首页能看到总进度