一句话定义:位置编码(Positional Encoding)是把“第几个词”这件事写进模型表示的办法;RoPE(Rotary Position AI 词典:Embedding">Embedding,旋转位置编码)把位置变成旋转角度。
为什么需要它
注意力机制(Attention)只按内容算权重,本身不关心顺序。把词序打乱,它算出的注意力权重几乎不变——等于拿到的是一袋词,不是一句话。可“猫追狗”和“狗追猫”词一样、关系反了。好比会议室里每人胸前贴名字牌,主持人只看牌子决定谁发言,座位顺序对结果没影响。所以要额外发“座位号”,并让座位号参与注意力计算。
位置信息怎么塞进注意力
最直接的是给词嵌入(Embedding)加一个位置向量,可以是固定正弦函数,也可以是可学习参数。加完后词向量混入“我在第 3 位”,再拿去算 Q、K、V。
RoPE 不改词向量,而是在算注意力分数前,把 Q 和 K 按位置旋转角度。位置差多少,旋转角度就差多少,点积就天然带上相对距离的信息。
几种路线的区别
| 路线 | 位置放在哪 | 直观特点 |
|---|---|---|
| 绝对位置编码 | 直接加到词向量上 | 简单直接,超出训练长度容易“没见过” |
| 相对位置编码 | 在注意力分数上加距离偏置 | 更关注相隔几个词,对长文本友好 |
| RoPE | 对 Q、K 做旋转 | 位置变成角度,天然带相对距离,便于长度外推 |
长度外推(Length Extrapolation)指短文本训练、长文本使用。绝对位置编码常在这里吃亏,因为没学过“第 5000 位”长什么样;相对位置和 RoPE 更友好,但仍需配套技术,具体以官方页面和论文为准。
对从业者和普通人的意义
对从业者,改上下文长度、做长文档问答时,位置编码是第一个要看的环节,它决定模型能不能分辨远近、长文信息能不能被稳定取用。对普通人,让模型总结一份长合同,它能否分清开头条款和结尾补充,背后也有位置编码的功劳。
一句话收束:注意力负责“看什么”,位置编码负责“知道谁先谁后”。
