从李群的视角看 ROPE 旋转位置编码
最近比较闲,学了点数学,李群李代数什么的,然后一下就联想到了ROPE,所以这次系统地从数学视角回顾了一下。我也是边写边查漏补缺,所以我尽量写得容易阅读并且适合学习,不仅仅是当成自己的笔记,可以带点科普性质,希望不那么熟悉相关内容的同学也能流畅阅读。
群
学过群论的同学都知道,我们可以用群来描述旋转。我们以三角形的旋转群 $C3$ 作为例子,它包含了旋转 0°、旋转 120° 和 旋转 240° 这三个操作。群需要满足四个性质:
封闭性:先旋转 120°,再旋转 120°,最后等于旋转 240°,这个操作仍然是原操作集合的一员。
单位元:需要有一个无用的操作(旋转 0°)
逆元:任何操作都有逆操作,比如旋转 120°的逆操作是旋转 240°,相当于反向转 120°
结合律:$(A\cdot B)\cdot C = A \cdot (B \cdot C)$
但是,这是一种离散的有限群。如果我们考虑一个圆的旋转群呢?我们可以旋转任意小的角度。这种“连续”的群就称为李群
李群
从定义上看,李群是一个集合,它既是一个群、又是一个光滑流形。比如说二维平面上的所有旋转矩阵 $\begin{pmatrix}\cos\theta & -\sin\theta \\ \sin\theta & \cos \theta\end{pmatrix}$ 就构成一个李群 $SO(2)$
到这里大家肯定知道,为什么我会说从李群的视角看 ROPE 了。
李代数
为了研究这个连续的李群,我们选择研究它在单位元附近的微元。毕竟只需要掌握了旋转 0.00…01°,多次应用就可以得到一个更大的旋转。我们将李群 $G$ 在单位元 $e$ 处的切空间 $T_eG$ 称为李代数 $\mathfrak{g}$。李代数就像是李群的微分版本,我们以旋转群 $SO(N)$ 为例来说明。
任取一个李群元素 $R(t) \in SO(N)$,我们现在考虑李代数的元素 $X$。如果说李群元素 $R(t)$ 是旋转角度,那么李代数元素 $X$ 就可以理解为角速度。有方程:
其中 $X$ 代表的是相对于单位元的变化率,对于 $R(t)$ 而言,它的变化率需要把 $X$ 迁移到自己的坐标系上。
解微分方程,我们得到 $R(t) = e^{tX}$。
所以,对于 $SO$ 这个李群,它的李代数 $\mathfrak{so}$ 中的元素的矩阵指数,就是李群中的元素。有一种积分的感觉。我们可以对 $R(t)^TR(t) = I$ 关于时间 $t$ 求导:
代入 $t=0$,又因为我们知道 $R(0) = I$,$X = \dot{R}(0)$,所以:
所以,旋转群 $SO(N)$ 的正交性可以导出它的李代数 $\mathfrak{so}(N)$ 的元素必须是反对称的。
李括号
李代数是一个向量空间,基础配置只有向量元素间的加法。但对于群而言,加法不是自然的,因为加法总满足交换律( $+1+2$ 与 $+2 +1$ 相同),群上的操作更像是不可交换的乘法,例如先翻转再旋转,和先旋转再翻转,会得到不同的结果——这就相当于是先乘翻转算子 $X$ 还是先乘旋转算子 $Y$ 的区别。因此,我们希望给李代数也安装上乘法。不过挪威数学家索菲斯 · 李告诉我们,我们只需要衡量乘法操作不可交换的程度即可,称为李括号:
怎么理解这个李括号呢?按照我的理解,它其实只是群操作在微观的切空间的投影。
设我们有一个群 $G$,并选定一个群元素 $g \in G$。我们定义一个映射 $\Psi_g: G \rightarrow G$,它的作用规则是:
它被称为共轭作用。该映射固定了单位元,$\Psi_g(e) = geg^{-1} = e$,我们可以研究单位元附近加上微扰的变化,也就是单位元 $e$ 处的切空间,即李代数 $\mathfrak{g}$。
不妨将这个微元当作一条经过单位元 $e$ 的曲线 $x(t)$,其中 $x(0) = e$,它的导数速度向量是 $Y = \dot{x}(0) \in \mathfrak{g}$
考虑它的共轭作用
对 $t$ 求导并令 $t=0$:
这个新向量 $gYg^{-1}$ 也在李代数 $\mathfrak{g}$ 中,因为李代数对共轭封闭。
我们可以将这个映射视为一个线性算子,实际上它被称为伴随表示:
伴随表示 $\text{Ad}_g$ 描述了群元素 $g$ 如何旋转或拉伸整个李代数空间。
由于李群是光滑的,我们可以进一步求导,考虑 $g$ 的微扰如何影响伴随表示算子。同样,我们视 $g$ 为随时间 $s$ 变化的曲线 $g(s)$,且 $g(0) = e$,速度向量为 $X= \dot{g}(0) \in \mathfrak{g}$
对 $\text{Ad}_{g(s)}(Y) = g(s)Yg(s)^{-1}$ 关于 $s$ 求导,并令 $s=0$
所以,李括号正是共轭作用的微分的微分。
我可以举几个实际的例子来帮助理解。以 $SO(2)$ 为例,若 $g$ 是李群的元素,代表旋转 $\theta$ 度;$Y$ 是李代数的元素,代表了角速度; 那么 $\text{Ad}_g(Y)$ 就是这个角速度经过了 $g$ 的变换,是从 $\theta$ 开始的角速度。$\text{ad}_XY$ 就是当 $\theta$ 无穷小时,这个角速度的变化率。
你会发现在 $SO(2)$ 中,好像 $\text{Ad}_g(Y)$ 这步是无意义的,不管从哪个 $\theta$ 开始,角速度都一样。因为 $SO(2)$ 是一个交换群(阿贝尔群),我们先转 $30°$ 再转 $60°$ 与先转 $60°$ 再转 $30°$ 是一样的。对于交换群而言,共轭作用等于恒等映射:
从而,$\text{Ad}_g$ 变成了恒等算子;$\text{ad}_X(Y) = 0$,李括号为 0,交换操作无影响。
但在 $SO(3)$ 中就不一样了。我们假设 $g$ 是绕 Z 轴旋转 $\theta$, $Y$ 是绕 $X$ 轴的角速度,那么 $\text{Ad}_g(Y)$ 就会把这个绕 $X$ 轴的角速度绕 $Z$ 轴旋转 $\theta$。如果 $\theta=90°$,那么就变成了绕 $Y$ 轴的角速度,角速度矢量旋转了 $90°$。$\text{ad}_X(Y)$ 衡量的就是,当 $\theta$ 无限小时,这个角速度矢量的变化,也可以称为角加速度。
综上,李括号可以看作是群性质在微分切空间上的投影。例如,李括号还要求具有反对称性,即 $[X, Y] = -[Y, X]$,这个也很好理解,就来源于群乘法的不可交换性嘛。自然如果李括号恒为零,那就说明是个交换群。
李括号还要求双线性。这是因为李括号所操作的李代数的元素本来就在切空间上,作为一个向量空间自然有线性,李括号的定义 $[X, Y] = XY - YX$ 自然继承这种线性结构。
最后,回顾群的性质,还有一条结合律。群的结合律能够导出,共轭作用 $\Psi_g$ 是群的自同构,即:
并且,它的微分 $\text{Ad}_g$ 也是李代数的自同构:
我们对上式关于 $g$ 求导,其速度向量为 $X$,则左式为:
右式为:
即
上式被称为雅可比恒等式。
总结一下,李括号的双线性、反对称性、雅可比恒等式,都是群、光滑流形的属性在微观尺度下的投影罢了。
ROPE
ROPE 旋转位置编码是现在大部分大模型位置编码的选型。它用一种绝对编码的方式为隐状态赋予了相对位置编码的效果。我们以一个隐状态维度 $d=2$ 为例,对于一个在位置 $m$ 的 token,其 $q, k$ 向量会被旋转 $m\theta$ 角度:
这其实就是复数乘法 $q’ = q \cdot e^{i m\theta}$。由此,当我们计算 Attention Score 时,有:
也就是说,我们施加的绝对位置编码,在 QK 交互时的影响却仅限于相对位置关系,自动获得了一种平移不变性。
推广到 $d$ 维,RoPE 选择的是一种 两维 为一组的构造方式,形成了了一个巨大的块对角旋转矩阵,我们记为花体的 $\mathcal{R}_m \in SO(d)$:
这里就很值得说道说道了,这其实是一个非常强的归纳偏置,主要包含两个部分:一个是将旋转限定在了李群 $SO(N)$ 的最大环面上;另一个是限制了每个子群的旋转角度。
极大环面
第一点,我们可能会怀疑,RoPE 这样二维为一组地组织旋转,是不是引入了损耗?只限定在一些子平面上?
极大环面指的是,包含在李群 $G$ 中的、最大的连通的阿贝尔(交换)子群。例如 $SO(3)$ 的最大环面是 $SO(2)$,$SO(4)$ 的最大环面是 $SO(2) \times SO(2)$
极大环面定理告诉我们,李群 $G$ 中的任意一个元素 $g$,都共轭于极大环面 $T$ 中的某个元素 $t$
也就是说,不管一个高维旋转矩阵看起来多么复杂、多么纠缠,只要我们做一次基变换,它本质上都只是在若干个独立平面上的简单旋转。
用我们更熟悉的矩阵语言来说,就是对于任意一个实反对称矩阵 $X \in \mathfrak{so}(d)$,一定存在一个正交基变换矩阵 $U\in O(d)$,使得 $U^TXU$ 变成 $2\times 2$ 的块对角矩阵:
其中 $\pm i \lambda_k$ 是 $X$ 的特征值
我们不妨假设先取 $SO(d)$ 上的两个旋转矩阵 $R_m, R_n \in SO(d)$,根据极大环面定理,我们总有:
我们把这个全空间旋转代入 Attention 中求相关性分数的公式:
显然,我们只要令 $\tilde{W}_q = U^TW_q, \tilde{W}_k = U^TW_k$ 即可。原本 $W_q$ 和 $W_k$ 就没有任何约束,基变换早就隐式地融入到 $\tilde{W}_q$ 与 $\tilde{W}_k$ 中了。
平移不变性
RoPE 有一个强调的好处是,它刻画了相对位置关系,具有平移不变性。
从群的角度来看,这代表着对应的旋转操作是可交换的。我们在全空间 $SO(d)$ 里取两个生成元 $X$ 和 $Y$,当且仅当 $[X, Y]=0$ 时,才有 $\text{exp}(X)\text{exp}(Y) = \text{exp}(X+Y)$
我需要强调,RoPE 的平移不变性并非来源于它将旋转操作限制到了 $SO(d)$ 的极大环面上,从而利用了 $SO(2)$ 的可交换性。实际上,对于 1D 的文本序列,$R_m$ 和 $R_n$ 只涉及一个生成元 $X \in \mathfrak{so}(d)$, 旋转矩阵分别是 $R_m = \text{exp}(mX)$ 和 $R_n = \text{exp}(nX)$。而 $[mX, nX] = 0$ 恒成立,因此总有:
它天然就具有完美的平移不变性!这种平移不变性来源于李群本身,而不是来源于 RoPE 的二维块对角结构。
极大环面的优势
所以 RoPE 强制使用 $\mathcal{R}_m$ 而不是 $R_m$,在我看来实际上并没有限制表达能力,反而是帮模型省去了显式计算 $U$ 的过程,将这部分工作转嫁给了本就需要学习的 $W_q$ 和 $W_k$,把原来 $SO(d)$ 的 $\frac{d(d-1)}{2}$ 个自由度锁定为了对角线上的 $\frac{d}{2}$ 个自由度(甚至这 $\frac{d}{2}$ 个频率也是不学的,相当于给模型加了一个极其强大的结构化先验,迫使模型去适应这个空间)。不知道苏神当时有没有思考这些问题,还是只是靠个人的数学直觉觉得这种做法不错。
不过,我不确定 2D 序列如图像、视频的位置编码是怎么实现的,如果位置是 $(x, y, t)$ 的话,那它们采取的生成元是不同的?这个时候可能就是不可交换的,需要用到 RoPE 的极大环面偏置。我需要去请教一下专家,再完成剩下的部分。
锁定的特征频率
因此,RoPE 的归纳偏置的主要争议点,我觉得就在于它强行限定了各个子群的旋转频率上,实际上也就是强行设定了整个空间的特征值。其实这很难说是好事还是坏事,正因为我们强行编码了一组频率,我们才能通过调整特定频率来实现长文外推等功能,否则如果我们学的是一个 $SO(d)$ 的旋转矩阵,我们想要 scaling 的话根本无法下手。
Conclusion
我们从代数结构的角度分析了一下 RoPE,理解了 RoPE 引入的关键偏置其实是固定的旋转频率。对我而言,这个认识就像是一个照妖镜,能够看出很多文章的修改究竟是否本质,还是改动实际上并没有增加表达力。我之后会再写一篇文章,基于本篇文章的认识,系统地讨论一些 RoPE 的变体甚至是所有位置编码的统一视角。包括但不限于 FoPE、GRAPE 和 PaTH,特别是今天(4.10)和 xr 哥聊,被介绍了 GRAPE。其实,感兴趣的同学可以直接把 这篇 blog 和 感兴趣的文章 同时喂给 AI,让它锐评一下就可以了。
How to site
1 | @misc{zhang2026liegrouprope, |









