一、 AdamW 基础回顾:微观层面的“各管各的”

AdamW 是目前深度学习中最常用的基线优化器,它的核心标签是逐元素(Element-wise)自适应学习率

想象你的模型中有一个权重矩阵 WWW。AdamW 会把这个矩阵里的每一个参数当成完全独立的个体,逐个进行更新。为了决定每个参数更新的“步子”迈多大,它会记录两个历史信息:

  • 一阶动量(动量):简单来说,就是这个参数在过去几次迭代中梯度的“加权平均”。它决定了参数更新的总体大方向,带有惯性。
  • 二阶动量(方差):这是过去梯度平方的“加权平均”。它用来感知这个参数在历史中更新得有多剧烈。

核心动作:在每次更新时,AdamW 会用一阶动量除以二阶动量的平方根。
直观效果是:对于历史上变化极其剧烈、梯度很大的参数,AdamW 会压低它的学习率,让它稍微稳一点;对于历史上变化平缓、梯度很小的参数,它会放大其学习率,推着它往前走。最后,再独立加上一个权重衰减(Weight Decay),把参数按比例往 0 的方向拉一拉,防止过拟合。

局限性:AdamW 只盯着单个参数看,完全忽略了这些参数实际上是组成一个矩阵的整体。它无法感知矩阵的行与列之间固有的结构和关联。


二、 Muon 的核心机制:宏观层面的“方阵列队”

Muon(Momentum Orthogonalized by Newton-schulz)的底层思维与 AdamW 完全不同,它的核心标签是矩阵级别(Matrix-wise)正交化

在大模型中,全连接层或注意力机制的权重通常是巨大的二维矩阵 W∈Rn×mW \in \mathbb{R}^{n \times m}WRn×m。Muon 不再把矩阵拆成一个个孤立的数字,而是把它当成一个统一的几何对象来优化。

核心动作

  1. 算梯度与动量:和传统方法类似,先计算当前梯度并累加一阶动量,得到一个完整的更新矩阵 MMM
  2. 正交化(魔法所在):这是 Muon 替代 AdamW 中“除以二阶动量”这一步的关键。Muon 对这个更新矩阵 MMM 施加“混合牛顿-舒尔茨迭代(Newton-Schulz Iteration)”。在数学上,这个操作通过几次矩阵乘法,强行将更新矩阵的奇异值拉近到 1。
  3. 缩放与更新:经过正交化梳理后的矩阵,既保留了原始梯度的重要方向信息,其内部结构又变得极其规整。最后,按统一比例缩放后,直接加到原来的权重矩阵上。

三、 核心区别对比

为了更直观地对比,我们可以看下表:

维度 AdamW Muon
优化视角 逐元素(单个标量) 矩阵整体(二维张量)
归一化方式 标量除法(除以历史梯度平方根) 矩阵正交化(牛顿-舒尔茨迭代)
结构感知 无,忽略矩阵内部的几何特性 有,保留并利用矩阵特征
计算开销 极小(仅需标量加减乘除) 较大(需额外的矩阵乘法计算)

总结来说,AdamW 像是在微观层面挨个指挥每一个士兵(单个参数),根据每个士兵的体力调整步伐;而 Muon 是在宏观层面直接指挥整个方阵(权重矩阵),通过牛顿-舒尔茨迭代确保方阵在前进时阵型不乱(保持正交性),这在处理百亿、千亿参数的高维空间时,能带来更快的收敛速度和更高的稳定性。

把奇异值拉近到 1的好处

1. 算梯度与动量:积累“历史速度”

在这一步,我们计算当前的梯度 GtG_tGt。为了避免每次更新都像无头苍蝇一样乱撞,我们会引入“动量”(Momentum),把历史的更新方向按比例保留下来 :

Mt=μMt−1+GtM_t = \mu M_{t-1} + G_tMt=μMt1+Gt

这里的 MtM_tMt 就是我们要处理的更新矩阵。你可以把它想象成一股累积了历史惯性的“风”,正准备把权重矩阵吹向下一个位置。


2. 正交化与奇异值(魔法所在):为什么非要等于 1?

这是理解 Muon 的绝对核心。

在线性代数中,任何一个矩阵都可以通过奇异值分解(SVD)拆解成三个部分的乘积:M=UΣVTM = U \Sigma V^TM=UΣVT

  • UUUVTV^TVT 是正交矩阵,它们代表的是纯粹的空间旋转
  • Σ\SigmaΣ 是一个对角矩阵,对角线上的值就是奇异值。奇异值代表的是在这个变换中,空间在各个方向上被拉伸或压缩的倍数

如果一个矩阵的奇异值有大有小(比如最大的是 100,最小的是 0.1),这意味着它在某个方向上拼命拉伸,而在另一个方向上极度压缩。

把奇异值强行拉近到 1(即让 Σ\SigmaΣ 变成单位矩阵 III),相当于让更新矩阵变成了 M′=UVTM' = U V^TM=UVT 。这究竟有什么巨大的好处?

好处一:消除“木桶效应”,保证各个特征方向均衡更新

在深度学习中,如果更新矩阵的奇异值差异巨大(这在数学上叫“条件数过大”),模型就会陷入“病态”的优化地形中——在陡峭的方向上疯狂震荡,在平缓的方向上慢如蜗牛。
把奇异值全部拉平到 1,相当于做了一次完美的预处理(Preconditioning)。它强制剥离了各个方向上不合理的“拉伸力度”,只保留了最纯粹的“方向信息”(也就是 UVTU V^TUVT)。这样,模型在更新时,不管是重要特征还是冷门特征,都能得到公平、平稳的推进,大大加快了收敛速度。

好处二:防止“维度坍塌”(Rank Collapse)

神经网络很“懒”。在训练大模型时,权重矩阵经常会倾向于只依赖少数几个主导特征,导致整个矩阵的有效信息维度变少,这被称为秩坍塌(Rank Collapse)。
把更新矩阵的奇异值设为 1,它在数学上就变成了一个正交矩阵。正交矩阵的每一列/行都是线性无关且等长的。用它去更新权重,就是在强迫模型:“不要只盯着那几个特征看,你要把整个高维空间的容量都利用起来!” 这使得模型能学到更丰富、更具多样性的特征。

好处三:保持真实的全局几何方向(降维打击 AdamW)

AdamW 是怎么控制步长的?它是把矩阵拆成一个个孤立的数字,然后每个数字除以自己历史梯度的平方根(二阶动量)。这种逐个除以不同数字的做法,实际上扭曲了整个矩阵原本的更新方向。
Muon 的做法则高级得多:它不改变原矩阵 MMM 的旋转方向(完全保留了 UUUVTV^TVT),仅仅是把长短不一的拉伸量统一归一化到了 1。这是一种真正的“全局自适应学习率”,它在控制了更新步长的同时,完美保真了梯度的几何方向

💡 Newton-Schulz 迭代的作用:
既然 SVD 分解这么好,为什么以前不用?因为在 GPU 上对巨大的矩阵算 SVD 极度缓慢,算力根本吃不消。Muon 的聪明之处在于,它使用了 Newton-Schulz 迭代。这是一种近似算法,只需要做几次简单的矩阵乘法,就能极快地逼近 UVTU V^TUVT 的结果(也就是把奇异值推向 1) 。在 DeepSeek-V4 中,他们通过混合系数迭代,精确地将奇异值稳定在 1 。


3. 缩放与更新:平稳落地

经过上述魔法操作,我们得到了一个奇异值全为 1 的正交化更新矩阵 Ot′O'_tOt

此时,这个矩阵的内部结构已经极度规整(各向同性,方向纯粹)。接下来只需要做两件事:

  1. 统一缩放:根据矩阵的尺寸重新缩放它的均方根(RMS),然后乘以你设定的学习率 η\etaη 。因为它的形状已经被修整得很好,我们不再需要像 AdamW 那样给每个参数单独设置步长,给一个统一的号令即可。

  2. 权重衰减与相加:执行标准的权重衰减(防止权重过大),然后把这个规整的矩阵直接减到原本的模型参数 Wt−1W_{t-1}Wt1 上,完成这一步的进化 。

牛顿-舒尔茨迭代(Newton-Schulz Iteration)绝对不去计算奇异值分解(SVD),它恰恰是为了“逃避”计算 SVD 而发明的极速平替方案。

之前的例子里提到把 Σ\SigmaΣ 强行变成单位矩阵,那是为了在数学概念上让你直观理解正交化在做什么。但在真正的代码和 GPU 硬件里,计算 SVD 的代价是极其昂贵的。SVD 包含大量的非线性操作和特征值计算,对 GPU 非常不友好,如果每次更新成千上万个参数矩阵都要算一次 SVD,训练速度会慢到让人崩溃。

既然我们要的是去除了拉伸量 Σ\SigmaΣ 之后的纯方向矩阵 UVTUV^TUVT ,数学家们就想出了一个极其聪明的办法:用纯粹的矩阵乘法和加法,硬生生地把原矩阵“揉捏”成 UVTUV^TUVT 的样子。

这就是牛顿-舒尔茨迭代的本质。下面是 DeepSeek-V4 论文中实际执行这个“魔法”的详细步骤:

1. 预处理:限制最大值(归一化)

在施加魔法之前,为了防止数值爆炸,算法会先给矩阵“卸力”。
首先,将当前的矩阵 MMM 除以它的弗罗贝尼乌斯范数(可以理解为矩阵里所有元素的平方和开根号),得到初始矩阵 M0M_0M0

M0=M/∣∣M∣∣FM_0 = M / ||M||_FM0=M/∣∣MF

这一步的目的是确保矩阵的最大奇异值绝对不会超过 1 。这就像是把所有乱七八糟的拉伸力度都压缩到了 0 到 1 的安全范围内,为后续的迭代打好基础。

2. 疯狂多项式:牛顿-舒尔茨迭代

这一步是 GPU 最擅长的操作——纯粹的矩阵乘法。算法会反复套用下面这个公式:

Mk=aMk−1+b(Mk−1Mk−1T)Mk−1+c(Mk−1Mk−1T)2Mk−1M_k = aM_{k-1} + b(M_{k-1}M_{k-1}^T)M_{k-1} + c(M_{k-1}M_{k-1}^T)^2M_{k-1}Mk=aMk1+b(Mk1Mk1T)Mk1+c(Mk1Mk1T)2Mk1

这个公式到底在干什么?
你可以把它想象成一个只针对“奇异值”的塑形机器。如果矩阵的某个奇异值 xxx 较小,经过这个多项式计算后,新的奇异值会变大一点;如果它接近 1,它就会稳稳地停在 1 附近。
虽然我们在对整个矩阵做乘法,但在线性代数的底层法则中,这等价于同时对矩阵隐式包含的所有奇异值进行了一次多项式拉伸,而完全不破坏矩阵原有的旋转方向(即完美保留了 UUUVTV^TVT)。

3. DeepSeek-V4 的“混合”调参绝技

传统的牛顿-舒尔茨迭代可能需要跑很多次才能收敛。为了追求极致的速度,DeepSeek-V4 采用了一种“混合”(Hybrid)策略,总共只跑 10 次迭代 :

  • 阶段一:狂飙突进(前 8 次迭代)
    使用系数 (a,b,c)=(3.445,−4.7750,2.0315)(a, b, c) = (3.445, -4.7750, 2.0315)(a,b,c)=(3.445,4.7750,2.0315)
    这组激进的系数能够驱动奇异值快速收敛,迅速把那些小得可怜的奇异值“拔高”到接近 1 的位置 。

  • 阶段二:精准落地(最后 2 次迭代)
    切换为经典系数 (a,b,c)=(2,−1.5,0.5)(a, b, c) = (2, -1.5, 0.5)(a,b,c)=(2,1.5,0.5)
    这组温和的系数负责最后微调,将所有的奇异值精确且稳定地锁定在 1 上 。

经过这短短 10 次的纯矩阵乘法迭代,原本“偏科”严重的 M0M_0M0,就在没有经历任何复杂 SVD 计算的情况下,蜕变成了一个奇异值全为 1 的完美正交矩阵(即高度逼近 UVTUV^TUVT)。GPU 疯狂地做着它最爱的乘法和加法,极其高效地完成了方向的提纯。

UVTU V^TUVT 绝对是一个正交矩阵。

在奇异值分解(SVD)公式 M=UΣVTM = U \Sigma V^TM=UΣVT 中,线性代数法则规定了 UUUVVV 本身就必须是正交矩阵。而数学中有一个定理:两个正交矩阵的乘积依然是正交矩阵。因此,当我们把代表拉伸的 Σ\SigmaΣ 剔除,或者把它强行变成单位矩阵 III 后,剩下的 UVTU V^TUVT 就是一个纯粹的正交矩阵。

为了让你把这块拼图完美拼上,我们来拆解一下正交矩阵的核心特点以及它在深度学习(尤其是 Muon 优化器)中带来的巨大好处


一、 正交矩阵的核心特点:极致的“规整”

正交矩阵(我们把它记作 OOO)在数学上有着极其优美的性质,可以用三个词来概括:

1. 转置即逆(计算极简)
这是正交矩阵最标志性的代数定义:它的转置矩阵 OTO^TOT 直接等于它的逆矩阵 O−1O^{-1}O1

OTO=OOT=IO^T O = O O^T = IOTO=OOT=I

在计算机里算一个大矩阵的逆是非常耗时的,但如果它是正交矩阵,只需要把行列互换(转置)一下就得到了逆,计算成本几乎为零。

2. 保长性(不改变大小)
如果你用一个正交矩阵去乘以一个向量(比如空间中的一个箭头),这个箭头的长度绝对不会发生任何改变。它既不会被拉长,也不会被缩短。

3. 保角性(不改变形状)
如果你有两个向量,它们之间有一个夹角(比如 90 度)。经过正交矩阵变换后,这两个向量的夹角依然是 90 度。这意味着正交矩阵绝对不会把一个正方形“挤扁”成平行四边形(也就是没有剪切形变)。

💡 几何总结:
结合保长和保角,正交矩阵在三维或高维空间中的物理意义非常明确——它代表了纯粹的旋转(或者镜像翻转)。它就像一个完美的魔方,无论你怎么转,它的体积和内部格子的大小都不会变。


二、 正交矩阵在深度学习中的巨大好处

为什么 Muon 优化器费尽心思,甚至用牛顿-舒尔茨迭代,也要把更新矩阵提纯成正交矩阵 UVTU V^TUVT?因为这种“纯粹的旋转”能解决大模型训练中的几个致命痛点:

1. 根除梯度爆炸与梯度消失

在深度神经网络中,信号(前向传播的激活值,或者反向传播的梯度)需要经过一层又一层的矩阵相乘。

  • 如果矩阵像我们之前举例的 Σ\SigmaΣ 那样,有大于 1 的拉伸量,乘了几十层之后,数值会指数级爆炸(梯度爆炸)。
  • 如果有小于 1 的压缩量,乘了几十层之后,数值会变成 0(梯度消失)。
    好处: 正交矩阵具有“保长性”。信号穿过正交矩阵时,能量不会放大也不会衰减,这让训练过程稳如泰山。
2. 条件数为 1:完美的数值稳定性

“条件数”衡量的是矩阵在不同方向上拉伸比例的最大差距(最大奇异值除以最小奇异值)。条件数越大,矩阵越“病态”,优化起来越困难。
好处: 正交矩阵的所有奇异值都是 1,所以它的条件数是完美的 1。这意味着它在任何方向上的受力都是绝对均匀的。模型在更新参数时,不会在某个特征方向上步子太大扯到蛋,也不会在另一个方向上原地踏步。

3. 保持特征的独立性(防坍塌)

如果不用正交矩阵,多次矩阵连乘很容易导致空间向着最大的那个奇异值方向“坍缩”(Rank Collapse),原本丰富的多维特征最后全挤在了一条线上,模型变“笨”了。
好处: 正交矩阵具有“保角性”,原本正交(独立)的特征,更新后依然是独立的。它强迫模型去探索和利用整个高维空间的所有容量,学到更丰富、更细腻的知识。


一句话总结:
UVTU V^TUVT 这个正交矩阵,就是剔除了所有“拉伸、压缩、挤压”杂质后,提炼出来的一枚纯粹的“方向指南针”。它让模型的参数更新走得既准(方向对)又稳(不扭曲变形)。

训练中哪些模块使用 Muon?
论文中指出,在 DeepSeek-V4 系列的大多数模块中采用 Muon 优化器,主要是因为它能带来更快的收敛速度和更高的训练稳定性。
但是模型并没有在所有模块上都使用 Muon,而是采取了一种混合优化的策略:

  • 保留 AdamW 的模块:嵌入模块(embedding module)、预测头模块(prediction head module)、mHC 模块的静态偏置和门控因子,以及所有 RMSNorm 模块的权重,依然使用 AdamW 优化器进行更新。 嵌入模块(embedding module)、预测头模块(prediction head module)的梯度存在极度稀疏性所以不会。对于这些一维的或者非方阵的参数,DeepSeek-V4 依然让 AdamW 来负责更新,因为对一维向量做矩阵正交化没有意义 。
  • 使用 Muon 的模块:除了上述明确提到的模块之外,模型中的所有其他模块均使用 Muon 进行更新。

Embedding和Head为什么不用?

嵌入模块(Embedding Module)和预测头模块(Prediction Head Module)确实是庞大的二维矩阵。它们的形状通常是 Vocabulary_Size×Hidden_SizeVocabulary\_Size \times Hidden\_SizeVocabulary_Size×Hidden_Size(例如 128K×7168128K \times 7168128K×7168 )。

DeepSeek-V4 不在这两个巨大的二维矩阵上使用 Muon,其实是基于它们特殊的物理意义计算特性。具体原因可以归结为以下三个核心痛点:

1. 梯度的极度稀疏性(最致命的原因)

想象一下模型正在训练一个批次(Batch)的数据。这一批文本里可能只出现了 5000 个不重复的单词。

  • 对于 Embedding 层:整个 128K×7168128K \times 7168128K×7168 的矩阵中,只有这 5000 个单词对应的行是有梯度的,其余 12 万多行的梯度全是 0
  • 如果用 Muon:Muon 会把这个 99% 都是 0 的梯度矩阵拿去做牛顿-舒尔茨迭代、算正交化。这在数学上是非常灾难的。强行对大量包含 0 的矩阵做全局的正交化,不仅无法收敛,甚至会把那些根本没出现在当前文本里的单词的向量给“连坐”修改掉。
  • AdamW 的优势:AdamW 是逐元素(逐行)更新的,只有出现过的单词才会被更新,没出现的单词安静地待在原地,互不干扰。

2. 物理意义的不同:它们是“字典”而不是“空间变换”

  • 隐藏层(用 Muon):像 Wq,Wk,WvW_q, W_k, W_vWq,Wk,Wv 或者全连接层的权重,它们的作用是对特征空间进行统一的几何旋转和拉伸。把它们当成一个整体做正交化是非常合理的。
  • 嵌入层/预测头(用 AdamW):它们本质上是一个查找表(Lookup Table)。每一行代表一个独立的概念(比如“苹果”、“宇宙”、“的”)。我们希望“苹果”的向量和“宇宙”的向量根据各自在语料里的表现独立更新,而不希望强制它们在更新时保持某种全局的几何正交关系。强制对字典做矩阵级别的正交化,反而破坏了词汇之间自由学习相似度的空间。

3. 极端的长宽比与计算崩溃

Muon 的牛顿-舒尔茨迭代中,有一步关键计算是 MMTM M^TMMT

  • 如果矩阵是 128K×7K128K \times 7K128K×7K
  • MMTM M^TMMT 会生成一个 128,000×128,000128,000 \times 128,000128,000×128,000 的巨型方阵。在 GPU 上对这么大的矩阵做乘法迭代,会瞬间把显存撑爆(OOM),计算成本甚至远超注意力机制本身。

所以,Muon 优化器的提出者和 DeepSeek-V4 的作者们都非常明智地划定了界限 :

  • Muon 负责“内功”:管理所有隐藏层的特征空间变换(方阵或比例适中的二维矩阵),追求极致的几何稳定性。
  • AdamW 负责“外接口”:管理与外部世界对接的词表查找(极大、极稀疏的二维矩阵)以及各种一维的归一化参数,保留其更新的独立性。
Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐