Muon Optimizer:梯度白化与 SVD
| 字段 | 内容 |
|---|---|
| 作者/整理 | 基于公开课程资料整理 |
| 来源 | 五道口纳什 |
| 日期 | 2025 |

引言:为什么需要 Muon?
Muon 是 K2 训练背后的关键优化器,由 Keller Jordan 提出。它相比 AdamW 或带动量的 SGD 具有更快的训练效率:达到相同 loss 所需的数据量或算力更少。Keller Jordan 正是凭借这篇工作拿到了 OpenAI 的 offer,可见业界对该优化器的高度认可。
Muon 的核心洞察
- 神经网络的 2D 参数矩阵大多具有很高的条件数(低秩)
- 梯度更新被少数主导方向(dominant directions)控制
- 对梯度矩阵进行正交化/白化,可以放大稀有方向的尺度
- 这些稀有方向对学习至关重要
梯度白化(Gradient Whitening)
问题背景
在用 SGD 或 AdamW 优化神经网络时,经验观察发现:大部分 2D 参数矩阵(隐藏层权重)的条件数很高,即矩阵是低秩的。这导致梯度更新在少数方向上幅度很大,而在大量“稀有方向”上信号极弱。
白化的核心操作
Muon 的核心:梯度白化
对梯度矩阵进行白化处理,抹去梯度的大小/尺度,只保留方向。这使得:
- 主导方向的过大影响被抑制
- 稀有方向的微弱信号被放大
- 所有方向获得均等的更新尺度
白化操作通过 SVD(奇异值分解)实现:
即去掉奇异值矩阵 \(\Sigma\),只保留旋转部分 \(U\) 和 \(V^T\)。
SVD 的几何意义
对于梯度矩阵 \(G\):
- \(U\):左奇异向量,表示输出空间的方向
- \(\Sigma\):奇异值,表示各方向的“重要程度”(尺度)
- \(V^T\):右奇异向量,表示输入空间的方向
去掉 \(\Sigma\) 后,\(\hat{G} = UV^T\) 是一个正交矩阵,保证了所有方向的更新幅度一致。
本章小结
梯度白化是 Muon 的核心操作:通过 SVD 去掉奇异值,将梯度矩阵正交化。这使得原本被主导方向压制的稀有信号得以放大,加速了模型学习。
Muon 的适用范围
哪些参数用 Muon?
Muon 不是全局替代品
Muon 只用于优化隐藏层的 2D 参数矩阵。以下参数仍使用标准优化器(AdamW 或带动量的 SGD):
- Input Embedding 层
- Output(LM Head)层
- 标量参数(Scalar)
- 一维向量参数(如 RMSNorm 的 \(\gamma\))
实际训练中,Muon 与 AdamW/SGD 组合使用:隐藏层矩阵走 Muon,其余走标准优化器。
对输出层的特殊考虑
对于输出层(分类层),我们希望学到的不同特征对最终分类贡献不同的权重。如果对输出层也做白化,会抹掉这种有意义的尺度差异。因此输出层不适用 Muon。
本章小结
Muon 的适用范围严格限定在隐藏层的 2D 矩阵参数上,与标准优化器互补使用。
从条件数理解低秩性
条件数的含义
矩阵的条件数定义为最大奇异值与最小奇异值之比:
条件数越大,矩阵越“病态”(ill-conditioned),意味着信息集中在少数方向上。
对训练的影响
高条件数导致:
- 梯度在主导方向上很大,在稀有方向上很小
- 标准优化器(如 SGD)需要很多步才能在稀有方向上积累足够的更新
- 训练效率低下
Muon 通过白化将所有方向的“重要程度”拉平,从而加速收敛。
本章小结
高条件数是神经网络参数矩阵的普遍特征,它导致标准优化器在稀有方向上收敛缓慢。Muon 的白化操作本质上是在解决这个问题。
总结与延伸
- Muon 通过梯度白化(SVD 去奇异值)加速神经网络训练
- 核心洞察:隐藏层矩阵高条件数 \(\Rightarrow\) 稀有方向信号弱 \(\Rightarrow\) 白化放大
- 只用于 2D 隐藏层参数,与 AdamW/SGD 组合使用
- 达到相同 loss 所需的数据/算力显著减少
拓展阅读
- Keller Jordan 的 Muon 官方博客
- K2 技术报告中关于优化器的章节
- “Shampoo” 优化器:另一种基于矩阵预条件的方法