💡

文章摘要

位置编码是 Transformer 感知序列顺序的唯一途径。本文从自注意力的排列不变性问题出发,系统梳理四种位置编码方案的演进逻辑:绝对正弦编码 → 可学习位置嵌入 → ALiBi 注意力偏置 → RoPE 旋转编码。重点拆解 RoPE 的数学原理(复数旋转 → 实数矩阵实现)、相对位置性质证明、以及 YaRN/Dynamic NTK 等外推方案。最终给出 2026 年的工程选型指南。

一、位置问题:Transformer 为什么需要位置编码

注意力机制天生是排列不变的(permutation invariant)。 给定输入序列 [x₁, x₂, ..., xₙ],自注意力计算 Q@K^T 时,无论 token 以什么顺序排列,注意力矩阵的值都相同——只是行/列的排列不同。这意味着纯自注意力模型无法区分"猫追狗"和"狗追猫"。

位置编码的作用:为 Transformer 注入序列顺序信息。 位置编码通过在 token 表示中嵌入位置信息,使模型能够感知 token 在序列中的位置以及 token 之间的相对距离。

位置编码需要满足的核心性质(这些性质决定了方案的优劣):

  • 唯一性:每个位置必须有唯一的编码
  • 相对位置可表达性:编码应能表达 token 之间的相对距离(|i - j|)
  • 外推性:理想情况下,模型应能处理比训练时更长的序列
  • 计算效率:不应显著增加计算开销
  • KV Cache 兼容:在自回归生成中,已计算的 KV 应能复用

2026 年的产业数据: 根据主流大模型的位置编码选型统计:

  • RoPE:LLaMA 1/2/3、Mistral、Qwen、Yi、DeepSeek、CodeLlama → 覆盖 70%+ 的开源大模型
  • ALiBi:BLOOM、MPT-7B、MPT-30B、BloombergGPT
  • 可学习绝对位置:GPT-2、GPT-3、BERT
  • 正弦绝对位置:原始 Transformer(Vaswani et al., 2017)

RoPE 的统治地位有充分理由: 它是唯一同时满足相对位置编码、无需额外参数、与 KV Cache 兼容、且支持外推的方案。以下逐层拆解其原理。

图表加载中…

💡 一句话理解

位置编码Transformer 感知序列顺序的唯一途径——没有它,模型无法区分'猫追狗'和'狗追猫'。

⚠️ 常见踩坑

不要混淆位置编码positional encoding)和位置嵌入(positional embedding)——前者是固定函数,后者是可学习参数。

二、正弦位置编码:Vaswani 的原始方案

2017 年 Transformer 论文的位置编码方案: 使用不同频率的正弦和余弦函数,为每个位置生成唯一的编码向量。

公式:

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

其中 pos 是位置索引,i 是维度索引,d_model 是模型维度。

核心设计思想: 每一对 (sin, cos) 构成一个"时钟",不同维度对应不同频率。低频维度像"慢针",高频维度像"快针",组合起来形成唯一的位置指纹。

关键性质——相对位置的线性可表达性: 对于任意固定偏移 k,PE(pos+k) 可以表示为 PE(pos) 的线性函数。具体来说,存在一个只依赖 k(不依赖 pos)的矩阵 M_k,使得 PE(pos+k) = M_k · PE(pos)。这意味着模型可以通过学习线性权重来捕捉任意相对距离。

致命缺陷——外推性差: 训练时见过的最大位置是 L,推理时遇到 > L 的位置,正弦函数会进入从未见过的角度范围。由于不同频率的正弦波在未见区域的组合行为不可预测,模型性能会急剧下降。

2026 年的定位: 正弦位置编码主要作为教学工具存在。它优雅地展示了位置编码的数学性质,但在生产模型中已被 RoPE 和 ALiBi 取代。理解它是理解 RoPE 的必要前置知识。

图表加载中…

💡 一句话理解

正弦编码的核心洞察:不同频率的三角函数组合可以编码唯一位置,且相对位置可用线性变换表达。

⚠️ 常见踩坑

正弦编码的外推性极差——训练长度 2048 的模型无法直接推理 4096 长度的序列。

三、可学习位置嵌入:GPT 系列的选择

GPT-2/GPT-3 的方案:直接为每个位置学习一个嵌入向量。 维护一个大小为 [max_seq_len, d_model] 的嵌入矩阵,每个位置对应一行可训练参数。训练时梯度自动调整每个位置的表示。

优势: 灵活——模型可以自由学习任何位置表示模式,不受固定函数形式的约束。

劣势:

  • 外推性为零:超出 max_seq_len 的位置完全没有嵌入向量,无法处理
  • 额外参数:需要 max_seq_len × d_model 的参数量(如 2048 × 768 = 1.57M 参数)
  • 无语义结构:学习到的位置嵌入缺乏可解释的数学结构

为什么 GPT 系列选择可学习位置? 在 GPT-2/3 的时代(2019-2020),长上下文外推不是核心需求。GPT-3 的 2048 上下文长度在当时绰绰有余,可学习位置的简洁性和灵活性是主要优势。

可学习位置的数学本质: 从函数逼近的角度看,可学习位置嵌入等价于为每个位置学习一个独立的基向量。这类似于 one-hot 编码的连续版本——每个位置有唯一的表示,但位置之间没有显式的结构关系。这种灵活性是双刃剑:模型可以学到任意位置模式,但也意味着位置间的关系(如"距离为 3 的两个 token")需要模型从数据中隐式学习,而非由编码方案显式提供。

RoPE 的对比: 可学习位置嵌入是"数据驱动"的方案——位置信息完全由训练数据决定;RoPE 是"结构驱动"的方案——位置信息由旋转矩阵的数学结构决定。2026 年的共识是:对于位置编码这种具有明确数学结构的问题,结构驱动的方案优于纯数据驱动的方案,因为数学结构提供了更强的归纳偏置。

2026 年的定位: 可学习位置嵌入几乎完全被 RoPE 取代。Sebastian Raschka 的分析指出:随着长上下文成为刚需,RoPE 的外推优势压倒了可学习位置的灵活性优势。

💡 一句话理解

可学习位置嵌入的兴衰:灵活但无法外推,被长上下文时代淘汰。

⚠️ 常见踩坑

可学习位置嵌入无法处理超出训练长度的序列——这是它在 2026 年被淘汰的根本原因。

四、ALiBi:注意力偏置的简洁方案

ALiBi(Attention with Linear Biases)由 Press 等人在 2021 年提出。 它的核心思想极其简洁:不在 token 嵌入上加位置信息,而是在注意力分数上直接减去一个与距离成正比的惩罚项。

公式: Attention(Q, K, V) = softmax(Q@K^T + m · [-1, -2, ..., -n]) @ V

其中 m 是每个注意力头一个固定的斜率(无需学习),[-1, -2, ..., -n] 是当前位置到各位置的线性距离。

设计直觉: 距离越远的 token注意力分数被减得越多,模型自然倾向于关注近处的 token。不同注意力头使用不同斜率,形成从"关注局部"到"关注全局"的层次化注意力模式。

斜率设置: 使用几何级数 m_h = 1/2^(8h/H),其中 h 是头索引,H 是总头数。这种设置确保斜率在对数尺度上均匀分布,使得不同注意力头的感受野从"非常局部"到"相当全局"呈对数均匀分布。例如,对于 H=32 头的模型,斜率范围从约 0.001(几乎全局注意力)到约 1.0(非常局部的注意力)。

核心优势——外推性极强: ALiBi 是唯一被证明能成功外推到远超训练长度序列的位置编码方案(Fuller et al.)。MPT-7B 训练长度 2048,推理时可处理 65536 长度。

外推性的理论解释: ALiBi 的外推性源于其线性偏置的简单结构。偏置值 m · (-d) 随距离线性增长,无论距离多远,偏置值都是良定义的。这与正弦编码形成对比——正弦编码的角度 pos/10000^(2i/d) 在超出训练范围时进入未训练区域,导致不可预测的行为。ALiBi 的线性结构确保了即使距离超出训练范围,偏置行为仍然可预测。

ALiBi 的注意力模式特征: 由于线性偏置的存在,ALiBi 模型的注意力分布呈现出明显的"三角形"模式——对角线附近的注意力权重最大,远离对角线的权重迅速衰减。不同注意力头使用不同斜率,形成从"窄三角形"(局部注意力)到"宽三角形"(全局注意力)的层次化模式。这种模式在可解释性分析中非常直观,也是 ALiBi 被部分研究者偏好的原因。

劣势:

  • 无旋转语义:ALiBi 只是简单的距离惩罚,不像 RoPE 那样在向量空间中编码旋转语义
  • 注意力偏置是加性的:它影响注意力权重的分布,但不改变 Q 和 K 的表示本身
  • GQA/MQA 兼容性:ALiBi 在 GQAGrouped Query Attention)架构中需要特殊处理

产业采用: BLOOM(176B)、MPT-7B/30B、BloombergGPT。但在 2024-2026 年的新模型中,ALiBi 的采用率显著低于 RoPE

💡 一句话理解

ALiBi 的外推性是所有方案中最强的——训练 2K 推理 65K 已被 MPT-7B 验证。

⚠️ 常见踩坑

ALiBi 在新模型中的采用率下降——RoPE 的旋转语义和生态优势正在压倒 ALiBi 的外推优势。

五、RoPE:旋转位置编码的数学原理

RoPERotary Position Embedding)由 Su 等人在 2021 年提出,论文标题为 RoFormer 它是 2026 年主流大模型的位置编码标准,被 LLaMA、Mistral、Qwen、DeepSeek 等广泛采用。

核心思想:通过复数旋转将绝对位置信息编码到 Q 和 K 中,使得 Q 和 K 的点积自然包含相对位置信息。

数学推导(从 2 维开始):

对于 2 维向量 x = [x₀, x₁],位置 m 的 RoPE 操作等价于将 x 旋转角度 mθ:

q_m = x · e^(imθ) = [x₀ cos(mθ) - x₁ sin(mθ), x₀ sin(mθ) + x₁ cos(mθ)]

关键性质: 两个位置 m 和 n 的 Q、K 点积为:
⟨q_m, k_n⟩ = ⟨x, y⟩ · cos((m-n)θ) + 交叉项 · sin((m-n)θ)

点积只依赖相对距离 (m-n),不依赖绝对位置 m 和 n。 这就是 RoPE 的核心魔力——它编码绝对位置,但注意力计算只看到相对位置。

推广到 d 维: 将 d 维向量分成 d/2 对,每对独立旋转,但使用不同频率 θ_i = 1/10000^(2i/d)。这与正弦编码的频率设计一脉相承,但操作方式从"加法"变为"旋转"。

实数矩阵实现: 在实际代码中,RoPE 通过构造分块对角旋转矩阵实现:

R_m = diag([cos(mθ₀), cos(mθ₀), cos(mθ₁), cos(mθ₁), ...]) + diag([-sin(mθ₀), sin(mθ₀), ...]) · P

其中 P 是相邻维度交换矩阵。实现时只需:x_rot = x * cos(mθ) + rotate_half(x) * sin(mθ)。

频率向量 θ 的选择: 基础频率 θ_i = 1/10000^(2i/d),这与原始 Transformer 的正弦编码完全一致。不同频率对应不同"旋转速度"——低频对旋转慢(捕捉远距离关系),高频对旋转快(捕捉近距离关系)。

频率设计的直觉理解: 可以将 RoPE 的频率设计想象成一组齿轮。高频维度是小齿轮,转得快,每移动一个位置角度变化大,适合编码近距离的精细位置差异。低频维度是大齿轮,转得慢,每移动一个位置角度变化小,适合编码远距离的粗略位置关系。这种多尺度设计与图像金字塔的思想异曲同工——不同尺度捕捉不同范围的信息。

RoPE 的几何解释: 从几何角度看,RoPE 将每个 token 的表示向量在 d/2 个二维平面上同时做旋转。每个平面上的旋转角度与位置成正比,但旋转速度不同。这等价于在 d 维空间中沿着一条螺旋曲线移动——位置 m 对应螺旋曲线上的一个点。两个 token注意力分数取决于它们在螺旋曲线上的相对位置,这就是 RoPE 编码相对位置的几何本质。

注意力的集成方式: 在标准的 Multi-Head Attention 中,RoPE 应用在 Q 和 K 的线性投影之后、注意力分数计算之前。具体来说,对于输入 X,先计算 Q = XW_Q、K = XW_K,然后对 Q 和 K 的每一行(对应每个 token)施加 RoPE 旋转,最后计算注意力分数。V 不需要旋转——因为 V 不参与位置信息的编码,它只负责内容聚合。

为什么只旋转 Q 和 K,不旋转 V? 这是一个精妙的设计选择。注意力机制中,Q 和 K 的点积负责"在哪里 attend"(位置敏感),V 负责"attend 到什么内容"(内容敏感)。RoPE 只影响"在哪里 attend"的决策,不改变被聚合的内容表示。这与 ALiBi 的设计哲学形成对比——ALiBi 在注意力分数上加偏置,同时影响位置和内容的权重分配。

代码实现要点: 在实际实现中,RoPE 的核心操作可以高效完成。首先预计算 cos 和 sin 查找表(形状为 [max_seq_len, head_dim]),然后对每个 token 位置 m,取出对应的 cos(mθ) 和 sin(mθ) 向量。将输入向量分成前后两半,前半乘 cos 减去后半乘 sin,后半乘 cos 加上前半乘 sin——这就是 rotate_half 技巧。整个操作无需矩阵乘法,只有逐元素运算,GPU 利用率极高。

关键数据: LLaMA 2 使用 d=128(每头维度),训练长度 4096。LLaMA 3 同样使用 RoPE,训练长度扩展到 8192。Qwen 系列使用 RoPE + Dynamic NTK,支持 32768 上下文。

图表加载中…

💡 一句话理解

RoPE 的核心魔力:编码绝对位置,但注意力计算只看到相对位置——通过复数旋转实现。

⚠️ 常见踩坑

RoPE 的频率设计与正弦编码一脉相承——理解正弦编码是理解 RoPE 的前置知识。

六、RoPE 的外推方案:YaRN 与 Dynamic NTK

RoPE 的固有局限:超出训练长度的外推性能中等。 当推理序列长度超过训练长度 L 时,旋转角度 mθ 会超出训练时见过的范围。高频维度(θ 大)首先受到影响——它们的旋转速度太快,在超出训练长度时角度变化过于剧烈。

方案一:位置插值(Position Interpolation, PI)。 最直接的方法:将位置索引从 [0, L'] 线性缩放到 [0, L],即 m' = m × L/L'。这相当于降低所有频率的旋转速度。简单但粗糙——它压缩了位置分辨率,导致近距离 token 的区分能力下降。

方案二:Dynamic NTK(Qwen 方案)。 核心思想:只调整高频维度,保留低频维度不变。通过修改基础频率基数(从 10000 增大到 10000 × (L'/L)^α),使高频维度的旋转速度降低,低频维度保持原速。这比 PI 更精细——它只在"需要"的维度上做调整。

方案三:YaRN(Yet another RoPE extensioN)。 YaRN 由 Peng 等人在 2023 年提出,是目前最成熟的 RoPE 外推方案,被 CodeLlama 等采用。它在 Dynamic NTK 基础上增加了两个关键改进:

第一,逐维度插值策略:不是所有维度都用相同的缩放因子,而是根据频率高低分配不同的插值系数。高频维度用更强的插值(更保守),低频维度用更弱的插值(更信任训练信号)。

第二,注意力温度缩放:随着上下文长度从 L 扩展到 L',注意力分布会变得更分散。YaRN 引入温度因子 t = 1/(0.1 × ln(L'/L) + 1),通过调整 softmax 温度来补偿注意力分散。

关键数据: CodeLlama 使用 RoPE + YaRN,从 LLaMA 2 的 4096 训练长度扩展到 16384。Qwen 使用 RoPE + Dynamic NTK,扩展到 32768。YaRN 的扩展只需不到原始预训练 token 数 0.1% 的微调数据。

2026 年的工程实践:

  • 训练长度 ≤ 8192 → 原生 RoPE,无需外推
  • 需要扩展到 2-4 倍训练长度 → Dynamic NTK(Qwen 方案)
  • 需要扩展到 4-32 倍训练长度 → YaRN(CodeLlama 方案)
  • 需要极端扩展(> 32 倍)→ 考虑 ALiBi 或稀疏注意力方案
方案机制扩展倍数代表模型

位置插值 PI

线性缩放位置索引

2-4x

ChatGLM

Dynamic NTK

调整高频维度频率

2-8x

Qwen

YaRN

逐维度插值 + 温度缩放

4-32x

CodeLlama

ALiBi

注意力线性偏置

32x+

MPT-7B

💡 一句话理解

YaRN 是 RoPE 外推的最成熟方案——4K 训练扩展到 128K 只需 0.1% 微调数据。

⚠️ 常见踩坑

位置插值会压缩位置分辨率——扩展越长,近距离 token 的区分能力越弱。

七、四种方案的综合对比与选型指南

位置编码选型的核心维度:注入点、位置类型、外推能力、KV Cache 兼容性、额外参数、计算开销。

注入点对比:

位置类型对比:

  • 正弦/可学习:绝对位置(但 RoPE 通过旋转使注意力看到相对位置)
  • ALiBi:相对位置(直接编码距离)
  • RoPE:编码绝对位置,注意力计算等价于相对位置

外推能力排名: ALiBi > YaRN ≈ Dynamic NTK > RoPE 原生 > 正弦 > 可学习

KV Cache 兼容性: 四种方案都兼容(这是 RoPE 和 ALiBi 相对早期方案的重要优势)。

额外参数: 正弦/RoPE/ALiBi 都无需额外参数;可学习位置需要 max_len × d_model 参数。

计算开销: ALiBi 最低(只加偏置),RoPE 中等(旋转 Q/K),正弦/可学习最低(嵌入加法)。

2026 年选型决策树:

场景一:标准 LLM 训练(上下文 ≤ 8K)
RoPE。这是 2026 年的默认选择,生态最成熟,与 GQA/MQA/MLA 完美兼容。

场景二:需要扩展到 2-8 倍训练长度
RoPE + Dynamic NTK。Qwen 方案,工程验证充分。

场景三:需要极端长上下文(> 32K)
RoPE + YaRNALiBi。YaRN 在 RoPE 生态中成熟度高;ALiBi 外推性更强但生态较弱。

场景四:教育/实验目的
正弦编码(理解数学原理)→ 可学习位置(理解嵌入概念)→ RoPE(理解现代方案)。

场景五:多模态位置编码
VRoPE(2025 年提出的视频 RoPE 扩展),将 RoPE 的旋转机制从 1D 文本扩展到 3D 视频(帧 + 宽 + 高)。

RoPE 的局限性讨论: 尽管 RoPE 在 2026 年占据主导地位,它并非完美。首先,RoPE 的衰减特性不如 ALiBi——ALiBi 的线性偏置天然地对远距离 token 施加更强的惩罚,而 RoPE 的旋转编码在远距离时高频维度的角度变化剧烈,可能导致注意力分布不稳定。其次,RoPE 的频率选择在预训练时固定,外推方案(YaRN、Dynamic NTK)本质上是"打补丁",不如 ALiBi 的原生外推优雅。第三,对于多模态场景(如视频理解),RoPE 的 1D 旋转假设需要扩展为多维位置编码,这增加了工程复杂度。

前沿方向(2026): 位置编码领域仍有多个活跃研究方向。一是多维 RoPE 扩展——将 RoPE 从 1D 文本扩展到 2D 图像和 3D 视频位置编码,VRoPE(Video RoPE)已经在视频理解模型中得到应用。二是自适应位置编码——根据输入内容动态调整位置编码策略,而非使用固定的编码方案。三是统一理论框架——GRAPE(ICLR 2026)提出了基于群表示论的统一框架,将 RoPE、ALiBi、正弦编码等都视为特定群作用下的特例,为位置编码的理论理解提供了新视角。四是位置编码方案——部分研究探索完全抛弃显式位置编码,通过注意力模式本身隐式学习位置信息,但目前效果尚不如显式方案。

产业趋势判断: RoPE 在 2026 年的统治地位短期内不会被挑战。GRAPE(ICLR 2026)提出了基于群表示的统一框架,将 RoPE、ALiBi 等都视为特例,但尚未有生产级实现。位置编码领域的下一个突破可能来自多模态场景(视频、3D)的位置编码需求。

图表加载中…

💡 一句话理解

2026 年位置编码选型:默认 RoPE,长上下文加 YaRN/Dynamic NTK,极端长度考虑 ALiBi。

⚠️ 常见踩坑

不要忽视位置编码的外推需求——训练 4K 推理 128K 是常见场景,没有外推方案性能会崩溃。

🎯 相关面试题

巩固本篇知识点,备战 AI 岗位面试。