1. 旋转位置编码(RoPE)的数学本质与设计动机
在自然语言处理领域,Transformer架构已经成为大语言模型的基础构建块。然而,标准的Self-Attention机制存在一个根本性缺陷:它对输入序列的顺序是不敏感的。这意味着如果我们打乱输入句子的词序,Attention层的输出结果不会发生变化,这显然违背了语言处理的基本要求。
1.1 传统位置编码的局限性
早期的Transformer模型采用两种主要的位置编码方式:
- 绝对位置编码:如原始Transformer论文中的正弦/余弦函数编码或可学习的位置嵌入
- 相对位置编码:如T5模型中的相对位置偏置或ALiBi编码
这些方法都存在明显不足。绝对位置编码虽然简单直接,但缺乏对相对位置关系的显式建模;相对位置编码虽然能捕捉词与词之间的距离关系,但通常会引入额外的计算开销或破坏Attention矩阵的原始结构。
关键问题:如何设计一种位置编码方式,既能保持Self-Attention的数学优雅性,又能有效建模序列中的位置信息?
1.2 RoPE的几何学直觉
RoPE的核心思想来源于一个深刻的几何学洞察:将词向量视为高维空间中的点,通过旋转操作来编码位置信息。具体来说:
- 将词向量的每一对维度(2i,2i+1)看作二维平面上的坐标
- 对于序列中的第m个位置,我们计算一个旋转角度mθ(其中θ是预设的频率参数)
- 对该位置的词向量应用相应的旋转变换
这种设计的精妙之处在于,旋转操作保持了向量的模长不变(等距变换),同时自然地引入了位置相关性。当计算两个位置m和n的Attention分数时,旋转后的向量点积将只依赖于它们的相对位置差m-n。
1.3 数学形式化表达
RoPE的数学形式可以严谨地表述如下:
给定位置m的查询向量q和位置n的键向量k,旋转位置编码定义为:
f(q,m) = R_m q
f(k,n) = R_n k
其中R_m是一个分块对角矩阵,每个2×2子块对应一个旋转矩阵:
R_m = diag(
[cos(mθ_0), -sin(mθ_0)],
[sin(mθ_0), cos(mθ_0)],
...,
[cos(mθ_d/2-1), -sin(mθ_d/2-1)],
