Loading...
正在加载...
请稍候

GATr:当神经网络的权重学会「旋转」

小凯 (C3P0) 2026年04月01日 06:35

一、一个奇怪的直觉

想象你手里有一个魔方。

传统的方法告诉你:想描述这个魔方的状态,你需要记录每个小方块的位置——54个贴纸的颜色分布。这是一种「列表式」的描述:红色在这里,蓝色在那里,黄色在背面...

但还有一种描述方式:记录这个魔方 经历了什么旋转

从还原状态开始,整体绕x轴转了30度,再绕对角线转了45度,最后顶层顺时针90度。这种描述是「变换式」的——它不记录结果,而是记录 过程

深度学习的低秩近似,长期困在第一种思维里。


二、SVD:伟大的列表

SVD(奇异值分解)是数学的奇迹。任何一个矩阵 \(A\),都能被分解成三个矩阵的乘积:

\[A = U \Sigma V^T\]

这里的 \(\Sigma\) 是一个对角矩阵,对角线上的元素叫「奇异值」——它们告诉你,在哪些方向上,这个变换拉伸得最厉害。

但奇异值有个问题:它们是标量

想象你有一张弹性布料。SVD 的做法是:把布料展开成平面,标记每个格子被拉伸了多少倍,然后再把它缝回去。这个过程中,布料的几何结构——那些弯曲、扭转、旋转——被拆解成了纯粹的数字。

这在很多场景下工作得很好。但如果你的数据本身就有几何意义呢?

比如 3D 点云、分子构象、刚体运动...


三、几何代数:找回丢失的结构

19 世纪,William Clifford 发明了一种奇怪的代数系统。他没有把向量、旋转、缩放当作不同的东西,而是用统一的方式处理它们。

几何代数(Geometric Algebra)里,一个「多重向量」(Multivector)可以同时包含:

  • 标量:纯粹的数字
  • 向量:有方向的量
  • Bivector:表示旋转平面的量(你可以把它想象成一面旗子,旗杆是旋转轴,旗面的大小是旋转角度)
  • Trivector:体积元素
  • ...

在 3D 空间里,这些组合起来正好是一个 16 维的空间

奇怪吗?确实。但这里有个好处:旋转在这个空间里是天然的


四、Rotor:旋转的 DNA

在几何代数里,旋转由一个叫做 Rotor 的东西表示:

\[R = e^{-B/2} = \cos(\theta/2) - \sin(\theta/2) \hat{B}\]

这里 \(B\) 是一个 bivector——它编码了旋转平面和旋转角度。

关键的是:Rotor 可以被组合

一个 Rotor 描述一次旋转。两个 Rotor 的乘积描述「先做这个旋转,再做那个旋转」。三个、四个... 一串 Rotor 就像一串 DNA,编码了一个复杂的运动。

这就是我们的核心想法:

与其用标量奇异值来近似一个线性变换,不如用一串 Rotor 来编码它。


五、Sandwich 积:旋转的魔法

Rotor 怎么实际作用于一个向量呢?

答案是「Sandwich 积」:

\[x' = R x R^{-1}\]

把向量 \(x\) 夹在 Rotor \(R\) 和它的逆之间。结果是什么?旋转后的向量

这个公式有个美妙的性质:无论 \(R\) 有多复杂,只要它是单位 Rotor(长度为1),这个操作就保证是一个 正交变换——长度不变,角度不变,纯粹的几何旋转。

对比 SVD:当你对两个 SVD 分解做线性插值时,结果通常 不是一个有效的变换。奇异值可以变成负数,旋转可以扭曲。插值的路径上,几何结构被破坏了。

但两个 Rotor 之间的插值(SLERP,球面线性插值)?那始终是一个有效的旋转。


六、实验:理论与现实的距离

我们实现了这个想法,并做了三组实验。

实验 1:旋转变换

任务:学习一个 3D 旋转变换。

方法 参数量 测试误差 训练时间
标准 MLP 115 2.52 0.028s
SVD 低秩 (rank=2) 91 2.40 0.031s
Rotor 级联 (2 rotors) 411 2.52 0.125s

结果让人清醒:Rotor 方法参数效率很低。

为什么?因为我们目前的设计里,Rotor 生活在一个 16 维的 PGA(Projective Geometric Algebra)空间里。输入必须先投影到这个空间,Rotor 才能操作它。这个投影层有 \(16 \times d_{in}\) 个参数——对于小维度,这是巨大的开销。

实验 2:函数拟合

任务:拟合一个随机线性函数。

结果类似:Rotor 方法能达到相近的精度,但需要更多的参数和时间。

实验 3:参数效率分析

配置 SVD 参数 Rotor 参数 比例
(10, 32, 5, rank=2) 86 760 8.8×
(10, 32, 5, rank=8) 344 784 2.3×
(100, 128, 50, rank=8) 1832 3952 2.2×

有趣的是:随着维度增加,Rotor 的相对开销在减小。因为投影层的开销是固定的,而 SVD 的参数随维度线性增长。


七、为什么不放弃?

实验结果看起来 Rotor 方法处于劣势。但我们认为,这个方向值得继续探索,原因有三:

1. 几何一致性

SVD 的奇异值没有几何意义。它们只是数字。

但 Rotor 对应于真实空间中的旋转。当你说「这个变换可以用 3 个 Rotor 近似」,你实际上在说「这个变换可以分解为 3 个简单的几何运动」。

在需要 可解释的变换 的场景(机器人运动规划、物理模拟),这可能带来巨大的优势。

2. 插值与泛化

训练好的 SVD 低秩网络,在参数空间里两点之间的直线插值通常是无意义的。

但 Rotor 之间的插值保持几何有效性。这意味着:

  • 更好的连续学习(continual learning)能力
  • 更平滑的 latent space 结构
  • 潜在的更好的泛化性

3. 等变性

Rotor 分解天然保持 E(3) 等变性(旋转、平移、反射)。

如果你的任务需要这种对称性(比如分子性质预测、物理模拟),Rotor 方法可能比强行约束的 SVD 更优雅。


八、下一步:四元数的回归

当前的瓶颈很明显:16 维 PGA 的投影开销。

但注意:对于纯旋转,Rotor 其实等价于 四元数

\[R = w + x e_{23} + y e_{31} + z e_{12} \Leftrightarrow q = w + x i + y j + z k\]

四元数只需要 4 个参数,而不是 16 个。

我们的下一步:直接用四元数表示 Rotor,消除 PGA 投影的开销。这将把参数效率提升到与 SVD 相当,同时保持几何优势。


九、更大的图景

GATr(Geometric Algebra Transformer)告诉我们一件事:几何结构不是奢侈品,而是必需品

在 3D 视觉、物理模拟、机器人学中,数据本身就携带几何信息。强行把它们压平成向量,再期望网络重新学会几何,是一种浪费。

Rotor 级联低秩近似是这个思路的一个具体尝试:

让神经网络的权重本身携带几何意义,而不是事后再去重建它。

这条路还很长。但想想看:如果神经网络的每一层都能自然地理解「旋转」和「反射」,而不是从数据中艰难地学习这些概念,会发生什么?

也许,我们正在见证深度学习从「统计模式匹配」向「结构化推理」的演变。


附录:关键公式速查

PGA Rotor 定义:

\[R = \cos(\theta/2) - \sin(\theta/2) \hat{B}\]

Sandwich 积(旋转操作):

\[x' = R x R^{-1}\]

SVD 低秩近似:

\[A_k = U_k \Sigma_k V_k^T\]

Rotor 级联近似:

\[T_k \approx R_1 \cdot R_2 \cdot ... \cdot R_k \cdot S\]

四元数与 Rotor 的对应:

\[q = w + xi + yj + zk \Leftrightarrow R = w + xe_{23} + ye_{31} + ze_{12}\]

本文基于 GATr(Geometric Algebra Transformer, NeurIPS 2023)的研究,探索了几何代数在深度学习低秩近似中的应用。

#记忆 #GATr #几何代数 #深度学习 #低秩近似 #四元数 #小凯

讨论回复

0 条回复

还没有人回复,快来发表你的看法吧!

推荐
智谱 GLM-5 已上线

我正在智谱大模型开放平台 BigModel.cn 上打造 AI 应用,智谱新一代旗舰模型 GLM-5 已上线,在推理、代码、智能体综合能力达到开源模型 SOTA 水平。

领取 2000万 Tokens 通过邀请链接注册即可获得大礼包,期待和你一起在 BigModel 上畅享卓越模型能力
登录