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 条回复

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