# Muon

Author: Fanyi Pu

Published: 2026-09-11

Canonical: <https://pufanyi.com/blog/ml/ml-revisit/optm/muon>

从矩阵更新的奇异值理解 Muon，以及 Newton–Schulz 近似、学习率缩放和大规模训练中的取舍。

训练一个 linear layer 时，参数是矩阵，但 SGD 和 AdamW 的更新规则并没有充分利用这个矩阵的结构。Muon ([Jordan et al., 2024](https://pufanyi.com/blog/ml/ml-revisit/optm/muon#bib-jordan2024muon)) 的做法是：先用 momentum 平滑梯度，再调整更新矩阵的奇异值，让不同方向的更新具有相近的尺度。名字里的 **MomentUm Orthogonalized by Newton–Schulz**，说的就是这个过程。

## 从逐元素缩放到矩阵更新

设一层的计算是 $y=Wx$，其中 $W\in\mathbb{R}^{m\times n}$，梯度为 $G_t=\nabla_W\mathcal{L}_t$。SGD 直接沿着 $-G_t$ 更新。AdamW ([Loshchilov & Hutter, 2019](https://pufanyi.com/blog/ml/ml-revisit/optm/muon#bib-loshchilov2019decoupled)) 则保存梯度的一阶、二阶矩估计 $M_t,V_t$，用经过 bias correction 的 $\widehat M_t,\widehat V_t$ 做逐元素缩放：

$$
W_{t+1}=(1-\eta_t\lambda)W_t
-\eta_t\frac{\widehat M_t}{\sqrt{\widehat V_t}+\epsilon}.
$$

这里的除法和平方根都逐元素进行，$\eta_t$ 是 learning rate，$\lambda$ 是 decoupled weight decay 的系数。AdamW 能根据每个坐标的历史梯度调整步长，但矩阵还描述了输入方向到输出方向的映射。Muon 从这些方向入手构造更新。

先看不带 Nesterov 的版本。令 $M_{-1}=0$，定义

$$
\begin{aligned}
M_t&=\beta M_{t-1}+(1-\beta)G_t,\\
O_t&\approx\operatorname{Polar}(M_t),\\
W_{t+1}&=(1-\eta_t\lambda)W_t-\eta_t s_{m,n}O_t.
\end{aligned}
$$

$\operatorname{Polar}$ 是下面要解释的矩阵变换，$s_{m,n}$ 用来控制不同形状矩阵的更新尺度。**Momentum 先于这个变换计算**：累积的是梯度的历史，再变换平滑后的矩阵。

## 把奇异值拉到相同尺度

暂时省略时间下标，把待处理的 momentum 矩阵写成 compact SVD：

$$
M=U\Sigma V^\top
=\sum_{i=1}^{r}\sigma_i u_i v_i^\top,
\qquad r=\operatorname{rank}(M),\quad \sigma_i>0.
$$

$v_i$ 是输入空间里的一个单位方向，$u_i$ 是对应的输出方向，两组向量各自正交。等式 $Mv_i=\sigma_i u_i$ 告诉我们：这个更新在方向 $v_i$ 上的强度是 $\sigma_i$。如果奇异值相差很大，更新便主要集中在少数方向。

Muon 的理想变换是

$$
\operatorname{Polar}(M)=UV^\top
=\sum_{i=1}^{r}u_i v_i^\top.
$$

也就是保留这些方向，把每个非零奇异值变成 $1$。这和把整个矩阵除以 Frobenius norm 不一样：整体归一化保留奇异值之间的比例，polar 变换会改变这个比例。

例如 $M=\operatorname{diag}(8,2,0.5)$，除以 $\lVert M\rVert_F$ 以后，三个方向仍然相差 $16:4:1$；理想 polar 变换得到 $I_3$，三个方向的强度相同。下面也画出了实际五步迭代的结果，计算方法见下一节。

整体归一化、理想 polar 变换与五步近似的奇异值

示例矩阵的奇异值为 8, 2, 0.5。Frobenius 归一化后为 0.968, 0.242, 0.061，理想 polar 变换后为 1, 1, 1，五步五次迭代后为 0.740, 0.744, 1.021。三栏共用相同纵轴尺度，柱子始终按原始奇异方向排列，不按迭代后的数值重新排序。

Frobenius normalization

1

0.968

$\sigma_1$

0.242

$\sigma_2$

0.061

$\sigma_3$

Same ratio: 16 : 4 : 1

Ideal polar factor

1.000

All nonzero values become 1

Five quintic steps

0.740

0.744

1.021

Similar scale, not exactly 1

[View diagram in the original article](https://pufanyi.com/blog/ml/ml-revisit/optm/muon#muon-spectrum)

左右滑动查看完整示意图

三栏使用相同尺度，虚线标出 1；颜色和下标跟踪同一个原始奇异方向。整体归一化保留比例，理想 polar 变换将非零奇异值设为 1，实际五步近似只将它们拉到相近尺度。

这里的 orthogonalization 指的是**更新矩阵**。加上这个更新之后，权重 $W$ 本身不必正交，也不是在要求相邻两个训练 step 的更新互相垂直。对于满秩矩形矩阵，只能有 $O^\top O=I_n$（$m\ge n$）或 $OO^\top=I_m$（$m\le n$），所以更准确地说是 semi-orthogonal。

如果 $M$ 秩亏，上面的 compact SVD 只保留非零奇异值，$UV^\top$ 是一个 partial isometry，不能声称它的所有行或所有列都正交。多项式迭代也不会凭空生成缺失的方向：在精确算术下，零奇异值始终为零。

和 sign、向量归一化有什么关系？

苏剑林在《Muon 优化器赏析》([Su, 2024](https://pufanyi.com/blog/ml/ml-revisit/optm/muon#bib-su2024muon)) 中将这个 polar 变换记作 $\operatorname{msign}$。对非零标量 $z$，$\operatorname{sign}(z)=z/\sqrt{z^2}$；矩阵也有类似的表达式：

$$
\operatorname{Polar}(M)
=M(M^\top M)^{-1/2}.
$$

这里的逆平方根作用于矩阵的特征值；遇到零特征值时采用伪逆约定，将对应值保留为零。因此它一般不同于逐元素取 $\operatorname{sign}$。两个特例能说明矩阵形状的意义：

$$
\begin{aligned}
\operatorname{Polar}(\operatorname{diag}(z_1,\ldots,z_n))
&=\operatorname{diag}(\operatorname{sign}(z_1),\ldots,\operatorname{sign}(z_n)),\\
\operatorname{Polar}(v)&=\frac{v}{\lVert v\rVert_2},
\qquad v\in\mathbb{R}^{n\times1},\ v\ne0.
\end{aligned}
$$

同一组数值，作为对角矩阵中的独立缩放系数，结果是逐元素取符号；作为一个列向量，结果是整体归一化。参数在计算中扮演什么角色，会影响合适的更新方式。这里的 $\operatorname{msign}$ 指基于奇异值的变换，不是一般数值线性代数中基于特征值定义的 matrix sign function。

为什么这种更新可能有用？如果小奇异值对应的方向也包含学习信号，拉平谱就能提高它们相对于主导方向的更新强度。不过，小方向也可能包含噪声；这种直觉本身并不保证泛化更好。Momentum 能平滑输入给变换的梯度，实际收益仍然需要实验验证。

另一个出发点是约束特征的变化。《为什么我们选择尝试 Muon？》([Su, 2025](https://pufanyi.com/blog/ml/ml-revisit/optm/muon#bib-su2025muon)) 从这个角度解释了谱范数：固定这一层的输入 $x$，更新权重后有 $\Delta y=\Delta W x$，而

$$
\max_{x\ne0}\frac{\lVert\Delta y\rVert_2}{\lVert x\rVert_2}
=\lVert\Delta W\rVert_2.
$$

所以，限制谱范数就是限制这个线性层的输出变化相对于输入的最大幅度，再在这个范围内尽量降低 loss。“下降最快”需要先说明怎样衡量一步的大小；Frobenius norm 和 spectral norm 给出的最优方向不同。

为什么 spectral norm 约束会给出这个方向？

Bernstein 和 Newhouse ([Bernstein & Newhouse, 2024](https://pufanyi.com/blog/ml/ml-revisit/optm/muon#bib-bernstein2024old)) 从 norm 约束下的 steepest descent 解释了这种矩阵更新。先忽略 momentum，用一阶近似

$$
\mathcal{L}(W+\Delta W)
\approx\mathcal{L}(W)+\langle G,\Delta W\rangle_F,
\qquad \langle A,B\rangle_F=\operatorname{tr}(A^\top B).
$$

如果限制 $\lVert\Delta W\rVert_F\le\eta$，最优方向是 $-G/\lVert G\rVert_F$。换成 spectral norm 约束

$$
\min_{\lVert\Delta W\rVert_2\le\eta}
\langle G,\Delta W\rangle_F,
$$

其中 $\lVert A\rVert_2$ 是最大奇异值，就得到一个最优解 $\Delta W=-\eta UV^\top$。因为若 $G=\sum_i\sigma_i u_i v_i^\top$，则

$$
\langle G,\Delta W\rangle_F
=\sum_i\sigma_i u_i^\top\Delta Wv_i
\ge-\eta\sum_i\sigma_i,
$$

而 $-\eta UV^\top$ 能取到等号。这里 $\sum_i\sigma_i$ 也叫 nuclear norm。

这解释了单层、固定输入下的更新方向。整个网络同时更新时，输入特征也会改变；带 momentum、有限步近似的实际 Muon，也不等于每一步都精确求解当前 loss 的这个问题。

## 用 Newton–Schulz 避免 SVD

SVD 适合解释方向，但每个 step 都对每个权重矩阵做 SVD，计算成本太高。Newton–Schulz 可以只用矩阵乘法近似这个变换，更适合 GPU。

先归一化

$$
X_0=\frac{M}{\lVert M\rVert_F+\epsilon}.
$$

因为最大奇异值不超过 Frobenius norm，$X_0$ 的奇异值都小于 $1$。经典的三次迭代是

$$
X_{k+1}=\frac32X_k-\frac12X_kX_k^\top X_k.
$$

将 $X_k=U\Sigma_kV^\top$ 代入，得到

$$
X_{k+1}=U\left(\frac32\Sigma_k-\frac12\Sigma_k^3\right)V^\top.
$$

矩阵乘法在这里实现了对每个奇异值分别应用 $f(x)=\frac32x-\frac12x^3$：奇异向量不变，位于 $(0,1)$ 的奇异值逐渐靠近 $1$。整个过程不需要显式算出 $U,\Sigma,V$。

实际的 [Muon 实现](https://github.com/KellerJordan/Muon/blob/master/muon.py) 使用更激进的五次多项式，常用 $5$ 步：

$$
\begin{aligned}
A_k&=X_kX_k^\top,\\
X_{k+1}&=aX_k+(bA_k+cA_k^2)X_k,\\
(a,b,c)&=(3.4445,-4.7750,2.0315).
\end{aligned}
$$

对应的标量变换是 $f(x)=ax+bx^3+cx^5$。它在零附近的斜率更大，可以更快放大小奇异值；代价是它并不精确收敛到 $1$，例如 $f(1)=0.701$。所以实际输出是 $U\widetilde\Sigma V^\top$，把奇异值拉到相近尺度，而非严格得到 $UV^\top$。前图的第三栏正是这个有限步计算，不能把更多迭代简单理解为更精确的正交化。

极小的非零奇异值在有限步后也可能仍然很小。苏剑林在 Newton–Schulz 专文 ([Su, 2025b](https://pufanyi.com/blog/ml/ml-revisit/optm/muon#bib-su2025newtonschulz)) 中讨论了另一种改进：每一步采用不同的 $(a_k,b_k,c_k)$，针对剩余的奇异值区间设计后续变换。同样的迭代步数不必共享系数；上面的固定系数五步法只是一个具体实现，计算近似更准确也不自动意味着训练效果更好。

五次多项式如何改变每个奇异值

沿用同一个对角矩阵，横轴是一次更新内部的迭代次数 0 到 5，纵轴是各个原始奇异方向上的值。小值被迅速放大，之后围绕 1 上下变化，并非单调收敛。每步数值见图后的折叠表格。

One update · five polynomial iterations

0.0

0.5

1.0

1.5

0

1

2

3

4

5

$k$

$\sigma_1$

$\sigma_2$

$\sigma_3$

[View diagram in the original article](https://pufanyi.com/blog/ml/ml-revisit/optm/muon#muon-iteration)

左右滑动查看完整示意图

实线、长虚线和点线分别跟踪三个原始奇异方向；圆点表示实际迭代值，连线仅用于跟踪。虚线水平线是理想目标 1。这是矩阵内部的数值迭代，不是训练 loss 曲线。

示例每步的奇异值

从对角矩阵的奇异值 8、2、0.5 开始，先除以 Frobenius norm 加 1e-7，再使用正文的五次多项式。表格保留三位小数，各列跟踪原始方向。

| 迭代次数 | $\sigma_1$ | $\sigma_2$ | $\sigma_3$ |
| ---- | ---------- | ---------- | ---------- |
| 0    | 0.968      | 0.242      | 0.061      |
| 1    | 0.729      | 0.768      | 0.207      |
| 2    | 1.079      | 1.025      | 0.673      |
| 3    | 0.689      | 0.687      | 1.143      |
| 4    | 1.127      | 1.129      | 0.771      |
| 5    | 0.740      | 0.744      | 1.021      |

计算时可以先转置高矩阵，让参与 $X_kX_k^\top$ 的行数为 $\min(m,n)$，最后再转置回来。这样临时方阵更小。矩阵乘法可以在 BF16 下进行；上图用 FP64 演示标量递推，实际低精度结果会有差异。

## 完整的一步与更新尺度

前面为了说明机制使用了普通 momentum。作者实现默认使用 Nesterov-style momentum，采用 EMA 记法时，完整顺序如下。这里的 $t$ 是训练 step，$k$ 是一次更新内部的 Newton–Schulz 迭代，二者不要混淆。

1. 计算当前梯度 $G_t=\nabla_W\mathcal{L}_t$。
2. 更新 $M_t=\beta M_{t-1}+(1-\beta)G_t$，初始 $M_{-1}=0$。
3. 构造 $H_t=\beta M_t+(1-\beta)G_t$；不用 Nesterov 时取 $H_t=M_t$。
4. 以 $H_t$ 为输入，归一化后执行 $K$ 次 Newton–Schulz，得到 $O_t$。
5. 更新 $W_{t+1}=(1-\eta_t\lambda)W_t-\eta_t s_{m,n}O_t$。

常用起点是 $\beta=0.95$、$K=5$。有些实现用不带 $(1-\beta)$ 的 momentum 累加式；配套的 Nesterov 写法也要一起对应，不能只替换其中一行。正的整体缩放会被进入迭代前的归一化消去，忽略 $\epsilon$ 和舍入时，两套配套写法可以等价。

还需要选择 $s_{m,n}$。对满秩矩阵的理想 polar 结果，令 $r=\min(m,n)$，因为共有 $r$ 个值为 $1$ 的奇异值，

$$
\lVert O\rVert_F^2=r,
\qquad
\operatorname{RMS}(O)
=\frac{\lVert O\rVert_F}{\sqrt{mn}}
=\frac1{\sqrt{\max(m,n)}}.
$$

如果直接使用 $O$，矩阵越大，平均每个元素的更新反而越小。Moonlight ([Liu et al., 2025](https://pufanyi.com/blog/ml/ml-revisit/optm/muon#bib-liu2025muon)) 使用

$$
s_{m,n}=0.2\sqrt{\max(m,n)},
$$

让理想更新的 RMS 为 $0.2$，方便与 AdamW 的更新尺度对齐。$0.2$ 来自该工作的经验选择，不是 AdamW 更新 RMS 的普适定理；有限步近似、秩亏也会使实际 RMS 偏离它。Weight decay 直接作用于 $W_t$，不放进正交化，也不乘这个形状系数。

苏剑林的《Muon 优化器指南》([Su, 2025c](https://pufanyi.com/blog/ml/ml-revisit/optm/muon#bib-su2025muonguide)) 将常见缩放整理为四种约定。沿用本文 $y=Wx$ 的记号，$m$ 是输出维度，$n$ 是输入维度：

| 约定             | $s_{m,n}$             | 缩放方式                   |
| -------------- | --------------------- | ---------------------- |
| 朴素版            | $1$                   | 直接使用近似 polar 结果        |
| KellerJordan 版 | $\sqrt{\max(1,m/n)}$  | 输出维度大于输入维度时放大更新        |
| MuP 版          | $\sqrt{m/n}$          | 按输出与输入的维度比缩放           |
| Moonlight 版    | $0.2\sqrt{\max(m,n)}$ | 将理想更新的元素 RMS 对齐到 $0.2$ |

同一个 learning rate 数值不能脱离缩放约定比较。PyTorch 的 Muon 文档 ([PyTorch Contributors, n.d.](https://pufanyi.com/blog/ml/ml-revisit/optm/muon#bib-pytorchmuon)) 将 KellerJordan 版和 Moonlight 版分别称为 `original` 和 `match_rms_adamw`。维度比要按线性层的实际输入、输出判断：如果代码写成行向量形式的 `x @ W`，权重的存储形状就是 $[\text{in},\text{out}]$，不能照搬 PyTorch `Linear` 的轴顺序。为降低 Newton–Schulz 成本而临时转置矩阵，也不应改变缩放因子。

MuP 版与官方版的 max(1, ·) 分别在控制什么？

MuP 关注模型宽度改变时的更新尺度。对 $v\in\mathbb{R}^d$，$\operatorname{RMS}(v)=\lVert v\rVert_2/\sqrt d$。用这个量衡量每个特征分量的变化，有

$$
\max_{x\ne0}
\frac{\operatorname{RMS}(\Delta W x)}{\operatorname{RMS}(x)}
=\sqrt{\frac{n}{m}}\lVert\Delta W\rVert_2.
$$

对非零矩阵的理想 polar 更新，$\Delta W=-\eta s_{m,n}O$ 且 $\lVert O\rVert_2=1$。取 $s_{m,n}=\sqrt{m/n}$，上式就等于 $\eta$，不随输入、输出维度改变。这给出了 MuP 版的尺度直觉；它控制特征扰动，Moonlight 版则对齐更新矩阵本身的元素 RMS。

苏剑林在 2026 年的文章 ([Su, 2026](https://pufanyi.com/blog/ml/ml-revisit/optm/muon#bib-su2026muonscaling)) 中进一步用各向同性输入解释官方版的截断，下面假设待处理的矩阵满秩。当 $m<n$ 时，理想 $O$ 会丢掉输入在其行空间之外的分量；若固定 $O$，并假设输入满足 $\mathbb{E}[xx^\top]=I_n$，就有

$$
\mathbb{E}[\operatorname{RMS}(Ox)^2]
=\frac{\operatorname{tr}(OO^\top)}m=1
=\mathbb{E}[\operatorname{RMS}(x)^2].
$$

按这种平均尺度，取 $s_{m,n}=1$ 就够了；当 $m\ge n$ 时，相同计算则给出 $s_{m,n}=\sqrt{m/n}$，合起来正是官方版的 $\max(1,\cdot)$。这是一种依赖输入分布的解释。训练中输入与更新方向可能相关，不能据此认定该缩放在所有阶段都更优。

Weight decay 为什么能限制权重谱范数？

《为什么我们选择尝试 Muon？》([Su, 2025a](https://pufanyi.com/blog/ml/ml-revisit/optm/muon#bib-su2025muon)) 还给出了一个简单的范数界。设 $\lambda>0$、$0\le\eta_t\lambda\le1$，矩阵形状和缩放 $s_{m,n}$ 固定。对理想 polar 更新，由三角不等式得到

$$
\begin{aligned}
\lVert W_{t+1}\rVert_2
&\le(1-\eta_t\lambda)\lVert W_t\rVert_2+\eta_t s_{m,n}\\
&\le\max\left(\lVert W_t\rVert_2,\frac{s_{m,n}}\lambda\right).
\end{aligned}
$$

逐步使用这个关系，就有 $\lVert W_t\rVert_2\le\max(\lVert W_0\rVert_2,s_{m,n}/\lambda)$。因此，限制每步更新的谱范数，再配合 weight decay，可以限制权重谱范数的累积增长。

实际近似若满足统一的界 $\lVert O_t\rVert_2\le C$，则将上界中的 $s_{m,n}$ 换成 $Cs_{m,n}$。这个界通常很宽松，也没有同时约束整个网络的输入特征，不能把它当作 attention logits 必然稳定的保证。

## 实际训练中的取舍

Muon 通常用于 Transformer 隐藏层的 attention projection 和 MLP 权重；embedding、LM head、bias 和 normalization 参数交给 AdamW。Embedding 和 LM head 虽然也是二维矩阵，但参数分组还要考虑它们的用途，不能只检查 `ndim == 2`。作者还报告 ([Jordan et al., 2024](https://pufanyi.com/blog/ml/ml-revisit/optm/muon#bib-jordan2024muon))，把合并存储的 Q、K、V 分开做 Muon 更新更好；矩阵如何分块会改变变换本身。

| 比较项     | AdamW       | Muon 的矩阵参数部分           |
| ------- | ----------- | ---------------------- |
| 更新处理    | 用二阶矩估计逐元素缩放 | 用矩阵多项式调整 momentum 的奇异值 |
| 持久优化器状态 | 一阶、二阶矩      | 一个 momentum buffer     |
| 每步额外计算  | 主要是逐元素运算    | 多次矩阵乘法和临时方阵            |
| 参数切片    | 更新可逐元素独立计算  | 任意切片后分别正交化通常不等价        |

假设两者的状态都用 FP32，Muon 的矩阵参数每个元素需 $4$ bytes 的持久 momentum，AdamW 的两个矩估计需 $8$ bytes。这只比较优化器状态，不包含参数、梯度、master weights、activations、Newton–Schulz workspace，以及仍由 AdamW 管理的参数，不能据此说训练总显存减半。

分布式训练的区别也来自矩阵结构。例如按行分成 $M_1,M_2$，完整 Gram matrix 包含 $M_1M_2^\top$ 这样的跨分片项；各卡独立处理自己的切片会漏掉它们。结合 [FSDP / ZeRO](https://pufanyi.com/blog/ml/ml-revisit/infra/infra-fsdp) 或 [Tensor Parallel](https://pufanyi.com/blog/ml/ml-revisit/infra/infra-tp) 时，需要恢复相关矩阵，或使用数学上对应的分布式矩阵运算。Moonlight 的实现会 gather 相关分片再计算完整更新，并保留本卡需要的部分；这些临时状态和通信都要计入成本。

Moonlight ([Liu et al., 2025](https://pufanyi.com/blog/ml/ml-revisit/optm/muon#bib-liu2025muon)) 在其 compute-optimal scaling 实验中报告了相对 AdamW 约 $2\times$ 的计算效率，并用 Muon 训练了总参数 $16$B、激活参数约 $3$B 的 MoE。这个结果描述的是其训练设置下的 compute–loss 关系，不代表一个 optimizer step 快了两倍。Muon 每步增加的矩阵计算能否被达到目标 loss 所需 step 的减少抵消，要在相同硬件和训练设置下测 wall-clock time。

更大规模还会遇到稳定性问题。Kimi K2 的 MuonClip ([Kimi Team, 2025](https://pufanyi.com/blog/ml/ml-revisit/optm/muon#bib-kimi2025k2)) 在 Muon 更新之外加入 QK-Clip：根据每个 attention head 观测到的 logits，在更新后缩放相关 query / key 权重，抑制 logits 过大。它是额外的稳定化机制；仅把更新矩阵的奇异值拉平，并不能限制整个训练过程中权重和 attention logits 的增长。

## References

Bernstein, J., & Newhouse, L. (2024). *Old Optimizer, New Norm: An Anthology*. [doi.org](https://doi.org/10.48550/arXiv.2409.20325 "https://doi.org/10.48550/arXiv.2409.20325")

Jordan, K., Jin, Y., Boza, V., You, J., Cesista, F., Newhouse, L., & Bernstein, J. (2024). *Muon: An optimizer for hidden layers in neural networks*. [kellerjordan.github.io](https://kellerjordan.github.io/posts/muon/ "https://kellerjordan.github.io/posts/muon/")

Kimi Team. (2025). *Kimi K2: Open Agentic Intelligence*. [doi.org](https://doi.org/10.48550/arXiv.2507.20534 "https://doi.org/10.48550/arXiv.2507.20534")

Liu, J., Su, J., Yao, X., Jiang, Z., Lai, G., Du, Y., Qin, Y., Xu, W., Lu, E., Yan, J., Chen, Y., Zheng, H., Liu, Y., Liu, S., Yin, B., He, W., Zhu, H., Wang, Y., Wang, J., … Yang, Z. (2025). *Muon is Scalable for LLM Training*. [doi.org](https://doi.org/10.48550/arXiv.2502.16982 "https://doi.org/10.48550/arXiv.2502.16982")

Loshchilov, I., & Hutter, F. (2019). Decoupled Weight Decay Regularization. *International Conference on Learning Representations*. [arxiv.org](https://arxiv.org/abs/1711.05101 "https://arxiv.org/abs/1711.05101")

PyTorch Contributors. (n.d.). *Muon — PyTorch 2.9 documentation*. [docs.pytorch.org](https://docs.pytorch.org/docs/2.9/generated/torch.optim.Muon.html "https://docs.pytorch.org/docs/2.9/generated/torch.optim.Muon.html")

Su, J. (2024, December). *Muon优化器赏析：从向量到矩阵的本质跨越*. [kexue.fm](https://kexue.fm/archives/10592 "https://kexue.fm/archives/10592")

Su, J. (2025a, February). *Muon续集：为什么我们选择尝试Muon？*. [kexue.fm](https://kexue.fm/archives/10739 "https://kexue.fm/archives/10739")

Su, J. (2025b, May). *msign算子的Newton-Schulz迭代（上）*. [kexue.fm](https://kexue.fm/archives/10922 "https://kexue.fm/archives/10922")

Su, J. (2025c, November). *Muon优化器指南：快速上手与关键细节*. [kexue.fm](https://kexue.fm/archives/11416 "https://kexue.fm/archives/11416")

Su, J. (2026, June). *为什么官方版Muon比MuP版多出一个max(1, ⋅)？*. [kexue.fm](https://kexue.fm/archives/11772 "https://kexue.fm/archives/11772")
