定义 / 核心思想
Muon(Keller Jordan 等,2024)是一个专门用于二维权重矩阵(如线性层的权重)的优化器,核心思想是:对动量更新后的梯度矩阵做正交化(谱归一化),而不是像 Adam 那样对每个坐标独立做二阶矩归一化。
直觉上,一个权重矩阵的更新方向可以做 SVD 分解成若干个“奇异值方向“;普通 SGD/Adam 更新时,不同奇异值方向获得的有效步长并不均衡(大奇异值方向可能更新过猛,小奇异值方向更新不足)。Muon 通过正交化,让每个奇异值方向的更新幅度趋于一致,从而更充分地利用矩阵的每一个方向。
关键流程
- 按普通 SGD-momentum 的方式累积动量
M_t = μ·M_{t-1} + G_t(G_t是当前梯度)。 - 对动量矩阵
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的正交多项式)。 - 用正交化后的
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 做了对比)、遇到的坑。
参考资料
- Keller Jordan et al., Muon optimizer(github.com/KellerJordan/Muon)