训练与优化 / 优化器 原理笔记入门 3 分钟阅读 查看源文件 ↗

Muon 原理#

TL;DR#

本页内容7 个部分

1. 背景与问题#

Momentum 保留整张梯度矩阵的尺度差异;Adam 则分别处理每个元素。如果把一层视为线性映射,这两种视角都没有直接控制矩阵在各个奇异方向上的步幅。

Muon 对隐藏层的动量矩阵作谱变换:保留左右奇异向量,压平非零奇异值,再用处理后的方向更新权重。它改变的是矩阵更新几何。[1]

2. 目标与定义#

设权重与 batch 梯度为 W,Gt∈Rm×nW,G_t\in\mathbb R^{m\times n}。先用 Mt=βMt−1+GtM_t=\beta M_{t-1}+G_t 累积动量,M0=0M_0=0;这里暂不加入 Nesterov 等实现选项。

希望把“大奇异值方向走得很远、小奇异值方向走得很少”的更新,变成非零奇异方向上更均衡的方向。用只包含非零奇异值的紧致分解写成 Mt=UrΣrVr⊤M_t=U_r\Sigma_rV_r^\top,其中 rr 为秩。

3. 方法与推导#

3.1 从谱分解得到理想方向#

将 Σr\Sigma_r 中每个正奇异值换成 1,得到 Qt∗=UrVr⊤Q_t^*=U_rV_r^\top。例如 M=diag⁡(100,1)M=\operatorname{diag}(100,1),理想方向为 diag⁡(1,1)\operatorname{diag}(1,1);它保留两个方向,去掉 100 倍的幅度差。

这不是逐元素 RMS 归一化。秩不足时,上式也不会补出新的非零方向。为什么该方向对应算子范数约束下的最陡下降,由几何解释推导。

3.2 有限计算怎样近似这个方向#

精确 SVD 的成本较高。实际实现先归一化动量,再用少量 Newton–Schulz 多项式迭代近似谱变换,得到 QtQ_t。有限步结果不保证奇异值严格为 1;迭代系数和步数必须随实现记录。[1]

3.3 方向与尺度怎样组成更新#

把尺度因子记为 s>0s>0,学习率为 η\eta,可选衰减系数为 λ\lambda,核心更新为:

Wt=(1−ηλ)Wt−1−ηsQt.W_t=(1-\eta\lambda)W_{t-1}-\eta sQ_t.

ss 可能依赖矩阵形状;它控制处理后方向的总体量级。动量归一化与具体尺度规则需要联合确定,不能只凭这个示意式照搬学习率。

4. 计算过程#

手算理想 polar 方向的效果。设当前 W=diag⁡(2,2)W=\operatorname{diag}(2,2)、动量 M=diag⁡(100,1)M=\operatorname{diag}(100,1),取 η=0.01\eta=0.01、s=1s=1、λ=0\lambda=0:

步骤 结果
非零奇异值 100、1
理想处理后方向 Q∗=diag⁡(1,1)Q^*=\operatorname{diag}(1,1)
直接用动量更新 W−0.01M=diag⁡(1,1.99)W-0.01M=\operatorname{diag}(1,1.99)
用理想 Muon 方向更新 W−0.01Q∗=diag⁡(1.99,1.99)W-0.01Q^*=\operatorname{diag}(1.99,1.99)

这里隔离了谱变换的作用。它不是有限步 NS 的运行结果,也没有比较调参后最优的训练效果;实际近似算例在进阶篇计算。

5. 比较与边界#

原始参考实现主要将 Muon 用于隐藏层矩阵,embedding、输出头、bias 与归一化参数交给 AdamW 等方法。参数如何分组、矩阵如何切分,都会改变处理的算子。[1]

谱方向更均衡不自动意味着任务更好;还需比较近似质量、更新尺度、优化器耗时与训练结果。NS 的计算重排由 Gram Newton–Schulz维护。

参考资料#

  1. Muon 原始说明(2024). Definition 与 Design:矩阵动量、有限步 Newton–Schulz 与参数分组;参考实现。

相关阅读路线

完成一次训练更新 ↗理解优化器 ↗