RoPE 旋转位置编码是什么?Transformer 为什么需要位置信息?
下面是一段教学用的模拟面试。
🧑💻 面试官:Transformer 已经拿到了每个词的向量,为什么还需要位置编码?
🙋♂️ 我:词义相同,顺序不同,句子含义也可能不同。模型还需要知道词的位置。
🧑💻 面试官:RoPE 是把位置向量加到词向量上吗?
🙋♂️ 我:它主要对注意力中的 Q、K 按位置做旋转,让注意力分数带上位置关系。
🧑💻 面试官:用的是各自的绝对位置,为什么又说它能表达相对位置?用了 RoPE,就能无限延长上下文吗?
先抓住旋转发生在哪里:Q 和 K 分别按位置旋转,二者做内积时,位置差进入了计算。
面试速答(60 秒版)
RoPE 是旋转位置编码。它让注意力计算能够区分不同位置的内容,并利用词与词之间的相对位置关系。
具体做法是,把 Q、K 的一部分或全部维度按实现规则分成二维对,每一对根据当前位置和自己的频率进行旋转,再计算注意力分数。它不是简单把一个位置向量加到输入上。
虽然 Q、K 各自使用绝对位置来旋转,但两个旋转向量做内积时,会出现两者的位置差,因此能够把相对位置带进注意力。
同时,位置可以继续计算,不代表模型就能可靠理解任意长度的输入。扩展上下文还需要合适的位置缩放、训练和评测;缓存里的位置编号也要与当前请求对应,不能随意从零开始。

知识点详解:两次旋转,怎样带出位置差?
有内容向量,为什么还不够?
咱们先看“我帮助你”和“你帮助我”。词基本相同,顺序变了,谁帮助谁就变了。
普通的注意力打分主要比较内容向量。如果不给它额外的位置线索,仅靠这些比较并不能完整表达顺序。因果掩码虽然限制了能看哪些位置,但不等于已经提供了细致的位置距离信息。
位置编码的任务,就是让模型在比较内容时,还能使用“出现在这里”“距离那个词有多远”等线索。
Q、K、V 里面,谁被旋转?
Q 可以理解为当前位置拿来寻找相关内容的查询,K 是其他位置用于匹配的键,V 则承载被汇总的信息。
RoPE 的典型用法,是在注意力打分前旋转 Q、K。正文讨论的是这条路径,不把它说成 Q、K、V 都必须旋转。
假设一段 Q 有多对维度。每一对可以看成二维平面上的一个小向量,然后根据位置转过一个角度。不同维度对使用不同频率,不是把整个高维向量画成一根指针、统一转同一个角。
二维旋转保留向量长度,但会改变方向。这里保存长度说的是旋转操作本身,不代表整个注意力层输出不变。
绝对位置,为什么得到相对关系?
先只看一个二维对。假设它的旋转频率是 θ,位置 m 的 Q 转过 mθ,位置 n 的 K 转过 nθ。
计算二者内积时,两次旋转组合成与 n−m 有关的旋转。于是分数同时受内容和位置差影响。
旋转后的 Q = R(mθ) × Q
旋转后的 K = R(nθ) × K
二者内积 = Qᵀ × R((n−m)θ) × K
为了看清关系,可以暂时假设两个内容向量固定。把它们的位置一起向后移动,位置差没变,这一对的旋转内积关系也保持不变。
真实模型里的 Q、K 还受到内容和其他层影响,因此不能进一步推成“只要距离相同,注意力就完全相同”。几何关系的来源见 RoFormer 原始论文。

多种频率有什么用?
如果所有维度都按同一个速度旋转,能表达的位置模式会比较单一。不同频率让多个二维对提供不同尺度的位置变化,模型再通过注意力综合使用。
可以把它理解为同一个位置被几种节奏标记,但不要把这个比喻当成模型里真的有多只时钟。实现中保存的是正弦、余弦等数值,以及与位置对应的计算。
还有一个容易误答的地方:不能说距离越远,任何一次注意力分数都一定越低。具体分数还取决于内容和多个维度的组合。
扩展长度和复用缓存,需要检查什么?
如果训练时主要见到较短序列,直接把位置编号延伸到很远,可能遇到训练分布之外的位置模式。能够算出旋转角度,不等于长文回答仍然准确。
扩展方案需要和模型的配置、训练方式一起验证。评测也不能只看模型能不能接受输入,还要检查跨段证据、不同位置的信息提取,以及延迟和显存。
复用 KV Cache 时,则要保持位置坐标一致。历史 K 已经携带相应位置信息,新 Q 必须使用兼容的位置编号。改变前缀或重排历史之后,不能未经处理就复用旧缓存。
面试官继续追问
RoPE 能降低注意力的计算复杂度吗?
位置编码本身不把普通全注意力变成线性复杂度。它改变位置表示,注意力算法和执行内核是另外的问题。
加了 RoPE,因果掩码可以去掉吗?
不可以这样推断。位置编码提供位置线索,因果掩码限制读取未来内容,两者职责不同。
面试里需要推完整公式吗?
先讲清 Q、K、二维旋转和位置差。被追问数学时,再展开旋转矩阵的组合;别只背名字,也别一开始就让公式挡住理解。
面试速记卡
- RoPE 的典型位置是注意力打分前的 Q、K。
- 按二维对旋转,不同对可以使用不同频率。
- 各自按绝对位置旋转,内积带出相对位置差。
- 位置差相同,不代表不同内容的注意力相同。
- 能计算更远位置,不等于可靠支持无限上下文。
- KV Cache 复用还要保持位置编号与前缀一致。
公司面试真题
真题根据求职者公开面经整理,题意经过概括,非逐字原话或公司官方题库;本文为 Sunday 的独立解析。
字节跳动 · 风控算法 · 原帖未明确批次
RoPE 的计算公式和位置编码原理是什么?(题意整理)
字节风控算法面经 ↗
原帖发布于 2025-09-21