深度解读 📅 2026-10-01 ✍️ MagicNetWorld 编辑部

动量的新理解:把优化器看成特征层面的梯度下降

Muon 为什么有效、Newton-Muon 与 DeltaMomentum 又各改变了什么?本文以苏剑林《动量的新理解:逼近特征层面的梯度下降》的视角为主线:优化器真正该逼近的不是参数层面的梯度下降,而是特征层面的梯度下降——由此把动量重新诠释为一个在线回归问题的解,推导出 Newton-Muon 的闭式形式与 DeltaMomentum 的增量形式,并用 δ 规则的稳定性分析解释「各方向遗忘速度不同」为什么会自然涌现。文末给出一组数值实验:同一个翻转目标下,δ 规则动量对高频方向的响应比 EMA 快 6 倍、对低频方向慢 20 倍,这正是它优于与劣于 EMA 的同一枚硬币的两面。

优化器大模型训练Muon数学推导

训练大模型时,优化器拿到的是参数的梯度 G∈Rdin×dout\boldsymbol{G} \in \mathbb{R}^{d_{\text{in}} \times d_{\text{out}}},但我们真正关心的从来不是参数本身,而是模型的行为——前向输出、特征、loss。这两者之间隔着一层映射:同样的参数更新量 ΔW\Delta \boldsymbol{W},作用在不同的输入分布上,产生的输出变化可以差出几个数量级。2026 年 8 月,苏剑林在科学空间发表《动量的新理解:逼近特征层面的梯度下降》,把这件事推到了一个少有人走的深度:**如果我们要求参数更新在”特征层面”恰好实现梯度下降,会推出什么优化器?**答案是一个以 X⊤X\boldsymbol{X}^\top \boldsymbol{X} 为预条件子的校正动量家族——Newton-Muon 是它的解析解形态,DeltaMomentum(AK-Momentum)是它的增量求解形态,而这两者恰好和线性注意力从 Vanilla 到 Gated DeltaNet 再到 MesaNet 的演化一一对应。

本文以这篇博客为主线,面向做工程的读者把整套推导走一遍:先给直觉和符号,再从回归目标推出校正动量的闭式解,然后分别展开 Newton-Muon 与 DeltaMomentum 两条路线,接着用本文自行设计的一组数值实验量化「方向感知的遗忘速度」,最后回到苏剑林自己指出的两条不满意之处——实现层面的耦合与理论层面的探索受限——以及这条线尚未解决的问题。对原文的关键结论,本文以引述方式给出并标注出处;推导细节、数值实验与工程解读为本文自行展开,自算数字在来源段单独列清单。

一、先给直觉:参数更新 ≠ 特征更新

一个标准的动量优化器长这样:

Mt=βMt−1+(1−β)Gt,Wt=ϕ(Wt−1,Mt,Gt,t)\boldsymbol{M}_t = \beta \boldsymbol{M}_{t-1} + (1 - \beta) \boldsymbol{G}_t, \qquad \boldsymbol{W}_t = \phi(\boldsymbol{W}_{t-1}, \boldsymbol{M}_t, \boldsymbol{G}_t, t)

第一个式子是动量——梯度的指数滑动平均(EMA);第二个式子是更新函数 ϕ\phi,SGDM、SignSGD、Muon 的差别全在这里。苏剑林的观察是:大家的创新几乎都砸在 ϕ\phi 上,而动量那一行”简单到大家不认为它有什么修改空间”。而这篇博客要证明的恰恰是:动量那一行不是没有空间,而是我们一直站在错误的层面看它。

直觉是这样的。考虑一个线性层 Y=XW\boldsymbol{Y} = \boldsymbol{X} \boldsymbol{W},其中 X∈Rb×din\boldsymbol{X} \in \mathbb{R}^{b \times d_{\text{in}}} 是一个 batch 的输入,W∈Rdin×dout\boldsymbol{W} \in \mathbb{R}^{d_{\text{in}} \times d_{\text{out}}} 是权重。对它做”参数层面的梯度下降”:

W←W−η∂L∂W=W−η X⊤∂L∂Y\boldsymbol{W} \leftarrow \boldsymbol{W} - \eta \frac{\partial \mathcal{L}}{\partial \boldsymbol{W}} = \boldsymbol{W} - \eta \, \boldsymbol{X}^\top \frac{\partial \mathcal{L}}{\partial \boldsymbol{Y}}

(链式法则给出 ∂L/∂W=X⊤ ∂L/∂Y\partial \mathcal{L}/\partial \boldsymbol{W} = \boldsymbol{X}^\top \, \partial \mathcal{L}/\partial \boldsymbol{Y},这一步下面会反复用到)。但它对输出的实际影响是:

ΔY=−η XX⊤∂L∂Y\Delta \boldsymbol{Y} = -\eta \, \boldsymbol{X} \boldsymbol{X}^\top \frac{\partial \mathcal{L}}{\partial \boldsymbol{Y}}

问题就在这个 XX⊤\boldsymbol{X} \boldsymbol{X}^\top:如果输入在某些方向上能量很大、在另一些方向上能量很小,那么同样的学习率 η\eta,在高能方向上会把输出推得太狠、在低能方向上几乎推不动。**参数空间里等距的一步,在特征空间里根本不等距。**而我们最终评估模型、计算 loss 的地方是输出空间——所以”理想”的更新应该直接在特征层面做梯度下降:

Y←Y−η∂L∂Y\boldsymbol{Y} \leftarrow \boldsymbol{Y} - \eta \frac{\partial \mathcal{L}}{\partial \boldsymbol{Y}}

麻烦在于 Y\boldsymbol{Y} 不是我们能直接改的变量——它是 XW\boldsymbol{X} \boldsymbol{W} 的计算结果,我们能动的只有 W\boldsymbol{W}。于是整个问题变成:怎样选 ΔW\Delta \boldsymbol{W},使得 XΔW\boldsymbol{X} \Delta \boldsymbol{W} 尽可能等于想要的特征更新?

这个问题一旦问出来,答案几乎是送分的:这是一个线性回归。

二、符号约定

符号含义形状/说明
Xt\boldsymbol{X}_t第 tt 步某线性层的输入(一个 batch 的激活)b×dinb \times d_{\text{in}}
Wt\boldsymbol{W}_t该层权重din×doutd_{\text{in}} \times d_{\text{out}}
Gt\boldsymbol{G}_t参数梯度 ∂L/∂W\partial \mathcal{L}/\partial \boldsymbol{W}din×doutd_{\text{in}} \times d_{\text{out}}
Mt\boldsymbol{M}_t动量缓冲区与 Gt\boldsymbol{G}_t 同形
Zt\boldsymbol{Z}_t输入二阶统计的 EMA:βZt−1+(1−β)(Xt⊤Xt+λI)\beta \boldsymbol{Z}_{t-1} + (1-\beta)(\boldsymbol{X}_t^\top \boldsymbol{X}_t + \lambda \boldsymbol{I})din×dind_{\text{in}} \times d_{\text{in}}
Φ\boldsymbol{\Phi}待求的更新方向(回归变量)din×doutd_{\text{in}} \times d_{\text{out}}
β\beta动量衰减系数典型 0.9–0.95
λ\lambda岭回归正则系数>0> 0
γ\gamma内层(增量)学习率>0> 0
msgn(⋅)\mathrm{msgn}(\cdot)矩阵符号函数:UV⊤\boldsymbol{U} \boldsymbol{V}^\top(取 SVD 的正交极因子)保持形状
μP\mu\mathcal{P}Maximal Update Parametrization,一种超参可跨宽度迁移的参数化方案见来源 3

一个容易混的点先说清:本文所有推导都在”单层权重矩阵”的粒度上进行,这也是 Muon 系优化器的适用对象;embedding 层与最后的 LM head 通常仍用 Adam/AdamW(见来源 10 的 modded-nanogpt 实践)。

三、核心推导:动量是一个在线回归的解

3.1 回归目标

设更新规则为 W←W−ηΦ\boldsymbol{W} \leftarrow \boldsymbol{W} - \eta \boldsymbol{\Phi},则特征层面的变化是 ΔY=−ηXΦ\Delta \boldsymbol{Y} = -\eta \boldsymbol{X} \boldsymbol{\Phi}。我们希望它逼近理想的 −η ∂L/∂Y-\eta \, \partial \mathcal{L}/\partial \boldsymbol{Y},于是考虑最小化:

min⁡Φ  12∥XΦ−∂L∂Y∥F2+λ2∥Φ∥F2\min_{\boldsymbol{\Phi}} \; \frac{1}{2} \left\| \boldsymbol{X} \boldsymbol{\Phi} - \frac{\partial \mathcal{L}}{\partial \boldsymbol{Y}} \right\|_F^2 + \frac{\lambda}{2} \left\| \boldsymbol{\Phi} \right\|_F^2

这是一个标准的岭回归(ridge regression):第一项要求 XΦ\boldsymbol{X} \boldsymbol{\Phi} 拟合输出侧梯度,第二项是正则。对 Φ\boldsymbol{\Phi} 求导置零:

X⊤(XΦ−∂L∂Y)+λΦ=0    ⟹    Φ∗=(X⊤X+λI)−1X⊤∂L∂Y\boldsymbol{X}^\top \left( \boldsymbol{X} \boldsymbol{\Phi} - \frac{\partial \mathcal{L}}{\partial \boldsymbol{Y}} \right) + \lambda \boldsymbol{\Phi} = 0 \;\;\Longrightarrow\;\; \boldsymbol{\Phi}^{*} = \left( \boldsymbol{X}^\top \boldsymbol{X} + \lambda \boldsymbol{I} \right)^{-1} \boldsymbol{X}^\top \frac{\partial \mathcal{L}}{\partial \boldsymbol{Y}}

把链式法则 X⊤∂L/∂Y=G\boldsymbol{X}^\top \partial \mathcal{L}/\partial \boldsymbol{Y} = \boldsymbol{G} 代进去,得到一个极干净的形式:

Φ∗=(X⊤X+λI)−1G\boldsymbol{\Phi}^{*} = \left( \boldsymbol{X}^\top \boldsymbol{X} + \lambda \boldsymbol{I} \right)^{-1} \boldsymbol{G}

解读:真正”靠谱的梯度”不是 G\boldsymbol{G} 本身,而是被 (X⊤X+λI)−1\left( \boldsymbol{X}^\top \boldsymbol{X} + \lambda \boldsymbol{I} \right)^{-1} 校正过的 G\boldsymbol{G}。直觉上:输入能量大的方向,其梯度分量天然偏大(G=X⊤∂L/∂Y\boldsymbol{G} = \boldsymbol{X}^\top \partial \mathcal{L}/\partial \boldsymbol{Y} 里被 X\boldsymbol{X} 放大过一次),预条件子把它除回去,正好抵消;λI\lambda \boldsymbol{I} 保证低能方向的除法不会爆炸(输入张成子空间之外的方向由 λ\lambda 兜底,退化为普通梯度)。这就是”把参数更新拉回特征层面”的全部数学。

两个极端情形可以帮读者锚定:

  • λ→0\lambda \to 0 且 X\boldsymbol{X} 列满秩时,Φ∗→(X⊤X)−1G\boldsymbol{\Phi}^* \to (\boldsymbol{X}^\top \boldsymbol{X})^{-1} \boldsymbol{G},即最小二乘意义上的精确特征梯度下降;
  • λ→∞\lambda \to \infty 时,Φ∗≈G/λ\boldsymbol{\Phi}^* \approx \boldsymbol{G}/\lambda,退化为(缩放过的)普通参数梯度。

(本文用数值实验验证过:λ=10−8\lambda = 10^{-8} 时岭解与 lstsq 最小二乘解逐元素一致到机器精度——见来源段的推导清单。)

3.2 从静态解到动量:为什么要 EMA

上面的 Φ∗\boldsymbol{\Phi}^* 是对单个 batch 的最优解。但单个 batch 的 X⊤X\boldsymbol{X}^\top \boldsymbol{X} 噪声很大、且随训练漂移,直接用会抖。自然的做法是对 X⊤X\boldsymbol{X}^\top \boldsymbol{X} 和 G\boldsymbol{G} 都做 EMA,于是得到一个 SGDM 变体:

Mt=βMt−1+(1−β)Gt,Zt=βZt−1+(1−β)(Xt⊤Xt+λI),Wt=Wt−1−ηZt−1Mt\boldsymbol{M}_t = \beta \boldsymbol{M}_{t-1} + (1 - \beta) \boldsymbol{G}_t, \qquad \boldsymbol{Z}_t = \beta \boldsymbol{Z}_{t-1} + (1 - \beta) \left( \boldsymbol{X}_t^\top \boldsymbol{X}_t + \lambda \boldsymbol{I} \right), \qquad \boldsymbol{W}_t = \boldsymbol{W}_{t-1} - \eta \boldsymbol{Z}_t^{-1} \boldsymbol{M}_t

到这里,「动量」就被重新诠释了:Zt−1Mt\boldsymbol{Z}_t^{-1} \boldsymbol{M}_t 是”更靠谱的动量”——它不是梯度的简单平均,而是一个在线回归问题(目标还在随训练漂移)的近似解。原博客的说法是:“动量不仅仅可以看作梯度的平均,它还可以被视为一个在线回归问题的解。”

这个视角一旦建立,一个直接的玩法是:把任何动量优化器里的”动量”换成 Zt−1Mt\boldsymbol{Z}_t^{-1} \boldsymbol{M}_t。比如换成 Muon:

Wt=Wt−1−η msgn ⁣(Zt−1Mt)\boldsymbol{W}_t = \boldsymbol{W}_{t-1} - \eta \, \mathrm{msgn}\!\left( \boldsymbol{Z}_t^{-1} \boldsymbol{M}_t \right)

这”大致上”就是 Newton-Muon(arXiv:2604.01472);说”大致上”是因为原论文用的是先校正后 EMA(对 Z−1G\boldsymbol{Z}^{-1} \boldsymbol{G} 做动量平均,原则上可以省掉一组状态变量),而这里是先 EMA 后校正。两种顺序在数学上不等价(矩阵求逆与平均不可交换),但思想同源。

3.3 一个关键的退化:Muon 是各向同性假设的特例

如果输入是各向同性的——即 X⊤X≈σ2I\boldsymbol{X}^\top \boldsymbol{X} \approx \sigma^2 \boldsymbol{I}——那么 Zt≈(σ2+λ)I\boldsymbol{Z}_t \approx (\sigma^2 + \lambda) \boldsymbol{I} 变成标量矩阵,Zt−1Mt\boldsymbol{Z}_t^{-1} \boldsymbol{M}_t 与 Mt\boldsymbol{M}_t 只差一个标量。而 Muon 的 msgn\mathrm{msgn} 是零次齐次的——对任意标量 c>0c > 0,msgn(cM)=msgn(M)\mathrm{msgn}(c \boldsymbol{M}) = \mathrm{msgn}(\boldsymbol{M})(SVD 的左右奇异向量不随整体缩放改变;本文已用随机矩阵数值验证,见来源段)。所以标量因子被 msgn\mathrm{msgn} 吃掉,Newton-Muon 退化为 Muon。

这个退化有两层含义。第一层是解释性的:Muon 可以理解为”各向同性假设下的特征梯度下降”——它默认所有输入方向同等重要,用 msgn\mathrm{msgn} 把动量白化到各方向均匀,已经隐式完成了”拉回特征层面”的大部分工作。第二层是操作性的:λ→∞\lambda \to \infty 时 Newton-Muon 也退化为 Muon,所以 λ\lambda 成了一个可调的”与 Muon 的近似程度”旋钮——嫌预条件太激进,就把 λ\lambda 调大。

四、Newton-Muon:解析解路线的工程账

Newton-Muon(Du 等,arXiv:2604.01472,2026 年 4 月)从另一个方向殊途同归:他们不谈”特征层面的梯度下降”,而是像推导牛顿法那样,把 loss 对权重扰动做二阶近似,用三个矩阵——梯度 G\boldsymbol{G}、输出侧曲率 H\boldsymbol{H}、堆叠的输入数据矩阵 Z\boldsymbol{Z}——构造代理目标,一步最小化后得到(省去动量与权重衰减):

W←W−η msgn ⁣(G(ZZ⊤)−1)\boldsymbol{W} \leftarrow \boldsymbol{W} - \eta \, \mathrm{msgn}\!\left( \boldsymbol{G} \left( \boldsymbol{Z} \boldsymbol{Z}^\top \right)^{-1} \right)

注意 ZZ⊤\boldsymbol{Z} \boldsymbol{Z}^\top 在他们的记号里堆叠的是 batch 维的输入,与本文的 X⊤X\boldsymbol{X}^\top \boldsymbol{X} 同源(差一个转置约定)。论文的核心论点是:标准 Muon 可以被解释为一种”隐式牛顿法”,只是它忽略了输入二阶矩诱导的右预条件。实验上,在复现的 Modded-NanoGPT speedrun 配置(GPT-2 预训练)中,Newton-Muon 用少 6% 的迭代步数达到目标验证 loss,端到端训练时间约省 4%(数字见来源 2 摘要,本文未复跑该实验)。

工程上这条路线要付两笔账:

其一,矩阵求逆。din×dind_{\text{in}} \times d_{\text{in}} 的 Zt\boldsymbol{Z}_t 求逆,朴素实现是 O(din3)O(d_{\text{in}}^3)。缓解办法有两类:原博客引用其前作《矩阵 r 次方根和逆 r 次方根的高效计算》(kexue.fm/archives/11175)的迭代法是一类;Newton-Muon 的官方实现(github.com/zhehangdu/Newton-Muon)走的是另一类——对预条件协方差做 EWMA、每 32 步才刷新一次 batched Cholesky 精确求逆(cholesky_ex + cholesky_inverse),把求逆摊薄;Newton-Schulz 迭代只用于 msgn\mathrm{msgn} 正交化(沿用 Muon 本身)。

其二,状态量显存。Zt\boldsymbol{Z}_t 是一个 din×dind_{\text{in}} \times d_{\text{in}} 的矩阵。以 din=4096d_{\text{in}} = 4096 为例:40962≈16784096^2 \approx 1678 万元素,fp32 存储约 64 MiB/层(本文自算:40962×4 B=64 MiB4096^2 \times 4 \, \text{B} = 64 \, \text{MiB})。一个几十层、每层宽度几千的模型,累计新增状态量以 GiB 计——而且它必须在前向计算时记录 Xt⊤Xt\boldsymbol{X}_t^\top \boldsymbol{X}_t,再传给优化器。这就引出了原博客指出的第一条不满意:

“它需要我们在前向计算的时候记录自相关矩阵 Xt⊤Xt\boldsymbol{X}_t^\top \boldsymbol{X}_t,然后传入到优化器中,这就打破了优化器的独立性——优化器不再是拿到梯度就能干活的’黑盒’,需要耦合模型定义层面的细节,实现上很难说得上优雅,更不用说额外引入的通信和计算开销了。”

对做训练框架的工程师来说,这不是小事:优化器与模型前向耦合,意味着 ZeRO/FSDP 分片、激活重计算、流水并行里的通信模式都要重新设计。

先说数值实验(自算)。取最简单的二值情形:设输入只有两个方向、能量比 100:1(X⊤X=diag(100,1)\boldsymbol{X}^\top \boldsymbol{X} = \mathrm{diag}(100, 1)),梯度 G=(10,1)\boldsymbol{G} = (10, 1),λ=0.1\lambda = 0.1,则岭回归解为 Φ∗=(diag(100.1,1.1))−1(10,1)≈(0.0999,0.909)\boldsymbol{\Phi}^* = (\mathrm{diag}(100.1, 1.1))^{-1}(10,1) \approx (0.0999, 0.909)。用 δ 规则增量迭代(γ=0.005\gamma = 0.005),5000 步后 Φt→(0.0999,0.909)\boldsymbol{\Phi}_t \to (0.0999, 0.909),与解析解一致到 10−1210^{-12};但高能方向(每步衰减 0.4995)几十步收敛、低能方向(0.9945)要上千步。增量形态与解析形态收敛到同一个在线回归的解,只是各方向速度不同——这正是 AK-Momentum”方向感知”的最小示例。

再说工程视角下的分寸。苏剑林在评论区指出,这类结构”更适合的叫法是 large-batch TTT(test-time training)“——优化器内部还在解一个小型优化问题,只是它不像线性注意力那样受序列并行性约束,“完全可以考虑 SGD 以外的优化器”。用谱系的语言说:传统动量(SGDM)与自适应学习率(Adam)操作的是梯度统计;Muon 把操作对象升到矩阵的奇异结构(msgn\mathrm{msgn});校正动量线再升到输入二阶统计 X⊤X\boldsymbol{X}^\top \boldsymbol{X}——每往上一层,优化器对”这一层在数据上实际做了什么”的知情权多一分,对梯度黑盒统计的依赖少一分。

五、DeltaMomentum:不求逆的增量路线

5.1 用梯度下降解回归

既然式(3)的解析解要求逆,一个”更普适且更可玩”(原博客语)的做法是:不解析求解,直接用梯度下降优化回归目标。对式(3)的目标函数求梯度:

∇Φ=(X⊤X+λI)Φ−X⊤∂L∂Y=(X⊤X+λI)Φ−G\nabla_{\boldsymbol{\Phi}} = \left( \boldsymbol{X}^\top \boldsymbol{X} + \lambda \boldsymbol{I} \right) \boldsymbol{\Phi} - \boldsymbol{X}^\top \frac{\partial \mathcal{L}}{\partial \boldsymbol{Y}} = \left( \boldsymbol{X}^\top \boldsymbol{X} + \lambda \boldsymbol{I} \right) \boldsymbol{\Phi} - \boldsymbol{G}

(注意 X⊤∂L/∂Y=G\boldsymbol{X}^\top \partial \mathcal{L}/\partial \boldsymbol{Y} = \boldsymbol{G} 又出现了一次。)以学习率 γ\gamma 做一步内层梯度下降:

Φt=Φt−1−γ[(Xt⊤Xt+λI)Φt−1−Gt]=(1−γλ)Φt−1+γ[Gt−(Xt⊤Xt)Φt−1]\boldsymbol{\Phi}_t = \boldsymbol{\Phi}_{t-1} - \gamma \left[ \left( \boldsymbol{X}_t^\top \boldsymbol{X}_t + \lambda \boldsymbol{I} \right) \boldsymbol{\Phi}_{t-1} - \boldsymbol{G}_t \right] = \left(1 - \gamma \lambda\right) \boldsymbol{\Phi}_{t-1} + \gamma \left[ \boldsymbol{G}_t - \left( \boldsymbol{X}_t^\top \boldsymbol{X}_t \right) \boldsymbol{\Phi}_{t-1} \right]

(第二个等号是简单的展开整理,本文已用随机矩阵数值验证恒等。)这个式子值得逐项读:

  • γGt\gamma \boldsymbol{G}_t:新梯度进来,像普通动量;
  • −γ(Xt⊤Xt)Φt−1-\gamma \left( \boldsymbol{X}_t^\top \boldsymbol{X}_t \right) \boldsymbol{\Phi}_{t-1}:旧动量按”它所对应的输入方向当前是否活跃”被扣减——如果 Φt−1\boldsymbol{\Phi}_{t-1} 描述的方向在当前 batch 里能量很大,就被大幅冲销;如果这个方向已经很久没出现,就几乎不动地留着;
  • 1−γλ1 - \gamma \lambda:均匀的慢速衰减兜底。

这就是 DeltaMomentum——对应的正式论文是 Activation-Keyed Momentum(AK-Momentum,arXiv:2608.19491,Hong & Qu,2026 年 8 月)。按论文摘要的说法:“梯度拆成一个作为 key 的输入激活和一个作为 value 的输出侧误差;以激活为键,AK-Momentum 用规范的 δ 规则更新动量缓冲区,使每个方向按其出现频率决定的速率被遗忘。“论文还证明了三件事:它是合法的动量、它无需矩阵求逆就实现了输入侧曲率校正、它在固定与漂移最优值两种情形下都比 EMA 更快清除过期方向;额外开销锁定在 gated-MLP 块线性成本的 22.2%–25.0%,且无持久显存开销(数字见来源 3 摘要,本文未复跑)。

5.2 和 EMA 对照:δ 规则到底改了什么

把 EMA 和 δ 规则并排放,结构上的差别一行就能看完:

Mt=βMt−1+(1−β)Gt⏟EMA:所有方向同一遗忘速率 1−βΦt=(1−γλ)Φt−1+γ[Gt−(Xt⊤Xt)Φt−1]⏟δ 规则:遗忘速率 1−γ(λ+该方向输入能量)\underbrace{\boldsymbol{M}_t = \beta \boldsymbol{M}_{t-1} + (1-\beta) \boldsymbol{G}_t}_{\text{EMA:所有方向同一遗忘速率 } 1-\beta} \qquad \underbrace{\boldsymbol{\Phi}_t = \left(1 - \gamma\lambda\right)\boldsymbol{\Phi}_{t-1} + \gamma \left[\boldsymbol{G}_t - \left(\boldsymbol{X}_t^\top \boldsymbol{X}_t\right)\boldsymbol{\Phi}_{t-1}\right]}_{\text{δ 规则:遗忘速率 } 1-\gamma\left(\lambda + \text{该方向输入能量}\right)}

对单个方向(输入能量记为 x2x^2,即 X⊤X\boldsymbol{X}^\top \boldsymbol{X} 在该方向的特征值)写出一维形式最清楚。若信号 xtgtx_t g_t 恒定,两种更新都收敛到稳定值,但偏离稳态后的衰减因子不同:

EMA:衰减因子=β    (所有方向相同),δ 规则:衰减因子=1−γ(λ+x2)    (按方向自适应)\text{EMA:衰减因子} = \beta \;\;(\text{所有方向相同}), \qquad \text{δ 规则:衰减因子} = 1 - \gamma\left(\lambda + x^2\right) \;\;(\text{按方向自适应})

等价的记忆长度可以写成”等效步数”:

EMA:11−β 步(方向无关),δ 规则:1γ(λ+x2) 步(随方向能量变化)\text{EMA:} \frac{1}{1-\beta} \text{ 步(方向无关)}, \qquad \text{δ 规则:} \frac{1}{\gamma\left(\lambda + x^2\right)} \text{ 步(随方向能量变化)}

(本文自算:β=0.9\beta = 0.9 对应 10 步;γ=0.05,λ=0\gamma = 0.05, \lambda = 0 时 x2=100x^2 = 100 的方向对应 0.2 步、x2=1x^2 = 1 的方向对应 20 步——同一个 γ\gamma 下,记忆长度相差两个数量级。)

这张图说明了什么:EMA 是一把”所有方向统一刀口”的遗忘闸门,δ 规则则把闸门的开度交给数据本身——输入里高频出现的方向,其动量信息也最快被新数据冲刷;输入里罕见的方向,其动量最顽固地留着。对”最优值在漂移”的非平稳训练(warmup、数据分布切换、loss landscape 随训练演化)来说,高频方向的过期动量正是主要污染源,δ 规则恰好在这一侧胜出;代价是低频方向的动量更新迟缓,以及一个必须认真对待的稳定性边界(下一节)。

5.3 稳定性边界:γx² < 2 不是可选项

一维 δ 规则的衰减因子 1−γ(λ+x2)1 - \gamma(\lambda + x^2) 若为负,更新会在目标两侧振荡发散。稳定条件是:

0<γ(λ+x2)<20 < \gamma \left( \lambda + x^2 \right) < 2

这不是理论洁癖。本文的数值实验里,取 γ=0.05\gamma = 0.05、x2=100x^2 = 100(γx2=5>2\gamma x^2 = 5 > 2),模拟在 2000 步内直接溢出(inf)——一旦某个 batch 的输入在某个方向能量集中且 γ\gamma 偏大,动量就会爆炸。实践里的对应处理是:对 X\boldsymbol{X} 做归一化(如 RMSNorm 后的激活再按 dind_{\text{in}} 缩放,使 X⊤X\boldsymbol{X}^\top \boldsymbol{X} 特征值有界)、γ\gamma 按 1/din1/d_{\text{in}} 量级取。原博客的原话是细节”主要是关于 X\boldsymbol{X} 的归一化和 γ\gamma 的选择,请大家自行看原论文”,同时提醒”原论文的一些处理笔者也不是特别认可,建议大家看的时候斟酌参考”——这也是本文不展开其具体归一化方案、只给出稳定性条件的原因。

5.4 数值实验:同一翻转目标下,快多少、慢多少

为了把”方向感知遗忘”从口号变成数字,本文设计了一个最小实验(自算,代码逻辑见来源段):目标值在 t=1000t = 1000 步从 +1+1 翻转为 −1-1,观察动量跟踪新目标的速度。EMA 取 β=0.9\beta = 0.9;δ 规则取 γ=0.005\gamma = 0.005,输入能量分三档 x2∈{100,20,1}x^2 \in \{100, 20, 1\}(对应 γx2∈{0.5,0.1,0.005}\gamma x^2 \in \{0.5, 0.1, 0.005\},均在稳定域内)。结果(翻转后 50 步内平均跟踪误差、残差降到 5% 所需步数,均为本文实算):

更新规则每步衰减因子翻转后 50 步平均误差残差降到 5% 所需步数
δ 规则,x2=100x^2 = 100(高能方向)0.5000.0405
δ 规则,x2=20x^2 = 20(中能方向)0.9000.35829
EMA,β=0.9\beta = 0.9(任何方向)0.9000.35829
δ 规则,x2=1x^2 = 1(低能方向)0.9951.765598

读法:

  • 高能方向上,δ 规则的跟踪误差 0.040 对 EMA 的 0.358,快约一个数量级;残差清到 5% 只需 5 步,是 EMA(29 步)的约 1/6。AK-Momentum 摘要”clears stale directions faster than EMA”在最小情形下的量化体现。
  • 中能方向恰好与 EMA 等价(γx2=1−β\gamma x^2 = 1 - \beta 时两者衰减因子相同)。
  • 低能方向上 δ 规则反而慢 20 倍(598 步 vs 29 步)——这不是缺陷,是同一机制的反面:该方向输入罕见,动量”舍不得忘”恰好在保留长程信息。工程上真正的风险是低能方向长期积压过期动量,需要 λ\lambda(均匀衰减项)来兜底——这也解释了为什么 λ\lambda 不能设为 0。

(局限性要说明:这是标量情形的最小实验,只验证遗忘速率的机制,不含矩阵耦合、随机 batch 噪声与真实训练动力学;结论用于建立直觉,不能直接外推到大模型训练收益。)

六、谱系对照:优化器与线性注意力的平行演化

原博客最有趣的观察是一个跨领域的同构:这条”校正动量”路线,与线性注意力从 Vanilla 到 DeltaNet 再到 MesaNet 的演化”极其一致”。把两边的记号对齐后,对应关系如下表(右列三行是原博客的原文对应:“与旧动量相比,相当于 GDN 与 Vanilla Linear Attention 的区别,而 Zt−1Mt\boldsymbol{Z}_t^{-1} \boldsymbol{M}_t 则相当于 MesaNet”):

层面线性注意力侧优化器侧共同结构
状态更新Vanilla 线性注意力:St=St−1+βtvtkt⊤\boldsymbol{S}_t = \boldsymbol{S}_{t-1} + \boldsymbol{\beta}_t \boldsymbol{v}_t \boldsymbol{k}_t^\top(只加不删)EMA 动量:Mt=βMt−1+(1−β)Gt\boldsymbol{M}_t = \beta \boldsymbol{M}_{t-1} + (1-\beta)\boldsymbol{G}_t(均匀遗忘)状态 = 外积/梯度的累积
精确更新DeltaNet / GDN(arXiv:2412.06464):St=St−1(I−ktkt⊤)+βtvtkt⊤\boldsymbol{S}_t = \boldsymbol{S}_{t-1}\left(\boldsymbol{I} - \boldsymbol{k}_t \boldsymbol{k}_t^\top\right) + \boldsymbol{\beta}_t \boldsymbol{v}_t \boldsymbol{k}_t^\top(写入前先冲销旧键;简化形式,省略门控/归一化细节)DeltaMomentum / AK-Momentum:写入新梯度前先按 X⊤X\boldsymbol{X}^\top \boldsymbol{X} 冲销旧动量δ 规则:检索/遗忘由 key 自身能量决定
最优解MesaNet(arXiv:2506.05233):每个时间点用共轭梯度把 in-context 回归解到最优解析校正动量 Zt−1Mt\boldsymbol{Z}_t^{-1} \boldsymbol{M}_t(含 Newton-Muon)显式求解在线回归,代价是求逆/迭代
flowchart TD
    A["朴素累积<br/>线性注意力: S += βvkᵀ / 优化器: M = βM+(1-β)G"] -->|引入 δ 规则: 写前冲销| B["方向感知更新<br/>DeltaNet/GDN 与 DeltaMomentum"]
    A -->|显式解在线回归| C["解析最优<br/>MesaNet 与 Z⁻¹M (Newton-Muon)"]
    B -->|"不求逆、可增量,<br/>稳定性边界 γx²<2"| D["工程可用形态<br/>AK-Momentum: 开销 22.2%–25.0%,<br/>无持久额外显存"]
    C -->|"矩阵求逆 O(d³) + 状态量 d×d"| E["昂贵但理论干净<br/>λ→∞ 退化为 Muon"]
    D --> F["共同本质:<br/>遗忘/写入速率由输入方向自身能量决定"]
    E --> F

这张图说明了什么:两条看似不相干的技术线(序列建模的线性注意力、深度学习的优化器)在”状态如何更新”这个最底层的问题上,走过了完全相同的三步——只加不删、按 key 冲销的 δ 规则、显式求解在线回归。差异只剩工程约束:注意力侧要并行(于是有 chunkwise 算法),优化器侧要求逆太贵(于是有增量形态)。

另一个值得记的周边:评论区作者本人对 DoPr(arXiv:2606.06418,Double Preconditioning)的评价——“Muon 已经将梯度/动量白化了,已经足够均匀了,用数据去 Precondition 一下它,作用重复不说,还让结果严重受限于数据的感觉。我也是跟 DoPr 论文一样,测出来 Loss 没啥优势甚至变差”。这条评论的价值在于给出了一个负结果的坦诚记录:同样的预条件思想,叠在 msgn 之上未必有益——这不是路线错了,而是两重白化互相抵消的信号。

七、边界与未解:这条路没解决的问题

按”从直觉到边界”的叙事承诺,最后必须说清这条路线的账面上还有哪些赤字。

**实现层面:优化器独立性被打破。**前向记录 Xt⊤Xt\boldsymbol{X}_t^\top \boldsymbol{X}_t 并传给优化器,意味着优化器不再是”拿到梯度就能干活”的黑盒(原博客原文引述见第四节)。在真实的分布式训练里,这会与梯度分桶/overlap、激活重计算、张量并行的边界产生纠缠;AK-Momentum 论文把额外开销控制在 22.2%–25.0%(gated-MLP 块线性成本口径),这个数字对 speedrun 竞赛可接受,对大规模预训练的成本核算则必须逐项重审。

**理论层面:探索被限制在输入子空间。**用实际输入构建预条件子,优化器的探索方向被压进 X\boldsymbol{X} 张成的子空间——原博客认为这”可能让优化器的探索受限于输入所张成的子空间,对其余方向的探索不足,从而效果不佳”。缓解手段是加大 λ\lambda 削弱预条件力度,但代价是多一个需要精调的超参。λ\lambda 的两难在于:小了,子空间外的方向没有兜底(数值上低能方向记忆过长、且 λ→0\lambda \to 0 时低能方向校正会放大噪声);大了,退化为普通 Muon,白忙一场。

**实证层面:收益证据比初看更具体,但仍有边界。**AK-Momentum 摘要给出了真实预训练对照:FineWeb-Edu 预训练中,AK-AdamW 在 67M 档用少至 46.39±4.32% 的步数、370M 档少 22.12±0.80% 步数达到 AdamW 的验证 loss(三种子),且”增益在 1B、Chinchilla 最优预算下持续”;同协议下调好的 Muon 基线在两个语言模型规模上都高于 AK-AdamW,增益在 SGD/ResNet-18/ViT-Tiny(CIFAR-10)上也成立。Newton-Muon 的 6% 步数/4% 时间收益则来自 Modded-NanoGPT speedrun(GPT-2 规模)。**可用的诚实总结是:两个方法都还停留在 ≤1B 与 speedrun 规模;Muon 基线在语言建模上仍占优(AK-Momentum 论文自报),“替换 Muon”的证据尚不存在。**苏剑林自己的总结是:“这个方向仍处于方兴未艾的阶段——雏形已现,但工程与理论上的问题都还没有完全解决,问题并不比结论少。”

**谱系层面:还有一分支没接上。**评论区有读者质疑这个想法与 Nested Learning 撞名(“这个想法 Nested Learning 一年前就提出来了吧?是没注意到还是故意不引?”),苏剑林核对后的回复是:含义并不相同,“它完全没有用 X⊤X\boldsymbol{X}^\top \boldsymbol{X} 来做 precondition 的思想”。这条被澄清的撞名提醒我们:δ 规则这个数学结构太基本了,它在不同社区(快速权重、nested learning、TTT、线性注意力)被反复独立发明,引用谱系本身就是一张值得画的图。

八、小结

把整条推导链画成一张图收拢:

flowchart TD
    A["理想目标<br/>特征层面梯度下降 Y ← Y − η·∂L/∂Y"] -->|"Y 不可直接改,<br/>只能改 W"| B["在线回归问题<br/>min ½‖XΦ − ∂L/∂Y‖² + λ/2‖Φ‖²"]
    B -->|"闭式解"| C["校正动量<br/>Φ* = (XᵀX+λI)⁻¹G"]
    B -->|"一步内层梯度下降"| D["δ 规则动量<br/>Φ ← (1−γλ)Φ + γ(G − XᵀX·Φ)"]
    C -->|"套 msgn"<br/>λ→∞ / 各向同性退化| E["Newton-Muon<br/>msgn(Z⁻¹M), 求逆 O(d³)"]
    D -->|"稳定性边界 γx²<2<br/>无求逆、无持久额外显存"| F["AK-Momentum<br/>开销 22.2%–25.0%"]
    C -.同构.-> G["MesaNet<br/>(共轭梯度解到最优)"]
    D -.同构.-> H["Gated DeltaNet<br/>(写前冲销)"]

这张图说明了什么:整条故事只有一个源头——“特征层面的梯度下降”——但它有两个分叉(解析解 vs 增量迭代)和两处代价标签(求逆开销 vs 稳定性边界),并且每个节点在线性注意力侧都有一个同构对应物。记住这张图,再看任何”新优化器”论文都能先问一句:它站在图上的哪个位置?

最后收拢成三句话:

  • 一个视角:优化器该逼近的不是参数层面的梯度下降,而是特征层面的梯度下降;由此,动量被重新诠释为在线回归问题的解,“更靠谱的动量” Zt−1Mt\boldsymbol{Z}_t^{-1} \boldsymbol{M}_t 是它的解析形态。
  • 两个形态:解析形态(Newton-Muon:msgn(Z−1M)\mathrm{msgn}(\boldsymbol{Z}^{-1}\boldsymbol{M}),Muon 是它 λ→∞\lambda \to \infty 或各向同性下的特例)与增量形态(DeltaMomentum/AK-Momentum:δ 规则更新,不求逆、无持久额外显存,但必须守住 γx2<2\gamma x^2 < 2 的稳定性边界)。
  • 一个待付的账:优化器与前向的耦合(工程)和输入子空间对探索的限制(理论),决定了这条线目前是 speedrun 圈的利器、还不是大规模预训练的默认选项。

对工程读者的行动建议:如果做中等规模的训练基础设施,AK-Momentum 的”22.2%–25.0% 开销换方向感知遗忘”值得在漂移严重的训练场景(课程学习、多阶段数据混合)做一次 A/B;如果做优化器研究,“优化器内部的内层优化器”这个自由度(评论区点出的 large-batch TTT 视角)可能是比又一个 ϕ\phi 更新函数更值得投入的方向。

📋 来源与核验记录

以下来源均为本文写作过程中实际打开并核对过的一手来源(核对日期:2026-10-01,北京时间):

  1. 苏剑林. 《动量的新理解:逼近特征层面的梯度下降》. 科学空间, 2026-08-23. https://kexue.fm/archives/11875 —— 本文主线;基本形式、回归目标式、闭式解、SGDM 变体、Newton-Muon 形式(“大致上”的说明)、Muon 退化条件、增量更新推导、相关工作(谢天同学的形式、DoPr)、两条不满意、小结,均出自此文;评论区核对:hazdzz 与苏剑林关于 hypergradient/preconditioner 的讨论、苏剑林”更适合的叫法是 large-batch TTT”的回复、Nested Learning 撞名的澄清、DoPr 负结果的坦诚记录。本文经由 r.jina.ai 阅读器代理获取全文(kexue.fm 对数据中心 IP 反爬,直接 curl 返回 403),已核对标题与作者署名,公式与 RSS 摘要一致。
  2. Du, Z. et al. “The Newton-Muon Optimizer.” arXiv:2604.01472, 2026-04-01. https://arxiv.org/abs/2604.01472 —— 已核对摘要:代理目标三矩阵(G,H,Z\boldsymbol{G}, \boldsymbol{H}, \boldsymbol{Z})、闭式更新 W←W−η msgn(G(ZZ⊤)−1)\boldsymbol{W} \leftarrow \boldsymbol{W} - \eta \, \mathrm{msgn}(\boldsymbol{G}(\boldsymbol{Z}\boldsymbol{Z}^\top)^{-1})、“Muon 可解释为忽略输入二阶矩右预条件的隐式牛顿法”、Modded-NanoGPT speedrun 上 6% 步数/约 4% 时间收益。提交作者 Zhehang Du。另核对其官方实现 github.com/zhehangdu/Newton-Muon 的 train_gpt_newton_muon_1.py:预条件逆为 batched Cholesky 精确求逆(cholesky_ex+cholesky_inverse,EWMA 后每 32 步刷新),Newton-Schulz 迭代仅用于 msgn 正交化。
  3. Hong, E. & Qu, G. “Activation-Keyed Momentum: An Anisotropic Momentum Update via the Delta Rule.” arXiv:2608.19491 (v2, 2026-09-03). https://arxiv.org/abs/2608.19491 —— 已核对摘要(经 arXiv API 全文):梯度拆 key(输入激活)/value(输出侧误差)、δ 规则动量更新、合法动量与无求逆曲率校正的证明声明、固定/漂移最优值下清除过期方向快于 EMA、drop-in 替换、μP 下系数跨宽度迁移、额外开销 22.2%–25.0%(gated-MLP 块线性成本)、无持久额外显存;FineWeb-Edu 预训练对照(67M 少 46.39±4.32% 步、370M 少 22.12±0.80% 步、1B Chinchilla 最优预算下增益持续、Muon 基线在两个语言模型规模上高于 AK-AdamW、SGD/ResNet-18/ViT-Tiny CIFAR-10 增益成立)。
  4. Yang, S., Kautz, J. & Hatamizadeh, A. “Gated Delta Networks: Improving Mamba2 with Delta Rule.” arXiv:2412.06464 (ICLR 2025). https://arxiv.org/abs/2412.06464 —— 已核对摘要:门控(快速擦除)与 δ 规则(精准改写)互补、并行训练算法、超越 Mamba2/DeltaNet 的基准结论。用于第六节 GDN 行。
  5. von Oswald, J. et al. “MesaNet: Sequence Modeling by Locally Optimal Test-Time Training.” arXiv:2506.05233 (v2, ICLR 2026). https://arxiv.org/abs/2506.05233 —— 已核对摘要:Mesa 层源自 in-context loss、每个时间点用共轭梯度解到最优、数值稳定可 chunkwise 并行、十亿参数规模实验、推理期额外 flops 代价。用于第六节 MesaNet 行。
  6. Zhang, T. T. et al. “Double Preconditioning (DoPr): Optimization for Test-Time Performance, not Validation Loss.” arXiv:2606.06418, 2026-06-04. https://arxiv.org/abs/2606.06418 —— 已核对摘要:梯度侧预条件(Adam/Muon)+ 激活侧预条件(KFAC 类)的双预条件范式、面向 test-time feedback 场景、验证 loss 与下游指标的分离观察。苏剑林对其的负结果评价出自来源 1 评论区(2026-08-25 回复)。
  7. 苏剑林. 《为什么我们偏爱各向同性?基于最速下降的理解》. 科学空间. https://kexue.fm/archives/11549 —— 原文引用的动机文章(“参数本质上是模型的副产品”),本文未展开读全文,仅登记其作为特征层面最速下降思想的出处。
  8. 苏剑林. 《矩阵 r 次方根和逆 r 次方根的高效计算》. 科学空间. https://kexue.fm/archives/11175 —— 原文引用的求逆高效算法出处,本文未展开读全文,仅登记存在性。
  9. 谢天. 《特征空间的最速下降》. 知乎专栏, 2026. —— 原文引用的”Z−1/2\boldsymbol{Z}^{-1/2} 内外各作用一次”变体出处;登记存在性,本文未读全文。该文链接见于来源 1 原文的超链接(zhihu 专栏),知乎对数据中心 IP 设登录墙,本文写作时无法独立打开核验,故不在此登记具体 URL,详见未核实项。
  10. Muon 原始实践:Jordan, K. et al. modded-nanogpt 仓库. https://github.com/KellerJordan/modded-nanogpt —— Newton-Muon 论文的实验基座;本文未直接打开该仓库代码,仅从来源 2 摘要确认其为”最早公开发布的 Modded-NanoGPT speedrun 配置”。

本文自行推导/验算的数字清单(与官方口径分列):

  • msgn\mathrm{msgn} 的标量齐次性(msgn(cM)=msgn(M)\mathrm{msgn}(c\boldsymbol{M}) = \mathrm{msgn}(\boldsymbol{M}), c>0c>0):随机 6×46 \times 4 矩阵数值验证为 True。
  • 增量更新展开恒等式(5.1 节第二等号):随机矩阵数值验证为 True。
  • λ→0\lambda \to 0 岭解与最小二乘解一致性:λ=10−8\lambda = 10^{-8} 数值验证为 True。
  • 二维玩具例(第四节):X⊤X=diag(100,1)\boldsymbol{X}^\top \boldsymbol{X} = \mathrm{diag}(100,1)、G=(10,1)\boldsymbol{G} = (10,1)、λ=0.1\lambda = 0.1 时 Φ∗≈(0.0999,0.909)\boldsymbol{\Phi}^* \approx (0.0999, 0.909),方向比 10:1 翻转为约 1:9.1;δ 规则(γ=0.005\gamma = 0.005)5000 步收敛到同解(差 <10−12< 10^{-12}),高/低能方向每步衰减因子 0.4995/0.9945。
  • Z\boldsymbol{Z} 状态量显存:din=4096d_{\text{in}} = 4096 时 40962×4 B=64 MiB4096^2 \times 4\,\text{B} = 64\,\text{MiB}(fp32,每层)。
  • 等效记忆步数:EMA β=0.9\beta = 0.9 为 10 步;δ 规则 γ=0.05,λ=0\gamma = 0.05, \lambda = 0 时 x2=100x^2 = 100 为 0.2 步、x2=1x^2 = 1 为 20 步。
  • 翻转实验全部数字(表 2:衰减因子 0.500/0.900/0.995,50 步平均误差 0.040/0.358/1.765,5% 残差步数 5/29/598):本文最小数值实验实算,实验设定为标量目标 t=1000t = 1000 处从 +1+1 翻转为 −1-1,δ 规则 γ=0.005\gamma = 0.005,EMA β=0.9\beta = 0.9;误差为翻转后第 1–50 步(含翻转当步)的绝对跟踪误差平均,按此约定独立复算应在 ±0.4% 内重合;局限性已在 5.4 节声明。
  • 稳定性发散例:γ=0.05,x2=100\gamma = 0.05, x^2 = 100(γx2=5>2\gamma x^2 = 5 > 2)在 2000 步内数值溢出为 inf。
  • Newton-Muon 的 6% 步数、4% 时间与 AK-Momentum 的 22.2%–25.0% 开销为两篇论文摘要口径,本文未复跑。

未核实项(如实声明):

  • Newton-Muon 原论文的完整推导(二阶代理目标的构造细节、输出侧曲率 H\boldsymbol{H} 如何消去)本文未逐行验证,仅核对摘要给出的闭式结论;“先校正后 EMA 可省一组状态变量”的说法来自来源 1 的转述,本文未回原论文核对状态变量数。
  • AK-Momentum 的三条理论证明(合法动量、无求逆曲率校正、清除过期方向快于 EMA)与 μP 迁移结论,本文未读证明正文,仅核对摘要声明;其正文对 X\boldsymbol{X} 归一化的具体方案(苏剑林表示”不是特别认可”的那部分)本文未核对,故正文未展开其方案细节。
  • 谢天《特征空间的最速下降》(知乎专栏)本文无法独立打开核验(知乎登录墙),其存在性与”Z−1/2\boldsymbol{Z}^{-1/2} 内外各作用一次”的形式均以来源 1 的转述为准;与苏剑林 archives/11175、archives/11549 两篇前置文章一样仅登记引用、未读全文。谱范数约束下的最速下降推导以来源 1 的转述为准。
  • Muon 在主流大模型(如 Kimi K3 等)训练配方中的实际采用状态,本文未查证训练配置一手文档,正文未做相关断言。