技术博客

正弦位置编码的原始设计与性质

第 74 / 147 篇 · 2026-02-06 · ai · 位置编码注意力机制归纳偏置

原始的 Attention is All You Need 没有 RoPE,用的是一组固定的正弦/余弦向量:

$$ \mathrm{PE}(pos, 2i) = \sin\Big(\frac{pos}{10000^{2i/d}}\Big),\qquad \mathrm{PE}(pos, 2i+1) = \cos\Big(\frac{pos}{10000^{2i/d}}\Big). $$

每个位置 $pos$ 得到一个 $d$ 维向量:维度按对分组,每对 $(2i, 2i+1)$ 是一条正弦曲线,波长

$$ \lambda_i = 2\pi \cdot 10000^{2i/d} $$

从 $2\pi$($i=0$ 附近,只能分辨相邻几个位置)一路铺到 $10000\cdot 2\pi$($i=d/2$,一个周期横跨万级距离)。这篇回答三个问题:为什么这么设计、它保证了什么性质、以及为什么被取代了。

性质一:相对位置是线性变换

这是对每个 sin/cos 对分别成立的事实。写

$$ \mathrm{PE}(pos)_{2i} = \sin(\omega_i\, pos),\qquad \mathrm{PE}(pos)_{2i+1} = \cos(\omega_i\, pos), $$

$\omega_i = 10000^{-2i/d}$。用正弦加法公式:

$$ \begin{aligned} \sin(\omega(pos+k)) &= \sin(\omega\,pos)\cos(\omega\,k) + \cos(\omega\,pos)\sin(\omega\,k),\\ \cos(\omega(pos+k)) &= \cos(\omega\,pos)\cos(\omega\,k) - \sin(\omega\,pos)\sin(\omega\,k). \end{aligned} $$

矩阵形式:每一对维度上,

$$ \begin{pmatrix} \mathrm{PE}(pos+k)_{2i} \\ \mathrm{PE}(pos+k)_{2i+1} \end{pmatrix} = M_i(k)\begin{pmatrix} \mathrm{PE}(pos)_{2i} \\ \mathrm{PE}(pos)_{2i+1} \end{pmatrix},\qquad M_i(k) = \begin{pmatrix} \cos\omega_i k & \sin\omega_i k \\ -\sin\omega_i k & \cos\omega_i k \end{pmatrix}. $$

整段拼接起来 $\mathrm{PE}(pos+k) = M_k\,\mathrm{PE}(pos)$,$M_k$ 是与 $pos$ 无关的固定正交矩阵。设计动机在论文里写得很直白:这让模型"容易学会注意相对位置"——query/key 的点积 $\mathrm{PE}(m)^\top M_k \mathrm{PE}(n)$ 天然是偏移量 $m-n$ 的函数。注意这个性质 RoPE 直接继承并强化了:RoPE 就是把同样的旋转矩阵作用在 $q,k$ 上让点积只依赖相对位置,而正弦 PE 只是"存在这样的线性关系",点积里还混着绝对位置项,约束更弱。

性质二:多尺度波长是刻意的

单一条正弦曲线编码位置是模糊的:$pos$ 与 $pos+\lambda$ 不可区分。答案不是提高频率(波长 $\lambda$ 小则远处全糊),而是铺一组从短到长的波长:短波长对给局部语法(词序、邻近搭配)提供高精度坐标,长波长对给段落/篇章级距离提供虽然粗糙但无歧义的刻度——因为任一距离 $k$ 在至少一部分维度对上落在这些曲线的非周期区。这和后面 ALiBi(线性偏置)、RoPE 基频分析是同一个谱系的问题:位置编码的频率轴怎么分配。底数 10000 对应最长波长 $\approx 6.3\times10^4$,在 2017 年 512 维、512 长度的设定下是"最长上下文的好几倍",即保证训练长度内长波维不卷回。

为什么后来被认为不够

三条实证批评。第一,外推失败:$pos$ 超出训练范围后,长波维开始进入训练时没见过的相位区,短波维则剧烈振荡,困惑度立刻劣化——"外推假设"(认为正弦形式天然支持外推)被 Press et al. 的 ALiBi 实验正面否证:简单的线性距离偏置反而外推更好。第二,可学习 vs 固定:BERT/GPT-2 时代的对照显示可学习绝对位置嵌入质量略优,说明正弦的先验并不强到不可替代;而可学习嵌入的失败模式(不能外推)又反过来催生相对方案。第三,位置信息注入方式弱:绝对 PE 只出现在最底层输入,位置要穿过几十层 attention 才能持续影响 logits;RoPE 把位置绑进每层注意力的打分函数,信息的"使用位置"和"生成位置"合一,对长程相对距离的利用效率高得多。

公平地说,正弦 PE 的遗产没死:波长-维度的对数铺排被 RoPE 的基频直接继承,RoPE 本质上就是"把正弦 PE 的旋转结构从输入端搬进注意力的内积里"。

正弦 PE:维度 i 对应波长 λᵢ = 2π·10000^(2i/d) 短波:局部精度 中波 长波:远距无歧义 PE(pos+k) = M(k)·PE(pos):位置偏移是对 PE 向量的固定线性变换 → 相对距离对注意力可学 幅值 pos

小结

正弦 PE 的两条设计都有明确动机:sin/cos 对让"位置平移 = 固定正交变换",相对位置信息在结构上对注意力可见;对数铺开的波长让短距离有精度、长距离无歧义。它被取代不是因为设计错了,而是注入点太弱(只在输入层)且相位结构撑不住外推。RoPE 可以读作对它的两点修复:同样的旋转结构,搬进每层注意力的内积,并配合基频缩放专门处理长程。接下来几篇就顺着这个位置编码谱系往下走:ALiBi 怎样用一个标量斜率换外推能力,以及 RoPE 基频那 10000 到底怎么选。