为了彻底理解 Muon优化器(MomentUm Orthogonalized by Newton-Schulz,由 Keller Jordan 等人在 2024 年提出,目前在训练大语言模型中展现出挑战甚至超越 AdamW 的潜力),我们确实需要先将视角从“一堆散乱的数字”切换到“几何与空间变换”。
你的切入点非常精准。我们将按照以下逻辑为你层层拆解:特征值 \rightarrow 奇异值 \rightarrow 正交矩阵 \rightarrow 传统优化器的痛点 \rightarrow Muon的破局之道(牛顿-舒尔茨迭代)。
第一步:特征值(Eigenvalues)—— 矩阵的“内在拉伸力”
在深度学习中,神经网络的权重 W 和梯度 G 都是矩阵。矩阵的本质是空间变换(比如把一个向量旋转并拉伸)。
如果把矩阵作用在一个向量上,大多数向量的方向会被改变。但总有那么几个特殊的向量,在矩阵的作用下方向保持不变,只是长度被拉长或缩短了。
- 这些特殊的向量,叫做特征向量(Eigenvectors)。
- 它们被拉长或缩短的倍数,叫做特征值(Eigenvalues)。
几何直觉:假设矩阵是一个将圆形拉伸成椭圆的操作,特征向量就是椭圆的长轴和短轴,而特征值就是长轴和短轴的长度。如果某个特征值极其巨大,说明矩阵在这个方向上施加了极强的“拉伸力”。
第二步:奇异值(Singular Values)—— 任意矩阵的“几何骨架”
特征值很好,但它有一个致命限制:它只适用于方阵(行数等于列数的矩阵)。但在神经网络的线性层(Linear Layer)中,权重矩阵通常是长方形的(比如从维度 d_{in} 映射到 d_{out})。
为了分析非方阵,数学家发明了奇异值分解(SVD)。SVD 告诉我们,任何一个矩阵 A 都可以分解为三个动作的组合:A = U \Sigma V^T
- V^T(旋转):在原空间进行一次旋转。
- \Sigma(拉伸):沿着坐标轴进行拉伸。这里的拉伸倍数就是奇异值(Singular Values)。
- U(再次旋转):在目标空间再进行一次旋转。
在深度学习中的意义: 当你计算出某一层权重的梯度矩阵时,这个梯度也有它的奇异值。
- 如果某些奇异值极大,意味着在这个几何方向上,损失函数(Loss)极其陡峭。
- 如果某些奇异值极小,意味着在那个方向上,损失函数极其平缓。 这在优化地形(Loss Landscape)上形成了一个极其狭窄且深邃的“峡谷”。这是神经网络极难训练的根本原因。
第三步:正交矩阵(Orthogonal Matrices)—— 完美的“不偏不倚”
如果你理解了奇异值代表“拉伸的倍数”,那么我们来定义一种最特殊的矩阵:正交矩阵。
正交矩阵 Q 满足一个优美的性质:Q^T Q = I(即它的转置等于它的逆)。 在几何上,正交矩阵有两个核心特点:
- 它的列向量互相垂直(正交),且长度均为 1。
- 它的所有奇异值都等于 1。
这意味着,正交矩阵作用于任何向量,都只改变方向(旋转或镜像),绝不改变长度(不拉伸也不压缩)。它是最平滑、最不偏不倚的几何变换。
第四步:AdamW 优化器的“盲区”
在 Muon 出现之前,大模型训练的标配是 AdamW。AdamW 是怎么工作的呢?
AdamW 根据历史梯度的均方根,对每一个参数(标量)单独调整学习率。
- 它的视角是微观的:把 1000 \times 1000 的矩阵看作 1,000,000 个孤立的数字。
- 它只能修正沿着坐标轴方向的陡峭度,但完全忽视了矩阵的几何结构(即对角线方向上由于特征组合带来的陡峭度)。
因此,即使有 AdamW 帮忙,在那些隐藏层的密集矩阵(Dense Linear Layers)中,由于某些奇异值过大引发的“峡谷问题”依然存在,导致大模型训练后期容易出现不稳定的尖峰(Loss Spikes),或者陷入次优解。
第五步:Muon 优化器的核心魔法 —— 动量正交化
Keller Jordan 等人思考了一个极具颠覆性的问题:既然梯度的奇异值大小不一(有的极大、有的极小),导致网络更新极度不平衡,那我们能不能强行把梯度矩阵的所有非零奇异值都变成 1?
具体操作逻辑如下:
- 取出当前梯度的动量矩阵 M。
- 对 M 进行奇异值分解:M = U \Sigma V^T。
- 暴力替换:把代表拉伸的对角矩阵 \Sigma 扔掉,强行替换成单位矩阵 I。
- 重新组合:得到一个新矩阵 O = U I V^T = U V^T。
你会发现,这个新矩阵 O 的所有奇异值都变成了 1!它变成了一个正交矩阵(实际上求的是原矩阵的 Polar Factor / 极分解正交部分)。
为什么这非常牛? 因为你剥离了梯度中那些只会捣乱的“拉伸量”(极大或极小的奇异值),只保留了纯粹的、几何意义上的“更新方向”。这就好比在坑洼不平的峡谷里,Muon 强行铺出了一条每个方向坡度都完全一样的平坦大道。网络可以在所有特征维度上同步且稳定地学习。
第六步:工程学的奇迹 —— 牛顿-舒尔茨迭代 (Newton-Schulz Iteration)
到这里,你可能会问:既然把梯度“正交化”这么好,为什么以前没人做? 答案是:算力不允许。
对一个大矩阵做标准的奇异值分解(SVD),其计算复杂度是 \mathcal{O}(N^3)。如果在大语言模型的每一层、每一次迭代都做 SVD,GPU 会直接罢工,训练速度慢得令人发指。
Muon 的神来之笔,就在于它找到了一个绕过 SVD 的快捷方式——牛顿-舒尔茨迭代。
数学家 Schulz 曾在几十年前证明过,如果你想求一个矩阵的正交化近似,你不需要做 SVD,只需要做几次多项式乘法。 Muon 使用的具体迭代公式大概长这样(给定初始缩放后的矩阵 X_0): $X_{k+1} = \frac{1}{2} X_k (3I - X_k^T X_k)$ (或者其等价形式)
这个公式的美妙之处在于:
- 它只有矩阵乘法和加减法。而这正是现代 GPU(如 Nvidia A100/H100,依靠 Tensor Cores)最擅长、速度最快的运算!
- 它收敛得极快。只需要迭代短短的 5 到 6 次,得到的矩阵就几乎完美等同于 SVD 处理后的正交矩阵。
总结 Muon 的工作流(大白话版)
- 收集梯度:像往常一样计算线性层的梯度。
- 计算动量:结合历史梯度,得到动量矩阵 G。
- 正交化(核心):不直接用 G 去更新权重!而是用牛顿-舒尔茨迭代法,花极小的计算代价,把 G 转化为一个正交矩阵 O(即把它的所有奇异值强行拉平到 1)。
- 更新权重:用这个几何上最完美的正交矩阵 O 去更新神经网络的参数。
最终结果: Muon 将大模型优化从“标量级别的缝缝补补(AdamW)”提升到了“矩阵几何级别的降维打击”。它极大地改善了权重矩阵的条件数(Conditioning),用更少的训练步数(更高的 Sample Efficiency)就能达到同样的 Loss,并且大幅度提升了 LLM 在超大规模训练下的稳定性。
评论(0)