avatar

Xiaojun Wu

Ph.D. Candidate, HKUST(GZ)
Affiliate LLM Researcher, IDEA Research
wuxiaojun@idea.edu.cn & wuxiaojun@pku.edu.cn & xwu647@connect.hkust-gz.edu.cn


← Blog

最优化

最优化(二):从收益-风险约束看 Adam 和 Muon,优化器如何选择一次更新?

在知乎查看原文

阅读 知乎未公开 收藏 38 点赞 20

互动数据为 2026-09-14 的知乎数据快照;阅读量未在当前可用的知乎公开接口中提供。

上一篇我们从梯度、曲率和参数尺度出发,梳理了 SGD、Adam、AdamW 与 Muon。这一篇换一个视角:金融里的收益与风险。

Adam 的更新大致是:

 \Delta\theta_t \propto - \frac{\hat m_t}{\sqrt{\hat v_t}+\epsilon}

\hat m_t 表示平滑后的梯度方向,\sqrt{\hat v_t} 表示历史梯度的均方根尺度。形式上,它很像“信号除以波动尺度”,因此容易让人联想到 Sharpe ratio。

但这个类比一旦继续追问“哪个参数是资产、哪几个方向组成投资组合”,就会越来越别扭。神经网络训练并没有必要寻找资产的对应物。我们真正需要的只有三个问题:

  1. 这一步预计能让 loss 下降多少?
  2. 这一步可能带来多大的不稳定?
  3. 在风险可控的前提下,应该选择怎样的更新?

所以更准确的说法不是“训练像买一篮子资产”,而是:

优化器每一步都在选择更新 \Delta\theta:希望预计 loss 下降尽可能大,同时把更新风险控制在可接受范围内。

这篇的主角仍然是 Adam 与 Muon。我们会依次回答:训练里的收益和风险到底是什么,Adam 如何按参数坐标控制更新尺度,Muon 如何按矩阵整体控制最危险的放大方向,以及为什么不同参数结构会偏好不同的更新约束。

到文章最后,我们再追问一步:既然 Adam 与 Muon 都能放进“风险预算内争取更大 loss 下降”的框架,能不能让优化器自己比较这些候选策略?这个问题会自然引出下一篇的方法,而不是本文预先假定的答案。

01-return-risk-update


1. 收益是什么?就是 loss 下降

模型当前参数是 \theta_t,优化器准备执行一次更新:

 \theta_{t+1} = \theta_t+\Delta\theta

执行以后,真正得到的收益可以直接定义为:

 \mathrm{Return}^{\mathrm{real}}_t(\Delta\theta) = L(\theta_t)-L(\theta_t+\Delta\theta)

它大于零,说明 loss 下降;它小于零,说明这一步反而让 loss 上升。

问题是,做决定时我们还不知道更新后的 loss,只能利用当前位置的信息进行预测。一阶泰勒近似给出:

 L(\theta_t+\Delta\theta) \approx L(\theta_t)+g_t^\top\Delta\theta

其中 g_t=\nabla_\theta L(\theta_t)。因此,预计的 loss 下降是:

 \widehat{\mathrm{Return}}_t(\Delta\theta) \approx -g_t^\top\Delta\theta

这就是本文所说的“收益”。它不是参数变大,也不是梯度本身,而是一次候选更新预计能换来的 loss 下降。

2. 风险是什么?先区分风险与稳定性约束

训练中的“风险”不是一个天然唯一的数字。

如果严格沿用金融语言,风险首先来自不确定性:同一个更新在不同 mini-batch 上,可能有时让 loss 下降,有时让 loss 上升。我们可以观察 loss 变化的方差、下行波动或最坏尾部。

工程上还会使用一些稳定性代理:更新是否相对权重过大、模型输出是否突然漂移、矩阵是否被少数方向支配。这些量不一定是严格的统计风险,但可以用来限制危险更新。

类别 可以测什么 它在防什么
随机下行风险 不同 mini-batch 上的 loss 上升、方差、CVaR 当前梯度只是噪声,换个 batch 就失效
参数尺度约束 update-to-weight ratio、梯度裁剪 一步走得过大
函数稳定性约束 logits、hidden states、输出分布漂移 参数变化不大,模型行为却突然改变
结构约束 坐标尺度、embedding 行漂移、矩阵谱范数 用了不适合当前参数结构的更新几何

于是一次更新可以写成:

 \Delta\theta_t^* = \arg\max_{\Delta\theta} \widehat{\mathrm{Return}}_t(\Delta\theta) \quad \text{s.t.} \quad \widehat{\mathrm{Risk}}_t(\Delta\theta) \le B_t

B_t 是允许承担的风险预算。学习率、trust region、梯度裁剪和各种归一化并不完全等价,但都在回答同一类问题:这一步最多允许走多猛。

这个模型已经包含传统优化的三要素:

建模要素 训练中的含义
决策变量 本次更新 \Delta\theta
目标函数 预计 loss 下降
约束条件 风险预算与稳定性约束

3. Adam:按坐标调整更新尺度

Adam 对第 i 个参数坐标维护:

 m_{t,i} \approx \text{梯度的一阶指数滑动平均}

 v_{t,i} \approx \text{梯度平方的指数滑动平均}

更新为:

 \Delta\theta_{t,i} = -\eta \frac{\hat m_{t,i}} {\sqrt{\hat v_{t,i}}+\epsilon}

最直观的理解是:

某个坐标的历史梯度尺度大,Adam 就把这个方向的步子缩小;历史尺度小,就允许相对多走一些。

这个思想可以写成一个局部约束优化问题。令

 s_{t,i} = \sqrt{\hat v_{t,i}}+\epsilon

定义逐坐标加权的更新尺度:

 \|\Delta\theta\|_{A_t}^2 = \sum_i s_{t,i}(\Delta\theta_i)^2

在这个预算内最大化预计下降:

 \max_{\Delta\theta} \quad -\hat m_t^\top\Delta\theta \qquad \text{s.t.} \qquad \|\Delta\theta\|_{A_t}\le B_t

其最优方向满足:

 \Delta\theta_i \propto - \frac{\hat m_{t,i}}{s_{t,i}} = - \frac{\hat m_{t,i}} {\sqrt{\hat v_{t,i}}+\epsilon}

这说明 Adam 可以被理解成:在一个由历史梯度尺度塑造的椭球里,选择预计下降最快的方向。

Adam 是 Sharpe ratio 吗?

只能说直觉相似,不能画等号。

金融里的 Sharpe ratio 通常是超额收益均值除以收益标准差。Adam 的 \sqrt{v_t} 是梯度平方均值的平方根,并没有减去梯度均值,因此不是严格的标准差;m_t/\sqrt{v_t} 也不是严格的 Sharpe ratio。

更稳妥的说法是:

Adam 使用“平滑梯度信号 / 历史梯度尺度”来调节每个坐标的更新,具有收益相对于波动尺度进行归一化的味道。

更关键的区别是:Adam 的比值发生在单个参数坐标上;严格的 Sharpe 问题将在后文发生在多个候选更新方向的预算组合上,还要考虑方向之间的协方差。因此,“像 Sharpe”是帮助入门的局部直觉,不是 Adam 的数学定义。

Adam 在估计曲率吗?

Adam 不是 Hessian 估计器。它没有计算二阶偏导,也没有描述参数之间的耦合曲率。

不过,在深度学习这种非凸、有噪声的训练中,梯度尺度、局部敏感性、梯度噪声与某些曲率现象可能相关。因此 Adam 有时会表现出“敏感方向少走、平缓方向多走”的效果。

所以准确结论是:

Adam 估计的是逐坐标梯度尺度。它可能间接反映部分局部敏感性,但不能等同于牛顿法或对角 Hessian。

4. Muon:按矩阵整体几何选择方向

Adam 把参数看成许多坐标。Muon 针对的则是 MLP、Attention 等 hidden layers 中的二维权重矩阵。

设动量矩阵为 M,奇异值分解是:

 M = U\Sigma V^\top

原始矩阵中,最大的奇异值方向可能远大于其他方向,于是更新几乎被少数方向支配。Muon 使用 Newton-Schulz 迭代近似矩阵的极分解因子:

 \mathrm{Polar}(M) \approx UV^\top

这个变换保留主要奇异方向,但把非零奇异值拉到接近同一尺度。直观上,它不是让矩阵元素一样大,而是不让少数奇异方向独占更新。

02-adam-muon-geometries


Muon 也可以放进“预算内最大下降”的框架。若把矩阵更新的风险预算写成谱范数约束:

 \|\Delta W\|_2\le B

那么:

 \max_{\|\Delta W\|_2\le B} \quad -\langle M,\Delta W\rangle_F

的一个最优方向就是:

 \Delta W^* = -B\,UV^\top

这里 \|\Delta W\|_2 是谱范数,也就是矩阵对任意单位输入方向能够产生的最大放大倍数;\langle\cdot,\cdot\rangle_F 是矩阵的 Frobenius 内积。

这给出了比“做完正交化所以更均衡”更有因果顺序的解释:

  1. 先规定最大方向的放大不能超过预算;
  2. 再在这个约束下寻找预计下降最大的矩阵更新;
  3. 极分解方向 UV^\top 因而自然出现;
  4. Muon 用便宜的迭代近似这个方向。

Muon 不是 Hessian 方法,也不能保证对所有参数都优于 AdamW。它的优势假设来自矩阵结构:当参数本身承担线性映射时,控制整个算子的方向比逐元素缩放更贴近这一层的作用。

5. 为什么不同层适合不同约束?

03-structure-specific-constraints


Norm 与 Bias

Norm 的 scale 和 bias 通常是 1D tensor,也就是由很多标量组成的一维向量,并不是“整个层只有一个参数”。

它们没有天然的二维矩阵子空间,也没有 token 行的稀疏访问模式。逐坐标自适应更新与这种结构比较匹配,因此实践中常继续交给 AdamW。

Embedding

Embedding 是一个表:

 E\in\mathbb R^{V\times d}

每一行对应一个 token。一个 batch 通常只访问少数行,而且 token 频率高度长尾。

把它完全当作独立坐标,会忽略一整行共同表示同一个 token;把它当作 dense linear map 做全矩阵正交化,又忽略了稀疏访问模式。因此值得研究的方向是 row-wise 更新:

 \|\Delta E\|_{\mathrm{row}}^2 = \sum_r a_{t,r}\|\Delta E_r\|_2^2

a_{t,r} 可以结合行梯度尺度、访问频率、行范数漂移和低频 token 的统计置信度。

这是一条研究假设,不是已经得到证明的结论。

MLP 与 Attention

MLP 和 Attention 的二维权重直接实现表示空间之间的线性映射。这里的关键问题常常不是某个元素过大,而是某个输入方向被整体放大得过猛。

因此,矩阵谱几何和 Muon 的适配理由更充分。

参数块 主要结构 合法候选 geometry 当前合理起点
Norm / Bias 一维向量 coordinate AdamW
Embedding / LM head 稀疏 token 表或输出映射 coordinate、row-column 不预设 row-column 必胜
MLP / Attention dense 线性映射 coordinate、spectral Muon 类矩阵更新
MoE Expert 多个独立参数块 coordinate、spectral、group 分块自适应方法

6. 金融视角怎样统一 Adam 和 Muon?

现在可以把 Adam 与 Muon 放回同一张图里了。

统一它们的不是把参数硬说成资产,也不是在同一个矩阵上做线性混合:

 \alpha\Delta W_{\mathrm{Muon}} +(1-\alpha)\Delta W_{\mathrm{Adam}}

真正统一的是它们在回答同一个问题:

在给定的更新风险预算内,选择预计能让 loss 下降更多的方向。

Adam 使用逐坐标历史梯度尺度来塑造预算,为 coordinate geometry 生成候选方向;Muon 限制矩阵最危险方向的放大,为 spectral geometry 生成候选方向。两者不是谁把谁近似掉了,而是在不同参数结构上采用了不同的风险度量。

Embedding 还可能需要 row-column geometry。它是否优于 coordinate,必须由实验判断,不能只凭“Embedding 是二维矩阵”决定。

不过,只说“收益除以风险”仍然不够。要让这个统一视角变成可计算的准则,必须明确三个对象:

  1. 收益:某个候选更新预计能让 loss 下降多少;
  2. 风险:这个候选在不同 micro-batch 上是否稳定,是否存在明显坏尾部;
  3. 决策:当前参数块选哪种 geometry,以及最终走多远。

更现实的起点,是把模型拆成 B 个参数块。第 b 个块的决策写成:

 x_b=(g_b,a_b)

其中:

  • g_b 是局部 geometry,例如 coordinate、row-column 或 spectral;
  • a_b\ge0 是这个块本步的预算倍率。

如果 geometry g_b 生成的单位候选方向是 u_{t,b,g_b},那么局部更新为:

 \Delta\theta_b(x_b) = a_bu_{t,b,g_b}

完整更新只是把不同参数块的更新拼回去:

 \Delta\theta(x) = \sum_{b=1}^{B}\Delta\theta_b(x_b)

这个求和不是在同一个矩阵上混合 Adam 与 Muon。不同块拥有不同参数支撑:Norm/Bias 可以选 coordinate,Embedding 可以比较 coordinate 与 row-column,MLP/Attention 可以比较 coordinate 与 spectral。

局部收益:这个块的候选方向能降多少 loss?

对 micro-batch \xi,第 b 个块在 geometry g_b 下的一阶收益是:

 r_{\xi,b}(g_b) = -g_{\xi,b}^{\top}u_{t,b,g_b}

它大于零,表示该候选方向在这个 micro-batch 上预计降低 loss;小于零,则表示可能把 loss 推高。

局部平均收益和波动可以写成:

 \mu_b(g_b) = \mathbb E_\xi[r_{\xi,b}(g_b)]

 \sigma_b^2(g_b) = \operatorname{Var}_\xi[r_{\xi,b}(g_b)]

平均收益回答“通常能赚多少”,方差或坏尾部回答“这份收益是否可靠”。这时金融语言有了准确落点,但统计发生在参数块的候选更新上,不发生在单个参数坐标上。

有了这些局部定义,再看整个模型就很清楚了。对平均一阶收益,不必先估计完整跨块统计。利用期望的线性性:

 \mathbb E_\xi \left[-g_\xi^\top\Delta\theta\right] = \sum_{b=1}^{B} a_b\mathbb E_\xi[r_{\xi,b}(g_b)]

这一步严格成立。真正需要联合统计的是风险。例如组合收益方差包含:

 \operatorname{Var} \left(\sum_ba_br_{\xi,b}\right) = \sum_ba_b^2\sigma_b^2 +2\sum_{b<c}a_ba_c \operatorname{Cov}(r_{\xi,b},r_{\xi,c})

把所有参数块放进一个联合组合问题,可以保留这些跨块协方差与联合 CVaR,但在线训练需要保存和求解大量跨块统计。一个更现实的做法,是先保留严格可加的平均一阶收益,再分别评估局部风险与预算。

局部风险:不追求一个万能数字

这个统一框架可以为每个块同时观察几类便宜信号:

局部信号 它回答的问题
micro-batch return 候选方向的一阶 loss 下降是否稳定?
downside / CVaR proxy 最差一小部分 micro-batch 是否明显亏损?
update-to-weight ratio 本次更新相对参数是否过大?
activation/output drift 应用更新后,这个块的行为是否突变?
spectral risk 矩阵更新是否放大了少数危险方向?

这些量不必全部变成一个精确概率模型。它们可以分别进入局部目标、约束或工程 guard。重要的是不要把 activation drift 硬叫成金融风险,也不要把奇异值集中度冒充收益协方差。

局部预算:收益高不等于可以无限加仓

例如,可以把一个候选更新的局部效用写成:

 \begin{aligned} J_b(g_b,a_b) =\;& \mu_b(g_b)a_b -\frac{1}{2}c_{H,b}(g_b)a_b^2 \\ & -\frac{\gamma}{2}\sigma_b^2(g_b)a_b^2 -\frac{\lambda}{2}(a_b-a_{t-1,b})^2 \end{aligned}

四项依次表示:预计收益、局部大步成本、收益波动和预算换手。局部约束还可以包含:

 0\le a_b\le A_b

 \operatorname{CVaR}_\alpha (\overline Q_{\xi,b}(g_b,a_b)) \le B_b

 D_{f,b}(g_b,a_b)\le\delta_b, \qquad \operatorname{UWR}_b(g_b,a_b)\le\rho_b

这不是要求优化器每步精确求解上述所有公式。它首先给出一张设计图:每个启发式打分或 guard,都应该能对应到局部收益、下行风险、更新尺度或函数稳定性中的一个对象。

到这里,我们仍然只是在建立一个通用的收益-风险评价框架,还没有要求必须发明一个新的优化器。

7. 由此引出 FARO:让优化器选择更新几何

现在才轮到 FARO 出场。

如果 coordinate、row-column 和 spectral 都只是候选更新几何,那么下一个自然问题就是:能不能不把规则永久写死,而是让优化器根据刚才定义的收益、风险与预算信号,自己决定当前参数块使用哪一种?

这就是 FARO 的出发点:

FARO:Function-space Adaptive Return-to-Risk Optimizer,在结构合法的候选更新之间进行统一的收益-风险审查,再选择 geometry 与预算。

这里的 Function-space 表示除了参数变化,还观察 activation 或 output drift,避免“参数步子不大,模型行为却突然改变”。具体设计留到第三篇展开。

在按参数块做局部决策的 Factorized 版本中,它求解的是:

 \max_{x\in\prod_b\mathcal X_b} \quad J_{\mathrm{fac}}(x) = \sum_{b=1}^{B}J_b(x_b)

这里“Factorized”不是宣称各层永远独立。平均一阶收益本来就严格按块相加;局部可分离近似针对的是曲率、收益协方差、联合尾部风险、函数漂移和共享预算等剩余部分。

主流 AdamW + Muon 是固定策略的特例

常见大模型训练已经在按参数类型混合优化器:MLP、Attention 的稠密矩阵使用 Muon,Embedding、LM head、Norm 和 Bias 使用 AdamW。用 g_b 表示第 b 个参数块的 geometry,可以写成:

 g_b = \begin{cases} \text{spectral}, & b\in\text{MLP/Attention}\\ \text{coordinate}, & b\in\text{Embedding/Norm/Bias} \end{cases}, \qquad a_b=1

这里的 a_b=1 表示不再额外调整各候选方向自己的基础学习率,并不表示 AdamW 与 Muon 使用相同数值学习率。

因此,固定 AdamW + Muon 可以看成 FARO 的固定路由、固定预算特例。FARO 往前多走一步:让候选 geometry 接受同一套收益-风险评价,再决定是否保留人工规则。

这套主流配方是重要的工程先例,但不是完整理论证明。目前没有定理证明“这些层必须用 Muon、那些层必须用 AdamW”,更没有证明这个固定划分对整个非凸网络全局最优。

层之间相互作用,为什么还能分块评价?

每个参数块的梯度都来自同一个全局 loss:

 g_{t,b} = \nabla_{\theta_b} L(\theta_1,\ldots,\theta_B)

反向传播已经把整张计算图在当前位置的影响传进 g_{t,b}。对本次更新,一阶 loss 变化严格满足:

 g_t^\top\Delta\theta = \sum_{b=1}^{B} g_{t,b}^\top\Delta\theta_b

所以,给定当前全局梯度和已经分配的局部预算,平均一阶收益本来就按块相加。Factorized FARO 分解的是这个条件下的更新选择,不是把神经网络拆成彼此无关的层。

需要近似处理的是一阶平均收益之外的部分:跨块曲率、收益协方差、联合 CVaR、函数漂移与共享总预算。第三篇会定义具体方法,第五篇再把严格成立的部分与残差假设完整证明出来。

如果 Attention 的 Q/K、共享权重或相邻层存在明显耦合,就不应该强行逐块决策,而应把相关块合并成 Group FARO,在组内联合评估、组间继续分解。

这就形成三层连续谱:

 \text{完整联合 FARO} \longrightarrow \text{Group FARO} \longrightarrow \text{Factorized FARO}

  • 完整联合 FARO 最完整,但统计和求解最贵;
  • Group FARO 保留关键耦合,成本居中;
  • Factorized FARO 最便宜,适合在线训练和并行执行。

这三层也可以直接理解成 FARO 的三种决策模式:

FARO 模式 一次联合决策覆盖什么 适用情况 当前状态
Block / Factorized 一个参数块 一阶方向天然可分,且剩余耦合相对 route margin 可控 当前工程实现
Group 一组强耦合参数块 Q/K、共享权重、同层 MLP 等局部耦合明显 后续升级方向
Global 全模型所有参数块 统计样本和计算资源足够,希望完整考虑跨块关系 理论模式,未实现

所以 FARO 并不是永远坚持“每层各算各的”。它允许根据耦合强度逐步扩大联合决策范围。只是对当前大模型在线训练而言,Block / Factorized 模式最容易并行、统计量最可靠,也最符合显存和吞吐约束,因此目前采用的是这一种最实际的实现。

第三篇会把这个局部决策写成完整方法;第五篇区分一阶方向的严格分解与完整收益-风险问题的残差条件,并构成整个系列的理论核心;第六篇则回到 GPU 代码,看工程版本如何用局部打分、预算 guard 和 explore→freeze 近似这套设计。

小结

这一篇最重要的结论是:

Adam 与 Muon 都可以理解成“在风险预算内争取更大的预计 loss 下降”,但两者使用的风险度量不同:Adam 按参数坐标控制历史梯度尺度,Muon 按矩阵整体控制最危险的谱方向。

这解释了为什么它们不是简单的竞争关系,也解释了为什么 Norm、Embedding、MLP 和 Attention 未必适合相同的更新几何。

FARO 是这个统一视角自然导出的下一步:让 coordinate、row-column 和 spectral 候选接受同一套收益-风险评价,再自适应选择 geometry 与预算。第三篇从这里开始正式定义方法,第五篇再处理分块决策的严格理论。

参考资料


© 2025 Xiaojun Wu. All rights reserved. Powered by Jekyll and Minimal Light theme.