位置编码的技术演进线路:从绝对到相对,再到几何一致性

位置编码的技术演进线路:从绝对到相对,再到几何一致性

摘要

Transformer 的核心创新在于其"无序感知"机制------注意力机制(Attention)。

但要让序列模型理解"顺序"这一维度,位置编码(Positional Encoding) 便成为至关重要的桥梁。

从最初的正弦余弦绝对位置编码,到 Shaw 相对编码,再到 ALiBi 与旋转式位置编码(RoPE),

位置编码的演进史其实就是 Transformer 从"离散符号"迈向"几何空间理解"的过程。


一、为什么需要位置编码?

Transformer 的核心计算是:
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block"> Attention ( Q , K , V ) = softmax ( Q K T d k ) V \text{Attention}(Q, K, V) = \text{softmax}\left( \frac{QK^T}{\sqrt{d_k}} \right) V </math>Attention(Q,K,V)=softmax(dk QKT)V

但在没有任何顺序信息时,模型无法区分

"猫追狗" 与 "狗追猫"------

因为输入向量只是词向量堆叠,本身无序

因此,我们需要让每个 token 含有"位置意识"。

这就是 位置编码(Positional Encoding, PE) 的本质目标:

将"序列顺序"映射到连续空间中,使模型能感知位置信息的差异。


二、绝对位置编码:正弦余弦的周期构造

Transformer(Vaswani et al., 2017)提出的正弦-余弦位置编码公式如下:
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block"> P E ( p o s , 2 i ) = sin ⁡ ( p o s 1000 0 2 i / d m o d e l ) , P E ( p o s , 2 i + 1 ) = cos ⁡ ( p o s 1000 0 2 i / d m o d e l ) PE_{(pos, 2i)} = \sin\left(\frac{pos}{10000^{2i/d_{model}}}\right), \quad PE_{(pos, 2i+1)} = \cos\left(\frac{pos}{10000^{2i/d_{model}}}\right) </math>PE(pos,2i)=sin(100002i/dmodelpos),PE(pos,2i+1)=cos(100002i/dmodelpos)

✳️ 原理

每个维度对应一个不同频率的正弦波。

这样一来,不同位置的编码在高维空间中呈现出周期性差异,

模型可以通过线性组合学习到相对位置模式。

✅ 优点

  • 不需要训练参数;
  • 理论上可以外推任意位置;
  • 在短序列任务(如翻译)中效果稳定。

❌ 缺点

  • 缺乏相对位置感知;
  • 对超长序列的"相位外推"不稳定;
  • 对旋转、平移不具备几何等价性。

这类编码相当于给每个 token 打上"绝对坐标标签",

但模型无法知道"两个 token 相距多远"或"顺序差异"。


三、相对位置编码:显式建模距离差

2018 年,Shaw et al. 提出相对位置编码:
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block"> score ( i , j ) = q i ⊤ ( k j + r i − j ) d k \text{score}(i, j) = \frac{q_i^\top (k_j + r_{i-j})}{\sqrt{d_k}} </math>score(i,j)=dk qi⊤(kj+ri−j)

其中 ( r_{i-j} ) 是与相对距离 ( i-j ) 相关的嵌入向量。

它直接将相对距离融入注意力分数,使模型能感知"相邻性"或"远近关系"。

✅ 优点

  • 明确引入相对位置信息;
  • 更符合语言中的相对语义(如"前一个词""下一个句子")。

❌ 缺点

  • 复杂度高(存储并检索 <math xmlns="http://www.w3.org/1998/Math/MathML"> r i − j r_{i-j} </math>ri−j);
  • 不便于扩展到线性 Attention;
  • 难以保持几何一致性(矩阵乘法不再对称)。

相对编码的提出让 Transformer 从"静态坐标"走向"相对空间",

但复杂度成为进一步发展的瓶颈。


四、ALiBi:Attention Linear Bias 的高效变体

ALiBi (Press et al., 2022) 提出直接在注意力得分上添加线性距离偏置:
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block"> score ( i , j ) = q i ⊤ k j d k + m ⋅ ( i − j ) \text{score}(i, j) = \frac{q_i^\top k_j}{\sqrt{d_k}} + m \cdot (i - j) </math>score(i,j)=dk qi⊤kj+m⋅(i−j)

其中 ( m ) 是一个可学习的或固定的斜率。

✅ 优点

  • 不引入额外参数;
  • 高效、可扩展;
  • 与绝大多数 Transformer 结构兼容。

❌ 缺点

  • 破坏注意力的几何对称性;
  • 无法解释为显式的几何变换;
  • 相对性仅存在于"分数层面",非向量层面。

ALiBi 之所以受欢迎,是因为它在"工程实用性"与"理论简洁性"之间取得平衡。

但它仍未回答一个更深的问题:

是否存在一种几何操作,使绝对位置编码天然包含相对位置信息?


五、RoPE:旋转式位置编码的几何一致性解法

这一问题由 Su et al. (2021) 在论文《RoFormer: Enhanced Transformer with Rotary Position Embedding》中提出并解决。

他们从一个非常优雅的假设出发:
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block"> ⟨ f ( q , m ) , f ( k , n ) ⟩ = g ( q , k , m − n ) \langle f(q, m), f(k, n) \rangle = g(q, k, m - n) </math>⟨f(q,m),f(k,n)⟩=g(q,k,m−n)

即希望存在一个函数 ( f ),

使得添加绝对位置编码后的内积,仅与相对位置差 ( m-n ) 有关。

这意味着 Attention 的几何结构能天然"编码相对性"。


🧭 一步步推导(二维情形)

我们将二维向量 ((q_0, q_1)) 视作复数 (q = q_0 + i q_1)。

对于位置 (m),我们定义一个位置变换 (f(q, m)),

希望它满足:
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block"> Re [ f ( q , m ) f ∗ ( k , n ) ] = g ( q , k , m − n ) \text{Re}[f(q, m) f^*(k, n)] = g(q, k, m - n) </math>Re[f(q,m)f∗(k,n)]=g(q,k,m−n)

为此,假设:
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block"> f ( q , m ) = q ⋅ e i m θ f(q, m) = q \cdot e^{i m \theta} </math>f(q,m)=q⋅eimθ

代入可得:
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block"> f ( q , m ) f ∗ ( k , n ) = q k ∗ e i ( m − n ) θ f(q, m) f^*(k, n) = q k^* e^{i (m - n)\theta} </math>f(q,m)f∗(k,n)=qk∗ei(m−n)θ

取实部:
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block"> Re [ f ( q , m ) f ∗ ( k , n ) ] = Re [ q k ∗ e i ( m − n ) θ ] \text{Re}[f(q, m) f^*(k, n)] = \text{Re}[q k^* e^{i (m - n)\theta}] </math>Re[f(q,m)f∗(k,n)]=Re[qk∗ei(m−n)θ]

这意味着:

内积的相对相位差就是位置差

即便我们对 ( q, k ) 都进行了"绝对位置编码",

它们之间的内积仍然只依赖于相对距离 ( m - n )。


🌀 几何解释:旋转操作

在二维平面中,这个变换等价于一个旋转矩阵:
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block"> f ( q , m ) = ( cos ⁡ ( m θ ) sin ⁡ ( m θ ) − sin ⁡ ( m θ ) cos ⁡ ( m θ ) ) ( q 0 q 1 ) f(q, m) = \begin{pmatrix} \cos(m\theta) & \sin(m\theta) \\ -\sin(m\theta) & \cos(m\theta) \end{pmatrix} \begin{pmatrix} q_0 \\ q_1 \end{pmatrix} </math>f(q,m)=(cos(mθ)−sin(mθ)sin(mθ)cos(mθ))(q0q1)

更高维的情况,只需把每两个通道视为一对复数通道即可拼接:
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block"> R m = blockdiag ( R θ 0 ( m ) , R θ 1 ( m ) , ... , R θ d / 2 − 1 ( m ) ) R_m = \text{blockdiag}(R_{\theta_0}(m), R_{\theta_1}(m), \dots, R_{\theta_{d/2-1}}(m)) </math>Rm=blockdiag(Rθ0(m),Rθ1(m),...,Rθd/2−1(m))

然后让每个 ( q ) 与 ( k ) 分别乘以对应的旋转矩阵 ( R_m, R_n ),

注意力内积满足:
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block"> ( R m q ) ⊤ ( R n k ) = q ⊤ R n − m k (R_m q)^\top (R_n k) = q^\top R_{n-m} k </math>(Rmq)⊤(Rnk)=q⊤Rn−mk

这正是我们期望的 几何相对性 恒等式。


⚙️ 实现形式(工程化表达)

在实际实现中,我们不会真的乘以矩阵,而是用更高效的向量运算:
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block"> q ~ = q ⊙ cos ⁡ ( m θ ) + q swap ⊙ sin ⁡ ( m θ ) \tilde{q} = q \odot \cos(m\theta) + q_{\text{swap}} \odot \sin(m\theta) </math>q~=q⊙cos(mθ)+qswap⊙sin(mθ)

其中 <math xmlns="http://www.w3.org/1998/Math/MathML"> q swap q_{\text{swap}} </math>qswap 表示将偶数、奇数维度交错取负交换(实现复数乘法),

这样在 PyTorch / TensorFlow / NumPy 中都可以用逐元素操作完成。


✳️ 总结 RoPE 的核心思想:

  1. 通过复数旋转实现绝对编码;
  2. 内积相位差自动体现相对距离;
  3. 保持模长不变(正交变换),不破坏模型稳定性。

因此,RoPE 实现了一个几何意义上的统一:

它不再区分"绝对位置"与"相对位置",

而是通过旋转相位实现了"相对性在几何上的守恒"。


六、长上下文扩展:YaRN 与 NTK-Aware RoPE

随着大语言模型(LLM)应用场景中上下文长度不断增长,传统 RoPE 的固定频率设计面临两个核心问题:

  1. 高维通道的旋转过快

    RoPE 中每一对通道对应一个固定角频率 <math xmlns="http://www.w3.org/1998/Math/MathML"> θ i \theta_i </math>θi,

    随着位置 <math xmlns="http://www.w3.org/1998/Math/MathML"> m m </math>m 增大,高维通道的旋转角度 <math xmlns="http://www.w3.org/1998/Math/MathML"> m ⋅ θ i m \cdot \theta_i </math>m⋅θi 很快超过 <math xmlns="http://www.w3.org/1998/Math/MathML"> 2 π 2\pi </math>2π,导致内积中出现相位模糊(phase aliasing),模型难以区分远距离 token 的相对位置。

  2. 频率分布不均衡

    原始 RoPE 采用指数分布 <math xmlns="http://www.w3.org/1998/Math/MathML"> θ i ∼ 1000 0 − 2 i / d \theta_i \sim 10000^{-2i/d} </math>θi∼10000−2i/d,

    低维通道旋转慢,高维通道旋转快。对于超长序列,低频信息可以外推,高频信息则失效,导致长上下文表示能力下降。


1️⃣ YaRN (Yet another RoPE extension)

核心思想:对原始 RoPE 的频率分布进行再映射,使旋转角度在整个序列长度上更加平滑且均衡。

  • 方法

    1. 对每个通道 <math xmlns="http://www.w3.org/1998/Math/MathML"> i i </math>i 定义新的角频率 <math xmlns="http://www.w3.org/1998/Math/MathML"> θ i ′ = f ( L max , i ) \theta_i' = f(L_{\text{max}}, i) </math>θi′=f(Lmax,i),其中 <math xmlns="http://www.w3.org/1998/Math/MathML"> L max L_{\text{max}} </math>Lmax 是目标最长上下文长度;
    2. 对高维通道角频率进行放缩,降低旋转速率,避免超长序列中的高频"折叠";
    3. 保持低维通道角频率与短序列训练一致,保证预训练权重兼容性。
  • 效果

    • 高频通道在长序列中不再快速旋转,从而保留可分辨的相对相位;
    • 模型可以稳定扩展到 32K、64K 或更长上下文窗口。

2️⃣ NTK-Aware Scaling

背景 :NTK(Neural Tangent Kernel)方法提供了一种分析深度网络训练行为的工具。

NTK-Aware RoPE 通过 核方法理论 对旋转角频率重新标定,使长序列下的内积统计行为与训练短序列保持一致。

  • 方法

    1. 计算原始 RoPE 在短序列长度 (L_0) 下的内积分布;
    2. 对每个通道频率进行缩放,使长序列 (L > L_0) 的内积方差和分布匹配短序列;
    3. 保证旋转操作保持 正交性,不破坏向量模长,避免梯度爆炸或消失。
  • 直观理解

    • 相当于对旋转"做归一化",让每个位置在超长上下文下仍保持可区分;
    • 保持了 RoPE 的几何一致性,同时解决了训练-推理序列长度差异带来的分布偏移。

🔑 两者共同目标
  • 相对位置可分辨性:保证内积计算中的相位差仍然能精确反映相对距离;
  • 旋转可逆性:向量旋转不会产生信息丢失,保持注意力稳定性;
  • 长上下文可扩展性:将 RoPE 从原本数千长度拓展至数万甚至十万 token。

⚙️ 工程实现提示
  • 对于 YaRN,可在初始化位置编码矩阵时直接用新的频率曲线填充;
  • 对于 NTK-Aware,可在训练前计算缩放系数,并在推理时应用同样缩放;
  • 两种方法可与 ALiBi 或线性 Attention 结合,实现超长上下文下的高效注意力机制。

通过 YaRN 和 NTK-Aware,RoPE 不再局限于短序列,而是可以保持相对相位的一致性

为 LLM 提供了可靠的超长上下文建模能力。


七、位置编码的演进路线图

scss 复制代码
绝对位置编码 (Sin/Cos embedding)  
↓ [问题:外推能力差]  
相对位置编码 (Shaw et al., 2018)  
↓ [问题:计算复杂度高]  
ALiBi (Press et al., 2022)  
↓ [问题:几何不一致]  
RoPE (Su et al., 2021)  
↓ [实现几何一致性与相位相对性]  
YaRN / NTK-Aware (2023)  
↓ [实现长上下文稳健扩展]

RoPE 及其后续变体的成功,不仅仅在于性能提升,

而是将 Transformer 的注意力从符号运算,

真正提升到了 几何计算(Geometric Computation) 的层面。


八、总结:从函数编码到几何一致性

阶段 方法 核心思想 几何解释 局限
2017 Sin/Cos 用周期函数编码绝对位置 固定坐标 无相对性
2018 Shaw 显式引入相对距离偏置 距离依赖 复杂度高
2022 ALiBi 距离线性衰减偏置 平面线性近似 缺乏旋转对称
2021 RoPE 复数旋转实现相对性 相位旋转 频率固定
2023 YaRN / NTK 频率重映射 相位几何保真 参数调优难

从工程视角看,RoPE 是一种"计算与几何的最小公倍数":

它在不破坏模型结构的前提下,让注意力具备了相对不变性

这是深度学习几何化的一个关键转折点。


相关推荐
MobotStone1 天前
数字沟通之道
人工智能·算法
Together_CZ1 天前
Cambrian-S: Towards Spatial Supersensing in Video——迈向视频中的空间超感知
人工智能·机器学习·音视频·spatial·cambrian-s·迈向视频中的空间超感知·supersensing
caiyueloveclamp1 天前
【功能介绍05】ChatPPT好不好用?如何用?用户操作手册来啦!——【AI辅写+分享篇】
人工智能·powerpoint·ai生成ppt·aippt·免费aippt
Aileen_0v01 天前
【Gemini3.0的国内use教程】
android·人工智能·算法·开源·mariadb
xiaogutou11211 天前
5款软件,让歌唱比赛海报设计更简单
人工智能
后端小张1 天前
智眼法盾:基于Rokid AR眼镜的合同条款智能审查系统开发全解析
人工智能·目标检测·计算机视觉·ai·语言模型·ar·硬件架构
dalalajjl1 天前
每个Python开发者都应该试试知道创宇AiPy!工作效率提升500%的秘密武器
大数据·人工智能
wheeldown1 天前
【Rokid+CXR-M】基于Rokid CXR-M SDK的博物馆AR导览系统开发全解析
c++·人工智能·ar
爱看科技1 天前
AI智能计算竞赛“战火重燃”,谷歌/高通/微美全息构建AI全栈算力开启巅峰角逐新篇
人工智能
IT_陈寒1 天前
Redis性能翻倍的5个冷门技巧,90%开发者都不知道第3个!
前端·人工智能·后端