Positional Encoding
4/3/26About 5 min
Positional Encoding
从绝对位置到无限外推,这是 Transformer 能够处理长文本的关键。
| 编码方案 | 核心原理 | 使用模型 | 优缺点 |
|---|---|---|---|
| Sinusoidal | 使用不同频率的正余弦函数叠加 | Vanilla Transformer | 简单但外推性(Extrapolation)极差。 |
| Learnable | 随模型一起学习的绝对位置嵌入 | BERT, GPT-2 | 固定长度,无法处理训练长度之外的文本。 |
| ALiBi | 在 Attention Score 上直接加线性偏置 | MPT, BLOOM | 外推性好,但缺乏相对位置的精细刻画。 |
| RoPE | 旋转位置编码,通过复数旋转实现 | Llama 1/2/3, Qwen | 目前的主流。结合了绝对与相对位置优点。 |
| YaRN / LongRoPE | 对 RoPE 的频率进行非均匀插值 | Llama-3-128k | 将上下文从 8k 扩展到 128k+。 |
| iRoPE (2025) | 交替/交织位置编码 (Interleaved RoPE) | Llama 4 (Scout) | 最新标准。通过交替层解决超长文本(10M+)问题。 |
Extrapolation 外推性
外推性 指的是模型在推理(Inference)阶段,处理比训练阶段更长的序列的能力。
- 痛点:如果你在 4k 长度的数据上训练了一个模型,直接喂给它 32k 的文本,传统的 Transformer 会崩溃。
- 原因(OOD 问题):
- 绝对位置编码:模型从未见过第 4001 个位置的向量,注意力机制无法处理。
- 相对位置编码(如 RoPE):虽然理论上可以计算,但由于超长距离下频率项的“相位偏移”超出了模型在训练时见过的分布,导致注意力权重变得混乱。
理想的外推性意味着:模型在 长度训练,可以在 长度上保持困惑度(Perplexity)平稳且逻辑不掉线。
Sinusoidal
正余弦位置编码 Sine Cosine Embedding Positions
最早的就是:Input=Embedding+Position
ALiBi
Attention with Linear Bias
线性偏置项位置编码
上下文推理窗口长度
外推
RoPE
没有位置信息
带有相对位置信息
维度两两一组进行旋转
- 不再在词向量(字典查找表)中加入位置信息
- 通过旋转矩阵对向量(Q、K)进行角度旋转
- 长度不变、角度相同=dot product不变!
YaRN
Yet another RoPE extensioN
YaRN 是在 2023 年由 EleutherAI 团队提出的。它是对 NTK-aware RoPE 方案的改进,旨在不破坏模型原始能力的前提下,将上下文从 4k 扩展到 128k 甚至更长。
核心原理:按频率分治 (NTK-by-parts)
RoPE 的核心是将不同维度的分量旋转不同的频率。YaRN 认为:不应该平等地缩放所有频率。
- 高频维度(短波长):对应模型捕捉“局部相邻” token 关系的能力。如果过度插值,模型会丧失区分相邻词的能力(分辨率丢失)。
- 低频维度(长波长):对应模型捕捉“远距离”全局关系的能力。这部分需要进行大幅插值,以容纳超长距离。
算法实现
YaRN 引入了一个分段函数(Ramp Function),通过掩码(Mask)来决定每个维度是进行“外推”还是“插值”:
- 不插值区:波长 ,保持原样。
- 完全插值区:波长 ,按比例缩放。
- 混合区:位于中间的维度,采用平滑过渡。
LongRoPE
LongRoPE 是微软在 2024 年提出的一项更激进的改进,它首次将预训练模型的上下文窗口推到了 200 万 (2M) tokens 的量级。
核心改进:非均匀性搜索
LongRoPE 认为 YaRN 的分段函数还是太“人工”了。它提出了三个核心创新点:
- 非均匀缩放搜索 (Non-uniform Scaling):
- 通过进化算法(Evolutionary Search),为 RoPE 的每一个维度寻找最优的缩放因子,而不是统一按某个公式计算。
- 实验发现,最优的缩放分布是极其不规则的,这种不规则性只有通过搜索才能获得。
- 初始 Token 保护 (Initial Token Protection):
- LongRoPE 发现序列最开头的几个 Token(如前 16-32 个)对注意力的全局分布至关重要。
- 它对这些初始 Token 的位置编码不做或少做插值,保持它们的“定位点”作用,从而极大地稳定了长文本推理。
- 两阶段扩展策略:
- 第一步:先在 256k 长度上进行少量微调。
- 第二步:利用非均匀性搜索,在不微调的情况下,将长度外推至 2048k(8倍扩展)。
| 特性 | YaRN | LongRoPE |
|---|---|---|
| 提出者 | EleutherAI | Microsoft |
| 核心思路 | 理论推导:按波长手动分段 | 工程搜索:进化算法寻找最优因子 |
| 复杂度 | 实现简单,公式固定 | 实现复杂,需要先跑搜索算法 |
| 典型长度 | 64k - 128k | 256k - 2048k (2M) |
| 适用模型 | Llama 2/3, Mistral | 追求极致长度的闭源/前沿模型 |
iRoPE
Interleaved RoPE
在 2025 年发布的 Llama 4 系列中,Meta 引入了 iRoPE 架构。
- 3:1 比例设计:它不再每一层都使用 RoPE。而是采用“3 层 RoPE + 1 层 NoPE(无位置编码)”的交替循环。
- 逻辑分工:
- RoPE 层:负责处理局部位置感知的语义。
- NoPE 层:充当“全局内存池”,由于没有位置约束,它能更自由地捕捉数百万 Token 之外的超远距离关联。
- 效果:这种设计成功让 Llama 4 Scout 实现了 10,000,000 (10M) 的超长上下文,且不会出现注意力发散的问题。
