2025 年 2 月,Kimi(月之暗面)发了一篇论文,说自家 16B 参数的模型训练时用了一个新优化器------训练算力砍半,效果反超。
这个优化器叫 Muon,原作者 Keller Jordan 甚至没发论文,只在 GitHub 上放了个 demo,就被 Kimi 拿去做大规模验证了。之后 GLM、Kimi K3 等模型也纷纷采用。
Muon 不是小修小补。它是十年来第一个真正挑战 AdamW 统治地位的优化器------不是调参,是换了优化的思路。
这篇就把它讲透:AdamW 在干什么,Muon 跟它差在哪,正交化凭什么能翻倍效率。会有数学,但每一步都能跟着走。

一、先回顾:AdamW 到底在干什么
假设权重矩阵 W 的梯度是 G(跟 W 一样大的矩阵)。最朴素的更新就是:
W←W−η GW \leftarrow W - \eta \, GW←W−ηG
η 是学习率。梯度说往哪走就往哪走。
AdamW 在这之上做了两件事:
第一,动量(一阶矩)------把过去几步的梯度做指数加权平均,抹掉 mini-batch 的随机抖动:
Mt=β1Mt−1+GtM_t = \beta_1 M_{t-1} + G_tMt=β1Mt−1+Gt
第二,自适应步长(二阶矩)------对每个参数,看它历史梯度有多大,大的缩步长,小的放步长:
Vt=β2Vt−1+Gt2V_t = \beta_2 V_{t-1} + G_t^2Vt=β2Vt−1+Gt2
W←W−η⋅MtVt+ϵW \leftarrow W - \eta \cdot \frac{M_t}{\sqrt{V_t} + \epsilon}W←W−η⋅Vt +ϵMt
注意:这里的除法是逐元素的。1600 万个参数,就有 1600 万个独立的步长调节。AdamW 把每个参数当成一个独立的标量来调。
AdamW 从来没改过梯度的方向------梯度指向东,AdamW 就往东走,只是走得快一点或慢一点。
这就是 Muon 要突破的地方。
二、梯度的方向天生偏心
要理解 Muon,先得理解梯度的一个结构性缺陷。
权重矩阵 W 是个矩阵(比如 4096×4096)。梯度 G 也是个同样大小的矩阵。对 G 做 SVD 分解:
G=UΣVTG = U \Sigma V^TG=UΣVT
- V 的每一列:输入空间的一个方向(单位正交向量)
- U 的每一列:输出空间的一个方向(单位正交向量)
- Σ 的对角线:每个奇异值 σ_i,表示"这个方向上梯度有多强"
关键事实:大模型里,少数几个 σ_i 特别大,绝大多数接近零。
梯度更新 W -= ηG 的实际效果是什么?展开来看:
W←W−η∑iσi uiviTW \leftarrow W - \eta \sum_i \sigma_i \, u_i v_i^TW←W−ηi∑σiuiviT
每个方向 u_i v_i^T 的更新幅度是 ησ_i。如果 σ_1 = 50,σ_2 = 0.3,σ_3 = 0.01:
- 方向 1 占了 99.4% 的更新
- 方向 2 占 0.6%
- 方向 3 几乎为零
你以为在几千个方向上同时优化,实际只在几个方向上走。 这不是随机噪声,是梯度的结构性偏差------它天生偏心。

为什么会偏心
因为 loss 在不同方向的曲率不同。曲率大的方向,偏导数大,梯度自然大;曲率小的方向,偏导数小。
但"曲率大"不等于"最重要"------那个方向可能只是一个局部陡坡,走两步就到底了。真正通往更优解的路,可能在曲率小的方向上。
梯度天然推荐最陡的方向,不管那个方向是不是通往目的地。
AdamW 能解决这个吗
部分解决。二阶矩 V 把大梯度的步长缩一缩、小梯度的步长放一放。但它是逐元素操作------把 50 降到 5,把 0.01 升到 0.1,方向 1 仍然占 98%。
它调的是步长,不是方向。
三、Muon 的核心操作:正交化
Muon 干的事更激进:直接把 Σ 里所有奇异值拉成 1。
正交化前后的对比:
| 奇异值 | 方向 1 占比 | 方向 2 | 方向 3 | |
|---|---|---|---|---|
| 正交化前 | 50, 0.3, 0.01 | 99.4% | 0.6% | ≈0% |
| 正交化后 | 1, 1, 1 | 33.3% | 33.3% | 33.3% |
U 和 V 不变(方向不变),只把每个方向的强度拉平。所有有信息的方向,都得到同样权重的更新。
理想情况下,正交化就是做 SVD 然后扔掉 Σ:
Gorth=UVTG_{\text{orth}} = U V^TGorth=UVT
但 SVD 太贵------4096×4096 的矩阵做一次 SVD,训练里每步都要做,根本扛不住。
四、实际怎么做:Newton-Schulz 迭代
Muon 不做 SVD,用一个迭代方法近似正交化。推导如下。
目标
让每个奇异值 σ 满足 σ² = 1(正交矩阵的奇异值全是 1)。
等价于解方程:
f(σ)=1−1σ2=0f(\sigma) = 1 - \frac{1}{\sigma^2} = 0f(σ)=1−σ21=0
牛顿法求根
对 f(σ) = 0 用牛顿法:
σk+1=σk−f(σk)f′(σk)\sigma_{k+1} = \sigma_k - \frac{f(\sigma_k)}{f'(\sigma_k)}σk+1=σk−f′(σk)f(σk)
求导:f'(σ) = 2/σ³。代入:
σk+1=σk−1−1/σk22/σk3=σk−σk3−σk2=3σk−σk32\sigma_{k+1} = \sigma_k - \frac{1 - 1/\sigma_k^2}{2/\sigma_k^3} = \sigma_k - \frac{\sigma_k^3 - \sigma_k}{2} = \frac{3\sigma_k - \sigma_k^3}{2}σk+1=σk−2/σk31−1/σk2=σk−2σk3−σk=23σk−σk3
化简:
σk+1=12σk(3−σk2)\sigma_{k+1} = \frac{1}{2} \sigma_k (3 - \sigma_k^2)σk+1=21σk(3−σk2)
这就是那个公式的标量版。 验证不动点:σ = 1 时,f(1) = 0.5 × 1 × (3 - 1) = 1。到 1 就停了。
从标量升级到矩阵
关键:σ² 就是 X^T X 的特征值。所以把标量公式里的 σ² 换成 X^T X,σ 换成 X:
Xk+1=12Xk(3I−XkTXk)X_{k+1} = \frac{1}{2} X_k (3I - X_k^T X_k)Xk+1=21Xk(3I−XkTXk)
这不是类比,是数学上严格等价的------矩阵公式同时对所有奇异值做牛顿迭代。
收敛速度
牛顿法是二次收敛------误差每步平方掉:
σ₀ = 1.2 → σ₁ = 0.936 → σ₂ = 0.994 → σ₃ = 0.99998 → 基本就是 1 了
5 步足够。每步只做 3 次矩阵乘法(X^T X、X × 中间结果、缩放),bf16 就能跑。比 SVD 快几个数量级。
五、完整更新流程对比
把 AdamW 和 Muon 的一步更新并排放:
AdamW:
1. G = ∂L/∂W (算梯度)
2. M = β₁M + G (一阶动量,抹抖动)
3. V = β₂V + G² (二阶动量)
4. W -= η × M / (√V + ε) (逐元素调步长)
Muon:
1. G = ∂L/∂W (算梯度)
2. M = βM + G (动量,抹抖动------跟 AdamW 一样)
3. M_orth = NewtonSchulz(M, 5步) (正交化,纠正方向偏差------Muon 独有)
4. M_final = σ_l × M_orth (层自适应缩放,Kimi 加的)
5. W -= η × M_final (更新权重)
唯一区别在第 3 步:AdamW 用"梯度平方的加权平均"做逐元素步长归一化,Muon 用"正交化"做矩阵级方向纠正。其他步骤几乎一样。
一句话总结这个差异:
AdamW 调步长------每个参数走得快一点还是慢一点。Muon 纠方向------整个矩阵往哪些方向走,走多远。
六、效果:为什么能翻倍
算力效率
Kimi 的 Moonlight-16B-A3B(5.7T tokens 训练)实测数据:达到相同 loss 只需 0.519× FLOPs------约一半算力。
为什么?因为正交化让所有方向都得到有效更新,不再浪费在"只走一个方向"上。同样算一步梯度,Muon 一步走的"有效方向"比 AdamW 多得多。
显存
AdamW 维护两个 buffer(M 和 V,各跟参数一样大)。Muon 只维护一个(M),正交化是实时算的,不存中间结果。优化器状态减半------万亿参数模型上省几百 GB 显存。
适用范围
Muon 的正交化操作天然适合矩阵形状的参数(Attention 的 Q/K/V/O、FFN 的两层权重)。1D 参数(LayerNorm、bias)还是用 AdamW。实际实现是"矩阵参数走 Muon、向量参数走 AdamW"的混合策略。
七、谁在用,谁没确认
已确认使用 Muon:
- Kimi K2 / K3 系列(Moonshot AI 自家)
- Moonlight-16B-A3B(开源验证模型,arXiv:2502.16982)
存疑:
有博客提到 GLM、DeepSeek-V4 也采用了 Muon,但我没有找到官方确认的来源。Kimi 是唯一有论文实锤的。各位如果看到确切消息,欢迎补充。
最新变种
- Newton-Muon(arXiv:2604.01472):用 Newton-Schulz 迭代替代 SVD 的正式化
- NorMuon(OpenReview 2026):更高效可扩展版本
- AMO(arXiv:2605.17806):自适应正交化,动态调整
写在最后
如果这篇只记住一件事:
AdamW 调步长,Muon 纠方向。梯度的方向天生偏心(大奇异值吃掉小奇异值),正交化把所有方向拉平------每个有信息的方向都得到公平更新。

动量是"减震器"------路不平,帮你颠簸平滑掉。
二阶矩是"调速器"------陡的地方慢点,平的地方快点。
正交化是"重新规划路线"------不走最陡的那条路,走所有方向都公平的路。
三者不是互斥的------Muon 也有动量,只是把 AdamW 的二阶矩换成了正交化。
参考资料
- Keller Jordan 原始 Muon 项目(GitHub,无论文):https://github.com/KellerJordan/Muon
- Kimi 论文《Muon is Scalable for LLM Training》(arXiv:2502.16982):https://arxiv.org/abs/2502.16982
- Moonlight-16B-A3B 开源模型:https://huggingface.co/moonshotai/Moonlight-16B-A3B
- 《To Use or Not to Use Muon: How Simplicity Bias in Optimizers Matters》(arXiv:2603.00742):https://arxiv.org/abs/2603.00742
- Newton-Muon(arXiv:2604.01472):https://arxiv.org/abs/2604.01472
- NorMuon(OpenReview 2026):https://openreview.net/forum?id=m1IRWFAMsa