位置编码:从 Sinusoidal 到 RoPE

自注意力让 Transformer 得到了并行训练的能力,但也带来了一个结构性的盲区:它对 token 的位置完全不敏感。 打乱整个输入序列,注意力的计算结果不变——因为 Q·K 的点积只取决于 token 的内容表示,与它们在序列中的先后顺序无关。

但语言有严格的顺序。「我打你」和「你打我」包含完全相同的三个 token,含义却截然相反。RNN 通过串行计算自然地保留了位置信息——Transformer 用并行换来了训练速度,却丢掉了这个隐含的序列结构。位置编码要做的事就是把这个丢掉的序列结构补回来。

从 2017 年的固定正弦函数,到 2021 年苏剑林提出的 RoPE,再到今天配合 NTK/YaRN 外推到 128K 上下文——位置编码的演进是 Transformer 架构演化中最具工程智慧的线索之一。本文按时间线梳理这条路径,目标是让读者理解 RoPE 的数学直觉和它为什么能打破训练长度的限制。


一、第一代:绝对位置编码——告诉模型「你在第几个」

位置编码最朴素的想法是给每个位置分配一个唯一的向量,加到 token embedding 上,让模型知道这个 token 在序列中的绝对位置。

1.1 固定正弦编码(原始 Transformer,2017)

原始 Transformer 用固定的正弦和余弦函数为位置 pos 的第 i 个维度生成编码值:

PE(pos, 2i)   = sin(pos / 10000^(2i/d_model))
PE(pos, 2i+1) = cos(pos / 10000^(2i/d_model))

每个维度对应不同频率的正弦波。低频维度(i 小)波长长,编码全局位置;高频维度(i 大)波长短,编码局部偏移。这套方案不需要任何训练——位置编码完全由数学公式决定。

但这种固定编码有两个隐藏问题。第一,外推效果差:虽然数学上 pos 可以任意大,但模型只在训练时见过的位置范围(如 0-2047)内学会了如何利用这些编码,超出训练范围后表现会显著退化。第二,它编码的是绝对位置而非相对关系——模型学到的是「第 5 个 token 有什么编码模式」,而不是「两个 token 相距 5 步意味着什么」。

1.2 可学习位置编码(BERT / GPT-2 / GPT-3)

将固定函数替换为一个可学习的 Embedding 表:

pos_embeddings = nn.Embedding(max_position_embeddings, hidden_size)
# 输入是位置索引 [0, 1, 2, ..., seq_len-1]

模型在训练中自行学习最优的位置表示。这解决了「固定函数不够灵活」的问题,但付出了更大的代价:彻底丧失了外推能力——位置表只有 max_seq_len 行,超出即越界。GPT-3 训练长度 2048 意味着推理长度也被锁死在 2048。


二、第二代:相对位置编码——从「绝对位置」到「位置关系」

绝对位置编码的根本问题在于:注意力的本质是 token 之间的交互,而非 token 的独立属性。模型真正需要知道的不是「A 在第 5 位」,而是「A 和 B 之间相距多远」。

这个洞察催生了第二代方案:不修改 token 的表示,而是修改注意力计算本身。

2.1 T5 的相对偏置

T5 在注意力分数上直接加一个可学习的偏置项,其值只取决于两个 token 之间的相对距离:

Attention(Q, K, V) = softmax((Q · K^T) / √d_k + bias_rel(i, j)) · V
其中 bias_rel(i, j) 只与 i - j 有关。相同距离的 token 对共享同一个偏置值,参数量从 O(max_len²) 降至 O(max_len)。

核心理念的变化:位置信息不再注入 token 的表示,而注入注意力计算本身。 影响的是「谁该关注谁」,不是「token 长什么样」。

2.2 ALiBi:连偏置表都不需要

ALiBi(Attention with Linear Biases)更激进——把可学习的偏置表替换为一个固定的线性惩罚项:

Attention(Q, K, V) = softmax((Q · K^T) / √d_k - m · |i - j|) · V

其中 m 是每个 head 预定义的斜率(head_0: m=1/2, head_1: m=1/2², …)。距离越远,惩罚越大——这是一个极简的「就近原则」。

关键发现:只用这个固定惩罚项,不加任何可训练的位置编码,模型就能外推到训练时 2-3 倍的上下文长度。Bloom 使用了 ALiBi,实测推理长度可以达到训练的 3 倍以上。但 ALiBi 也有局限——线性惩罚过于简单,对复杂的长距离依赖模式表达能力不足。


三、RoPE:旋转位置编码——将位置信息「旋入」注意力

RoPE 由苏剑林等人在 2021 年提出,目前是 LLaMA、Qwen、DeepSeek、Mistral、Gemma 等几乎所有当代 LLM 的位置编码方案。它的核心思路独树一帜:不改变向量的大小,只旋转向量的方向,且将旋转角度与 token 位置绑定。

3.1 直觉:用旋转编码位置

想象两个 token 的 Q 和 K 向量在空间中各有一个方向。如果这两个向量的旋转角度差正好等于它们的相对位置差,那么它们的点积(cos 值)就自然携带了相对位置信息——位置近则角度差小、cos 大,位置远则角度差大、cos 小。

RoPE 正是利用了这个几何直觉:对 Q 的第 g 对维度施加角度 pos_i × θ_g 的旋转,对 K 施加 pos_j × θ_g 的旋转。那么 Q 和 K 的点积中,旋转角之差 (pos_i - pos_j) × θ_g 会自然出现。

3.2 数学定义

将 d 维的 Q 或 K 向量按相邻维度两两分组 ((x₀, x₁), (x₂, x₃), …),对每一组施加一个二维旋转矩阵:

对于第 g 组 (x_2g, x_2g+1):
  旋转角 θ_g = 1 / (base^(2g/d))    其中 base = 10000

[f(x_2g, pos)]   [cos(pos·θ_g)  -sin(pos·θ_g)]   [x_2g]
[             ] = [                            ] × [    ]
[f(x_2g+1, pos)]  [sin(pos·θ_g)   cos(pos·θ_g)]   [x_2g+1]

用复数形式表达更简洁——将每组视为一个复数,乘以 e^(i·pos·θ_g):

(x_2g + i·x_2g+1) · e^(i·pos·θ_g)

不同维度组的旋转频率不同(θ_g 随 g 增大而减小),低频组感知远程位置关系,高频组感知近程局部变化。

3.3 为什么 RoPE 编码的是相对位置

RoPE 的数学优雅之处在于,旋转后 Q 和 K 的点积只包含相对位置项:

RoPE(Q_pos_i, pos_i) · RoPE(K_pos_j, pos_j)^T
= (Q_i · e^(i·pos_i·θ)) · (K_j · e^(i·pos_j·θ))^T
= (Q_i · K_j^T) · e^(i·(pos_i - pos_j)·θ)     ← 只与相对位置有关!

绝对位置在旋转过程中自动消去,剩余项 e^(i·(pos_i-pos_j)·θ) 纯编码相对距离。这意味着 RoPE 兼具了绝对位置编码的简洁(直接对 Q/K 做变换,无需修改注意力公式)和相对位置编码的表达力(自然编码 token 间距离)。

3.4 外推:RoPE 的真正杀手锏

RoPE 能支持比训练时长得多的上下文,关键在于旋转频率是可调的。通过调整 base 值或对不同频率组做差异化缩放,可以在不重新训练的前提下将上下文窗口从 4K 扩展到 32K-128K。

方法 原理 效果
直接外推 不做任何处理 训练 4K → 推理 8K,perplexity 急剧上升
Linear NTK 等比缩放所有 θ_g,让高频衰减更慢 4K → 32K,perplexity 基本持平
YaRN 高频保持、低频压缩,分频段差异化处理 4K → 128K,多数开源模型的首选
Dynamic NTK 根据当前实际序列长度动态调整缩放因子 灵活,无需预设目标长度
# NTK-aware 缩放的简化实现
def apply_ntk_scaling(base, scale, dim):
    """对 RoPE 的 base 做缩放,使高频维度衰减更缓慢"""
    return base * (scale ** (dim / (dim - 2)))

3.5 各方案权衡对比

方案 编码方式 相对位置 外推能力 代表模型
Sinusoidal 加到输入端 间接(通过三角函数性质) Transformer (2017)
Learned 加到输入端 无(硬上限) BERT, GPT-2/3
Relative Bias 加偏置到注意力分数 直接 中等 T5
ALiBi 固定线性惩罚 直接 强,但表达力有限 Bloom
RoPE 旋转 Q/K 向量 直接且精确 最强(配合 NTK/YaRN) LLaMA, Qwen, DeepSeek, Mistral

RoPE 的成功不在于它比之前的方案更复杂——恰恰相反,它用最少的改动(只修改 Q 和 K 的计算,不需要改注意力公式、不需要额外参数)做到了最好的效果。这种「用数学优雅替代工程复杂度」的思路,是 RoPE 成为行业标配的根本原因。


四、相关资源