## 一、一个奇怪的直觉
想象你手里有一个魔方。
传统的方法告诉你:想描述这个魔方的状态,你需要记录每个小方块的位置——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 条回复还没有人回复,快来发表你的看法吧!