深度学习优化新星:Muon 与牛顿-舒尔茨迭代的魔法
在深度学习的世界里,优化器就是模型的“导航员”。我们熟悉 Adam、AdamW,也听说过 SGD(随机梯度下降)。但最近,一个名为 Muon 的新型优化器引起了轰动,特别是在训练大规模模型(如 LLM)和生成模型(如 GAN)时表现惊艳。
Muon 的核心秘密武器不是复杂的神经网络结构,而是一个古老的数学技巧——牛顿-舒尔茨迭代。
今天,我们就来拆解一下:这个牛顿-舒尔茨迭代到底是什么?Muon 是如何用它来“驯服”梯度的?以及这其中涉及到的动量、正交和奇异值到底又是什么?
一、什么是牛顿-舒尔茨迭代?
简单来说,牛顿-舒尔茨迭代是一种极其高效的矩阵求逆(或近似求逆)算法。
在数学上,如果你想求一个矩阵 的逆矩阵 ,通常需要做复杂的矩阵分解(如 SVD),计算量非常大。但牛顿-舒尔茨迭代提供了一个简单的迭代公式:
其中 是我们对逆矩阵的猜测, 是单位矩阵。
为什么它这么好用?
- 速度极快:它不需要复杂的分解,只需要做矩阵乘法。现代 GPU(如 NVIDIA 的架构)对矩阵乘法有着极致的优化,这使得该算法在 GPU 上跑得飞快。
- 二次收敛:这意味着每迭代一次,精度大约翻倍。通常只需要 3-5 次迭代,就能得到非常精确的结果。
二、Muon 优化器:给 SGD 装上了“稳定器”
Muon 优化器的本质是 SGD(随机梯度下降)+ 动量 + 牛顿-舒尔茨迭代。
标准的 SGD 动量更新是这样的:
- 计算当前梯度。
- 把它加到历史动量中(惯性)。
- 用这个动量直接去更新权重。
但这有个问题:动量累积得多了,步子容易迈得太大,或者在某些方向上走得太偏,导致训练不稳定。
Muon 的做法是:
在用动量更新权重之前,先把这个动量矩阵扔给牛顿-舒尔茨迭代处理一下。
Muon 的核心逻辑:
不要用原始的动量直接更新权重,而是用牛顿-舒尔茨迭代把动量矩阵“修正”为一个正交矩阵,然后再去更新。
三、为什么要“正交化”?奇异值又是啥?
要理解为什么 Muon 要这么做,我们需要引入两个关键概念:奇异值和正交。
1. 奇异值:矩阵的“拉伸力”
想象一下,你手里拿着一块橡皮泥(代表输入数据),你用一个模具(代表矩阵)去压它:
- 如果模具把橡皮泥拉得很长,那个方向的奇异值就很大。
- 如果模具把橡皮泥压得很扁,奇异值就很小。
- 如果模具只是转动了橡皮泥,没改变形状,奇异值就是 1。
在深度学习中,如果动量矩阵的奇异值很大,意味着更新步子太大,可能会把模型参数“崩飞”;如果奇异值太小,模型就学不动。
2. 正交:完美的“旋转”
如果一个矩阵是正交的,意味着它只会对数据进行旋转,而不会拉伸或压缩(即所有奇异值都严格等于 1)。
这就好比你转动一个魔方,魔方的结构没有任何形变,只是方向变了。
3. 牛顿-舒尔茨在这里干了什么?
牛顿-舒尔茨迭代在 Muon 中的任务,就是把动量矩阵中那些乱七八糟的奇异值(有的很大,有的很小)统统修正为 1。
- 原始动量:可能是一个畸形的更新,步子忽大忽小。
- 经过 NS 处理:变成了一个正交矩阵,更新步子在各个方向上都长度一致,非常稳定。
这就是为什么 Muon 即使在很大的学习率下也能稳定训练的原因——它把更新方向“掰正”了。
四、核心概念速查表
| 概念 | 一句话解释 | 在 Muon 中的作用 |
|---|---|---|
| SGD 动量 | 累积历史梯度的惯性,加速收敛 | 捕捉梯度下降的趋势,提供更新方向 |
| 牛顿-舒尔茨迭代 | ,迭代式近似矩阵求逆 | 以极低的计算成本正交化动量矩阵 |
| 奇异值 | 矩阵在各方向上的“拉伸力”大小 | 衡量更新步子是否忽大忽小 |
| 正交矩阵 | 只旋转、不拉伸压缩(所有奇异值为 1) | 让更新步子在各个方向上长度一致 |
| 二次收敛 | 每次迭代精度翻倍,3-5 次即可 | 保证正交化几乎不增加训练开销 |
五、总结
Muon 优化器之所以强大,是因为它巧妙地结合了经典与现代:
- 它利用 SGD 动量来捕捉梯度下降的趋势。
- 它利用牛顿-舒尔茨迭代(一种古老的数学技巧),以极低的计算成本,将更新矩阵正交化。
这就好比你开着一辆赛车(SGD 动量),但在车轮上装了一个极其精密的自动平衡系统(牛顿-舒尔茨迭代)。无论路面多么颠簸(梯度多么不稳定),这个系统都能瞬间修正车轮的角度,确保车子稳稳地贴地飞行。
这就是数学之美在深度学习中的完美体现!



