Sinusoidal Position Encoding 是原始 Transformer 论文使用的固定位置编码方法。它不用学习位置表,而是用不同频率的正弦和余弦函数为每个位置生成向量,再加到 token embedding 上。

基本形式

设位置为 ,维度索引为 ,模型维度为 。常见形式为:

然后与 token embedding 相加:

偶数维使用 sine,奇数维使用 cosine;不同维度对应不同频率。

频率直觉

Sinusoidal encoding 的直觉是用多种波长同时表示位置:

  • 高频维度对短距离变化敏感;
  • 低频维度变化更慢,可以覆盖更长距离;
  • sine/cosine 成对出现,使相位关系可以表达位置差异。

这和 Fourier features 有相似直觉:用一组周期函数把标量位置映射到高维表示中。

为什么有一定外推性

因为 sinusoidal position encoding 是固定函数,不依赖有限大小的 learned table,所以可以为超过训练长度的位置计算编码。相比 learned absolute position embedding,它至少在形式上支持任意位置。

但这不等于模型一定能有效利用超长上下文。训练时没有见过的长度、attention 成本、数据分布和任务模式仍然会限制外推效果。

与 Absolute Position Embedding 的区别

方法参数超出训练长度的位置特点
Learned absolute position可学习位置表通常没有自然定义适配训练分布,外推弱
Sinusoidal position固定函数可以计算外推形式更自然,但不一定效果强

二者都把位置向量加到输入 embedding 上,因此位置信息进入 hidden states,而不是直接作用在 attention score 上。

与 RoPE 的关系

RoPE 也使用频率和旋转思想,但作用位置不同。Sinusoidal encoding 生成一个位置向量加到 token embedding;RoPE 则对 Q/K 做位置相关旋转,使相对位置进入 query-key dot product。

因此 RoPE 与 attention 的结合更直接,也成为现代 decoder-only LLM 中更常见的位置机制。

局限

  • 位置信息只在输入层相加,后续层如何使用完全由模型学习;
  • 周期函数可能在很长位置范围内出现复杂周期行为;
  • 形式可外推不代表能力可外推;
  • 现代 LLM 中通常被 RoPE、ALiBi 或长上下文位置扩展方法替代。

常见误解

  • 误解:sinusoidal encoding 是 learned embedding。 它是固定函数,没有可学习位置表。
  • 误解:可以计算任意位置就等于无限上下文。 模型是否能利用长上下文还取决于训练和系统。
  • 误解:它只表示绝对位置。 它以绝对位置生成向量,但 sine/cosine 结构让相对位移可以被线性关系表达。

相关概念