32

Muon——为什么矩阵参数需要不同的优化器

阅读约 3 分钟第 32/60 课

AdamW 对每个参数独立地维护动量和自适应学习率。但在 Transformer 中,参数不是散落的独立数字——它们是矩阵。

一个 1,536 × 1,536 的权重矩阵有 236 万个参数。AdamW 把这 236 万个参数当作 236 万个独立的数字分别处理——它不知道也不关心这些数字排列成了一个矩阵。

Muon 的出发点是:矩阵参数的更新应该考虑矩阵整体的结构,而不是逐元素独立更新。

矩阵有什么特殊的

一个权重矩阵执行的是线性变换。变换的质量取决于矩阵整体的性质——比如它的奇异值分布(可以理解为矩阵在不同方向上的「放大倍率」)。

AdamW 的逐元素更新可能破坏矩阵的整体结构。比如,更新之后某些方向的放大倍率变得极大或极小,导致数值不稳定。

Muon 在更新之后对更新量做一次「矫正」——调整更新方向使其保持矩阵的结构性质,类似于对更新做一次正交化。

Sophia 的双优化器策略

Sophia 的训练使用了两种优化器的组合:

  • AdamW:用于嵌入层、归一化层的参数(这些是向量参数,不是矩阵)
  • Muon:用于注意力和前馈网络中的权重矩阵

这种分类很自然:嵌入表的每一行是一个独立的向量(某个 token 的表示),用 AdamW 逐元素更新完全合理。但注意力的 W_Q、W_K、W_V 和前馈网络的权重矩阵作为整体执行线性变换,Muon 更适合。

技术报告记载了这个选择的背景:Sophia 借鉴了 Keller Jordan 提出的 Muon 优化器,在十亿参数规模上验证了它对矩阵参数的优势。

这个单元学了什么

五个章节走过了优化器的演化路线:

  1. SGD(第 28 章节):最简单,每步只看当前梯度。方向不稳,学习率不自适应。
  2. Momentum(第 29 章节):加入动量,稳定方向。
  3. Adam(第 30 章节):加入自适应学习率,每个参数自动调速。
  4. AdamW(第 31 章节):把权重衰减从 Adam 中分离出来,更正确的正则化。
  5. Muon(本章节):针对矩阵参数的结构化更新。

Sophia 用 AdamW + Muon 的组合——向量参数和矩阵参数各用最适合的优化器。

优化器决定了每一步走的方向和大小。但训练中还有一个维度同样重要:节奏——什么时候快、什么时候慢、一步看多少数据。这是下一个单元的内容。