Muon 优化器

优化算法 最后更新:2026-07-13

定义 / 核心思想

Muon(Keller Jordan 等,2024)是一个专门用于二维权重矩阵(如线性层的权重)的优化器,核心思想是:对动量更新后的梯度矩阵做正交化(谱归一化),而不是像 Adam 那样对每个坐标独立做二阶矩归一化。

直觉上,一个权重矩阵的更新方向可以做 SVD 分解成若干个“奇异值方向“;普通 SGD/Adam 更新时,不同奇异值方向获得的有效步长并不均衡(大奇异值方向可能更新过猛,小奇异值方向更新不足)。Muon 通过正交化,让每个奇异值方向的更新幅度趋于一致,从而更充分地利用矩阵的每一个方向。

关键流程

  1. 按普通 SGD-momentum 的方式累积动量 M_t = μ·M_{t-1} + G_tG_t 是当前梯度)。
  2. 对动量矩阵 M_t近似正交化:不直接做代价高的 SVD,而是用 Newton-Schulz 迭代快速近似计算 M_t 的正交化版本 O_t(迭代形式类似 X_{k+1} = a·X_k + b·X_k(X_k^T X_k) + c·X_k(X_k^T X_k)^2,几步迭代后逼近 M_t 的正交多项式)。
  3. 用正交化后的 O_t 更新参数:θ_{t+1} = θ_t - η·O_t

常见理解误区

  • Muon 只适用于二维参数矩阵(Linear/Attention 里的权重),embedding 层、输出层(通常是词表大小相关的层)、以及一维参数(LayerNorm、bias)仍然要用 AdamW 这类逐坐标优化器——实践中 Muon 是和 AdamW 混合使用的,不是全量替换。
  • Muon 不是“更好的 Adam 平替“这么简单,它改变的是更新方向的几何结构(各向同性化),收益和模型结构(矩阵形状、层类型)相关,不是万能提速。
  • Newton-Schulz 迭代是近似正交化,迭代步数是效果和计算开销之间的权衡,不是精确 SVD。

我在项目中的应用

在南方科技大学 CIAM 实验室以 ES 算法与模型融合算法为主要研究方向的过程中接触到的优化器,零阶优化(ZO)是次要方向。

TODO: 补充具体做了哪些实验(哪些层用了 Muon、和哪些 baseline 做了对比)、遇到的坑。

参考资料

0%