Attention→K3 三十天课 · Day 16 / 30 课程首页 面试视角 自测题
Day 16 · 位置编码演进

位置编码演进:从正弦波、RoPE 到 K3 的 NoPE

Day 12 我们讲过,2017 原版用正弦波加法把位置注入词嵌入。但在过去十年里,这个设计经历了彻底的洗礼:先是苏剑林提出的 RoPE(旋转位置编码)凭借「内积只看相对距离」的优雅设计成为开源模型的主流选择(LLaMA/Mistral/Qwen),而在 2026 年的 Kimi K3 中,架构师们做出了一个更大胆的举动——直接砍掉显式位置编码,拥抱 NoPE!

学完你能回答
为什么 2017 正弦加法被 RoPE 淘汰了?
学完你能回答
RoPE 是怎么把位置变成向量旋转角度的?
学完你能回答
K3 的 NoPE 是如何做到「外推不必改编码」的?

1起点:这些你早就会了

位置编码的十年演进,从「贴标签」走向了「相对夹角」与「隐式遗忘」:

你已经会的AI 世界里对应的东西
在衣服上贴门牌号:洗几次衣服标签就磨损模糊了2017 加法正弦编码:加在最底层 Embedding 上,随网络加深被反复稀释
电影院按排号入座:第几排第几座是写死的绝对编号绝对位置编码:每个位置一个固定编号,不管周围坐的是谁
表盘指针旋转:两根指针的夹角只取决于时间差RoPE(旋转位置编码):直接把 Q 和 K 旋转与位置成正比的角度,内积只依赖相对距离
长途旅程里程碑:到了 100 万公里,原版仪表盘指针爆表长上下文外推困境:RoPE 超出训练长度时需要复杂的频率基数缩放(NTK / YaRN——两种给旋转角打补丁的办法,知道名字即可)
随时间自然遗忘:不用看钟表,凭日落与记忆衰减就能感知前后NoPE(无显式编码):依靠因果掩码与注意力衰减门自然表达相对顺序

2RoPE(旋转位置编码):复数旋转的数学之美

2021 年,中国研究者苏剑林在 RoFormer 论文中提出了 RoPE(Rotary Position Embedding)。它的核心哲学是:不要把位置硬加在词向量上,而是在计算注意力内积时,把 Query 和 Key 旋转一个与位置成正比的角度!

RoPE 的复数旋转公式 将 2 维子向量视作复数,位置 m 处的 Q、位置 n 处的 K 各自旋转: q̃_m = q_m·e^(imθ),k̃_n = k_n·e^(inθ)
计算点积内积时,两个旋转角自然相减: ⟨q̃_m, k̃_n⟩ = Re(q_m·k_n*·e^(i(m−n)θ))
奇迹发生了:经过旋转后的点积,其数值严格只取决于两个 token 的相对距离 m − n!绝对位置 m 和 n 在内积中被完全消掉了!
核心类比
RoPE 就像钟表表盘:每个位置是一根指针转过的角度。两根指针的夹角只取决于「时间差」,跟现在是几点无关——位置 m 的 Q 和位置 n 的 K 各自旋转之后,内积里留下的只有相对距离 m − n。
严格来说:单根指针转满一圈会重合,分不清「差 1 格」和「差一整圈」;RoPE 实际用的是一组频率各不相同的多维旋转(不同维度转得有快有慢),靠快慢搭配来区分很远的距离,不会像单根指针那样周期混淆。
RoPE 旋转位置编码原理:内积只取决于相对夹角 (m-n)θ 位置 m 处的 Q 旋转 mθ,位置 n 处的 K 旋转 nθ,两者内积仅与夹角差 (m-n)θ 相关 RoPE(旋转位置编码)在二维平面上的几何直觉 Qₘ (转 mθ) Kₙ (转 nθ) 夹角 = (m - n)θ 三大压倒性优势: 1. 天然实现纯相对距离感知; 2. 作用于每一层的 Q/K,不被深层稀释; 3. 远程优雅衰减(Long-term decay)。
图 16.1:RoPE 的复数旋转几何。通过旋转矩阵将绝对位置映射为相位角,内积时自然相减留下相对间距。

3超长上下文的挑战与 K3 的 NoPE 选择

RoPE 虽好,但在上下文扩展到 128K、100 万 token 时,依然面临一个棘手的难题:位置外推(Extrapolation)。当测试长度超出训练范围时,高频与低频旋转角发生分布偏移,需要通过 NTK-Aware 插值、YaRN 等手段苦苦修正频率基数(这些「补丁」技术知道名字即可,正文不展开)。

Kimi K3 的终极大招:NoPE(No Positional Encoding) 在《Kimi K3 技术报告》§2.1.2 和 §3.4 中,K3 团队做出了一个大胆的决定:完全移除显式位置编码(NoPE)!

为什么可以不要位置编码?
1. 因果掩码天生破除对称性:在 Decoder-only 架构中,第 1 个 token 只能看自己,第 100 个 token 能看前 100 个 token——因果三角掩码本身就已经天然注入了绝对的不对称顺序!
2. KDA 遗忘门的天然衰减:K3 的线性注意力分支(KDA,Day 19 讲)自带逐通道衰减门 α_t,随距离天然指数衰减,隐式提供了强大的局部与相对位置偏置。

最大好处:模型外推到 100 万 token 时,根本不需要对位置编码做任何复杂的缩放修改,从根源上消除了长文本位置外推崩溃的隐患!
进阶小注 · K3 中 NoPE 的精准分工: K3 并没有在全模型一刀切地取消位置感知。报告 §2.1.2 的分工是:对所有 MLA 层(门控多头潜注意力,Day 18 讲)应用 NoPE——查询和键都不加任何显式位置编码;而间隔其中的 KDA 层(线性注意力,Day 19 讲)自带逐通道衰减,天然提供位置敏感、近因感知的序列混合。位置信息由 KDA 侧隐式补齐,MLA 侧专心做全局内容交互,各取所长。

4面试视角

面试视角 · 高频考点
面试官可能会问:「从 2017 正弦位置编码、RoPE 到 NoPE,位置编码经历了怎样的技术演进?为什么 Kimi K3 可以采用 NoPE?」
八股答「2017 是绝对位置相加,后来 RoPE 用旋转矩阵把绝对位置变成相对位置内积,效果最好。K3 用的 NoPE 是不用显式位置编码,依靠因果掩码和衰减自发学习位置,适合超长上下文。」——脉络清晰,若能点出外推优势就更深刻。
本课答「核心是三个阶段的哲学跃迁:① 绝对加法(2017 正弦):在输入层将绝对坐标加到 Embedding,在深层容易被稀释,且两两内积会产生交叉杂项,长度泛化差;② 相对旋转(RoPE):在每一层注意力计算时将 Q 和 K 乘以旋转矩阵,使点积结果严格仅由相对位移 (m−n)θ 决定,兼具相对位置表达与远程衰减;③ 隐式归一(NoPE):在大规模长上下文(100万+ token)下,RoPE 的高低频插值外推(如 YaRN/NTK)工程复杂度高且易损伤短文本注意力;K3 依托 Decoder-only 因果掩码的不对称性,配合 KDA 遗忘门的物理时序衰减,实现了无显式编码的位置感知,使长序列外推彻底免去了位置基数调整。」

5映射到原文:K3 报告 §2.1.2 与 §3.4

技术报告原文对照 · 《Kimi K3 技术报告》§2.1.2 Gated MLA
「Kimi K3 沿用 Kimi Linear 的混合设计,对所有 MLA 层应用 No Position Encoding(NoPE),即不为其查询或键施加任何显式位置编码。间隔其中的 KDA 层提供位置敏感、具有近因感知的序列混合,而 MLA 层提供不受限制的全局内容交互。」

逐词翻译:

  • 「对所有 MLA 层应用 NoPE」:今天的主角。Gated MLA 全局注意力层(Day 18 讲)一律不加任何显式位置编码——没有正弦波,也没有 RoPE 旋转。
  • 「KDA 层提供位置敏感、近因感知的序列混合」:位置信息没有丢,而是由 KDA 层(Day 19 讲)用自带的衰减门隐式补上——越近的 token 影响越大,顺序感天然存在。
  • 「不受限制的全局内容交互」:卸下位置包袱后,MLA 层专心干一件事——让任意两个 token 直接对话。

报告紧接着还有一句,正是第 3 节那个「最大好处」的原文出处:「这种分工还避免了在扩展上下文长度时修改位置编码参数,例如重新调整 RoPE 频率基值或应用 YaRN。」

RoPE
统治 LLaMA 等开源模型的位置编码
NoPE
K3 采用的无显式位置编码方案
100 万
K3 无需修改编码即可外推的上下文长度
0
NoPE 长文本外推需调整的位置编码参数量(示意)

6自测题(先自己答,再点开看解析)

Q1 为什么 RoPE 的内积只依赖于相对距离 m − n?
解析:因为复数乘法的性质:e^(imθ) · (e^(inθ))* = e^(i(m−n)θ)。求共轭相乘后,绝对坐标 m 和 n 相减,仅剩下相对相位差 (m−n)θ。
Q2 RoPE 是作用在 Embedding 层,还是作用在注意力的 Q 和 K 上?
解析:作用在每一层计算注意力之前的 Q 和 K 上。V 不需要旋转。
Q3 当上下文从 4K 扩到 128K 时,RoPE 面临什么困难?
解析:面临未见过的超大位置角度导致的分布外(OOD)外推崩溃,必须采用 NTK-Aware、YaRN 等复杂的频率基数插值方法进行动态缩放。
Q4 为什么说因果掩码本身就带有「位置信息」?
解析:因为每个 token 能看到的历史前缀长度是不相等的:第 1 个 token 只能看 1 个 token,第 100 个 token 能看 100 个 token。下三角结构天然打破了置换不变性。
Q5 用一句话说清 K3 采用 NoPE 的最大收益。
解析:在上下文渐进扩展到 100 万 token 时,彻底摆脱了显式位置编码的频率缩放难题,外推不必修改任何编码配置。
《从 Attention 到 K3 · 大模型近十年设计演进》30 天课 · Day 16 / 30 · 返回课程首页