神经网络优化算法:从梯度下降到Adam
训练神经网络,本质上是在寻找一组权重参数 $W$,使得损失函数 $L(W)$ 的值最小。这个「极小化损失函数」的过程,就是所谓的优化。为什么不能直接算出解析解?因为神经网络的损失函数是一个极其复杂的非凸函数——变量(权重)数量动辄数百万,函数曲面布满峰谷和鞍点,没有任何代数方法能一步到位找到全局最低点。我们能做的,只有沿着函数下降最快的方向,一步一步迭代逼近。
理解优化算法的演进逻辑,是掌握深度学习训练过程的关键。普通的梯度下降法在面对真实训练场景时会遇到三个根本性困难:沿陡峭方向震荡不前、遇鞍点或局部极小停滞不前、以及小批量(mini-batch)带来的梯度噪声。这三个困难分别催生了优化器演进史上的三条主线——动量法(速度平滑)、自适应学习率(逐参数调节)、以及两者的集大成者Adam。而所有这些优化器工作的前提,是权重初始化策略本身是合理的,否则训练连开始都做不到。本文沿这条演进主线逐章展开,帮你建立起对神经网络优化问题的完整认知框架。
为什么训练神经网络需要「优化」?
让我们先从几何直观上理解神经网络优化的困难所在。一个简单的损失函数曲面可能是这样的:

图注:优化算法概念三维曲面图,颜色从深蓝经绿/黄/橙过渡到红色,标注了局部最优和全局最优的位置。曲面上存在多个峰谷,全局最低点并不容易找到。
这张图清楚地展示了优化问题的本质:曲面上布满多个局部最低点和全局最低点,算法必须在这些峰谷之间找到通往最低处的路径。梯度下降的核心思想是「沿当前所在点最陡峭的下坡方向迈步」,但这个策略在复杂的损失曲面上会遇到三个致命问题。
第一个问题:沿不同方向的梯度尺度差异巨大。 考虑一个二维坐标系中的损失函数等高线——如果它在某个方向($w_1$)变化剧烈,在另一个方向($w_2$)变化平缓,普通梯度下降会呈现一种典型的「锯齿」轨迹:

图注:同心椭圆等高线图上,从外层椭圆上红点出发的锯齿状红色折线向中心延伸,摆动幅度逐渐减小。震荡问题在陡峭方向尤为明显。
在 $w_1$ 方向(陡峭方向)梯度很大,算法每步跨越幅度大,容易 overshoot;在 $w_2$ 方向(平缓方向)梯度极小,算法几乎停滞。形象地说,就是「沿陡峭方向震荡、沿平缓方向爬行」,收敛极慢。这个问题在数学上被称为条件数(condition number)过大,是高维神经网络的常态而非例外。
第二个问题:鞍点和局部极小。 在高维空间中,鞍点比局部极小更常见。当梯度为零时,普通 SGD 会误以为已经找到了极值点而停滞:

图注:三维网格坐标图,标注了全局最大/最小值、局部最大/最小值的位置。曲面有多个峰值和谷值。

图注:马鞍状双曲抛物面曲面,中心标注了鞍点(红色圆点)。在一维方向上是极小点,在另一正交方向上是极大点。
鞍点的特征是:在一个方向上是极小点,在另一个正交方向上是极大点。梯度为零意味着两个方向上的偏导都为零,但这里既不是真正的极小值也不是极大值——SGD 会被困在此处,无法继续下降。
第三个问题:梯度噪声。 神经网络的训练通常使用小批量(mini-batch)数据计算梯度,而不是整个数据集。每一次梯度计算都是对真实梯度方向的一个随机估计——这个估计有噪声,会干扰优化路径的稳定性。在训练的早期阶段,这种噪声有助于逃离局部极小或鞍点(类似模拟退火的随机扰动),但随着训练的深入,噪声会阻碍精确收敛。
这三个问题——震荡、停滞、噪声——分别催生了优化器的三条演进主线,它们最终汇聚到了Adam这个集大成方案。以下章节将沿着这条演进路径逐一展开。
梯度怎么算:反向传播的链式法则
在深入各种优化器之前,我们需要先理解一个所有优化器的共同数学基础:如何计算梯度。神经网络的参数(权重 $W$ 和偏置 $b$)数量庞大,手动求导完全不现实。反向传播(Backpropagation) 通过链式法则(chain rule)高效地计算每一个参数对最终损失的贡献程度,是所有现代神经网络训练的核心算法。
Rumelhart、Hinton 和 Williams 于 1986 年在 Nature 发表的奠基性论文中,系统性地将反向传播与多层网络的内部特征学习相结合,首次向机器学习社区展示了该算法在训练多层神经网络中的实用性。该论文给出的核心机制是广义 delta 规则(generalized delta rule):对于权重 $w_{ij}$ 的更新量为 $\Delta w_{ij} = \eta \cdot \delta_j \cdot y_i$,其中 $\delta_j$ 是第 $j$ 个神经元的误差信号,对于输出层 $\delta_j = f'(x_j) \cdot (y_j - d_j)$,对于隐藏层 $\delta_j = f'(x_j) \cdot \sum_k w_{jk} \cdot \delta_k$。这个递归计算允许误差信号从输出层反向传播到输入层,中间的梯度通过链式法则逐层分配到每个权重上。 Rumelhart1986
理解反向传播的最佳方式是通过计算图(computation graph)。以下是一张典型的前向计算图:

图注:树状计算图,底层输入 $x$ 经过两个分支——分别计算 $a = \langle x, w \rangle$ 和 $y$(真实标签),然后 $b = a - y$,最后 $L = b^2$。
这张图展示了一个简单线性分类器的损失计算流程:输入 $x$ 和权重 $w$ 做内积得到 $a$,$a$ 减去真实标签 $y$ 得到误差 $b$,最后对 $b$ 求平方得到损失 $L$。每一步都是基础数学运算,整体构成一个有向无环图。
前向传播(Forward pass)的过程是从下往上:给定输入 $x$ 和当前权重 $w$,依次计算每个节点的输出值,最终得到损失 $L$。反向传播(Backward pass)的过程正好相反——从损失函数出发,沿着计算图的每一条边「向上回溯」,计算损失对每个中间变量和参数的偏导数。

图注:Forward 和 Backward 对称结构图,Forward 路径 $L=b^2 \rightarrow b=a-y \rightarrow \langle x,w \rangle$(及 $y$),Backward 路径 $\partial L/\partial b = 2b \rightarrow \partial L/\partial w$,蓝色虚线连接对应节点。
用链式法则来看:$\frac{\partial L}{\partial w} = \frac{\partial L}{\partial b} \cdot \frac{\partial b}{\partial a} \cdot \frac{\partial a}{\partial w} = 2b \cdot 1 \cdot x$。这三个偏导数分别对应反向传播中经过计算图三个节点的梯度传递。计算图的结构使得我们可以高效地复用中间计算结果——前向传播时保存每个节点的输出,反向传播时直接查表使用,无需重复计算。
理解了反向传播,你就掌握了所有优化器的共同数学基础:它们都是在给定梯度方向后,决定「以多大的步长、朝哪个方向更新参数」的具体策略。普通梯度下降直接用 $\Delta w = -\eta \cdot \frac{\partial L}{\partial w}$ 更新;动量法引入了速度概念;自适应学习率法为每个参数单独调节步长。具体的更新策略差异,是接下来几章要讲的内容。
第一个系统性解法:动量法与Nesterov加速
针对普通梯度下降的第一个致命问题——沿陡峭方向震荡——动量法(Momentum) 提出了一个简洁而深刻的物理类比:把参数想象成一个小球在损失曲面上滚动。普通 SGD 直接用梯度改变位置(参数值),而动量法先用梯度改变速度,再让速度间接改变位置。这个「惯性」概念,正是动量法的核心创新。
据 Polyak(1964)提出的思想,动量法的基本框架如下。其更新规则引入了速度向量 $v_t$: CSC321Momentum
$$v_t = \alpha \cdot v_{t-1} - \epsilon \cdot \frac{\partial L}{\partial w_t}$$
$$\Delta w_t = v_t$$
其中 $\alpha$ 是动量系数(典型值为 0.9),$\epsilon$ 是学习率。物理直觉是:在梯度符号不断改变的方向(比如陡峭的峡谷壁)——正梯度推小球向右、负梯度推小球向左——两者交替作用使速度相互抵消,抑制了震荡;而在平缓一致的方向上,每次梯度都指向同一方向,速度不断累积,小球越滚越快。速度积累使得参数在一致方向上能快速前进,同时在震荡方向上自动相互抵消。

图注:椭圆等高线区域上的小球运动轨迹。黑色箭头轨迹从红点(起点)向下俯冲后在椭圆边界间上下震荡,震荡幅度逐渐减小,最终统一指向右上方收敛。动量法通过速度积累将锯齿轨迹「熨平」为平滑的下山路径。
等价的数学形式是 $\Delta w_t = \alpha \cdot \Delta w_{t-1} - \epsilon \cdot \frac{\partial L}{\partial w_t}$,说明当前更新等于前一次更新乘以动量系数,再加上当前梯度的贡献。这揭示了动量法本质上是对历史梯度做指数加权移动平均(EWMA)——近期梯度权重高,历史久远的梯度按指数衰减被遗忘。
Nesterov 加速梯度(NAG) 是对标准动量法的进一步改进,由 Nesterov(1983)提出理论框架,后经 Sutskever(2012)应用于神经网络训练。NAG 的关键思想是「向前看」——不直接在当前位置计算梯度,而是先沿着累积速度的方向大步跳一步,到达一个「前瞻」位置,再在那里测量真实的梯度,最后修正。 NAG2012
其速度更新公式为:
$$v_t = \alpha \cdot v_{t-1} - \epsilon \cdot \frac{\partial L}{\partial w_{t + \alpha v_{t-1}}}$$
注意这里计算梯度的位置是 $w_{t + \alpha v_{t-1}}$(当前参数加上先前速度所指示的位移),而不是 $w_t$。这样做的好处是:当累积速度指向正确方向时,大步跳让你更接近目标;在错误方向上跳得过远时,梯度修正会及时把你拉回来——比先在原位测量、再跳跃的策略更准确。

图注:NAG 向量图。棕色向量表示沿先前累积梯度方向的大步跳跃(lookahead),红色向量表示在落点测梯度后的修正量,绿色向量是棕色和红色的合成(实际更新方向),蓝色向量代表标准动量的对比路径。两步时序清晰展示了「先跳再修正」的机制。
简单动量在当前位置 $w_t$ 测量梯度,然后朝梯度方向跳一步;NAG 则先以先前速度的方向「凭惯性」跳一步(棕色箭头),然后在落点测量梯度并做修正(红色箭头)。这就像在山路上行驶时,你不会盯着车身正下方判断方向,而是看前方远处再决定转向——「向前看」让方向估计更准确,收敛更快。
动量法和 NAG 解决了沿陡峭方向震荡的问题,但引入了一个新问题:所有参数共用同一个学习率。如果某些参数已经接近最优值但还在以较高学习率震荡,或者某些稀疏特征对应的参数因长期得不到大的梯度更新而停滞不前,单一学习率就力不从心了。这条线上的问题,引出了下一章的自适应学习率方法。
从全局学习率到per-coordinate自适应:Adagrad与RMSProp
动量法解决了震荡问题,但所有参数仍然共享同一个学习率 $\epsilon$。现实中,不同参数对应的梯度尺度可能相差数个数量级——比如在词嵌入矩阵中,常见词对应的维度频繁收到大幅梯度更新,而罕见词对应的维度则长期处于小幅更新。如果用统一的学习率,常见词会震荡、罕见词会更新不足。
Adagrad(Duchi, Hazan & Singer, 2011)提出了per-coordinate(逐参数)自适应学习率的核心思想:不再为所有参数维护单一学习率,而是为每个参数维护一个独立的学习率,这个学习率根据该参数历史梯度的累积情况自动调节。Adagrad 的更新规则是: Adagrad2011
$$\theta_{t+1,i} = \theta_{t,i} - \frac{\eta}{\sqrt{G_{t,ii} + \epsilon}} \cdot g_{t,i}$$
其中 $g_{t,i}$ 是第 $i$ 个参数在时间步 $t$ 的梯度,$G_t = \sum_{\tau=1}^{t} g_\tau \odot g_\tau$ 是一个对角矩阵,存储了到当前时间步为止每个参数所有历史梯度平方的累积和。分母中的 $\sqrt{G_{t,ii} + \epsilon}$ 对每个参数 $i$ 做了per-coordinate的归一化——如果该参数历史梯度的平方和很大(意味着这个方向已经被充分更新),其有效学习率就会自动降低;如果历史梯度平方和很小(更新不足),有效学习率就保持较高水平。

图注:Adagrad 算法伪代码框图,展示了 INPUT(学习率 $\eta$ 和正则项 $\delta$)、VARIABLES(累积梯度 $s$、对角矩阵 $H$、梯度序列 $g_{1:t,i}$)、初始化和 FOR 循环结构,循环内包含对角矩阵 $H_t$ 的计算以及两种更新公式(原始对角子梯度更新和复合形式的 Mirror Descent 更新)。这张图精确展示了 Adagrad 如何维护和利用 $G_t$ 对角矩阵。
这个设计对稀疏数据场景尤其有效。在自然语言处理中,词袋特征的高维 one-hot 向量极其稀疏——大多数维度对应的词在文档中根本不出现。传统 SGD 下,这些稀疏维度因为梯度经常为零而更新极慢;Adagrad 自动给予这些「历史累计梯度小」的方向更高学习率,使罕见但有预测力的特征能被有效捕捉。
然而 Adagrad 有一个根本性缺陷:$G_t$ 只会增长,永不减少。随着训练的进行,每个参数的分母都在单调增大,有效学习率不断下降,最终趋近于零——训练会逐渐停滞。对于需要训练成百上千万步的大型深度学习模型来说,这是一个致命的问题。
RMSProp(Tieleman & Hinton, 2012)用**指数加权移动平均(EWMA)**替代了 Adagrad 的无界累加来解决这个问题: RMSProp2012
$$E[g^2]t = \gamma \cdot E[g^2]{t-1} + (1-\gamma) \cdot g_t^2$$
$$\theta_{t+1} = \theta_t - \frac{\eta}{\sqrt{E[g^2]_t + \epsilon}} \cdot g_t$$

图注:EWMA 权重衰减曲线,横轴为时间步(0-40),纵轴为权重贡献。四条曲线分别对应 $\gamma \in {0.95, 0.9, 0.8, 0.7}$,展示了不同衰减率下旧梯度被指数遗忘的速度。$\gamma = 0.9$(RMSProp 默认值)意味着约 10 步的记忆窗口。
关键在于 $\gamma = 0.9$ 时,历史梯度的重要性按 $0.9^{10} \approx 0.35$ 指数衰减——约 10 步之前的梯度对当前的影响已经衰减到近三分之一。旧梯度被「 leaky」(有漏孔的)平均不断遗忘,而不是永久累积,因此 $E[g^2]_t$ 不会无限增长。RMSProp 因此在保持 per-coordinate 自适应学习率优势的同时,解决了学习率消失的问题,尤其适合 RNN 等非平稳目标场景。
至此,动量法解决了震荡问题,Adagrad/RMSProp 解决了 per-coordinate 学习率问题。这两条演进路线各自独立但互为补充——有没有办法同时利用这两个改进? 这正是 Adam 要做的事。
Adam:动量与自适应学习率的集大成者
Adam(Kingma & Ba, 2014)之所以成为现代深度学习的默认优化器,是因为它同时整合了两条演进路线的核心思想:动量法提供的一阶矩估计(梯度的 EWMA,均值概念)解决震荡问题,RMSProp 提供的二阶矩估计(梯度平方的 EWMA)解决 per-coordinate 步长调节问题。Adam 的更新流程分为四个步骤: Adam2014
第一步:计算梯度的一阶矩估计(动量):
$$m_t = \beta_1 \cdot m_{t-1} + (1 - \beta_1) \cdot g_t$$
第二步:计算梯度的二阶矩估计(自适应学习率的分子来源):
$$v_t = \beta_2 \cdot v_{t-1} + (1 - \beta_2) \cdot g_t^2$$
第三步:对两个矩估计做偏差校正(bias correction)——因为 $m_0$ 和 $v_0$ 初始化为零,在训练初期会产生向零的偏置:
$$\hat{m}_t = \frac{m_t}{1 - \beta_1^t}, \quad \hat{v}_t = \frac{v_t}{1 - \beta_2^t}$$
第四步:用校正后的一阶矩和二阶矩计算参数更新:
$$\theta_t = \theta_{t-1} - \alpha \cdot \frac{\hat{m}_t}{\sqrt{\hat{v}_t} + \epsilon}$$
默认超参数为 $\alpha = 0.001$,$\beta_1 = 0.9$,$\beta_2 = 0.999$,$\epsilon = 10^{-8}$。
理解 Adam 的一个关键直觉是:分母 $\sqrt{\hat{v}_t}$ 对梯度做了 per-coordinate 的归一化。如果某个参数历史梯度的方差很大(二阶矩 $v_t$ 大),$\sqrt{\hat{v}_t}$ 会压缩该方向的更新幅度;如果某个参数历史梯度方差小,其有效步长就相对更大。这与 Adagrad/RMSProp 的分母作用相同,但 Adam 通过 $\hat{m}_t$(带方向的动量估计)在分子上叠加了震荡抑制效果。
偏差校正的必要性值得特别说明。在训练初期,$t$ 很小的时候,$(1 - \beta^t)$ 会接近零。以 $\beta_2 = 0.999$ 为例,$t = 1$ 时 $1 - \beta_2^t = 1 - 0.999 = 0.001$,这意味着 $v_1$ 要被放大约 1000 倍才能抵消初始化为零带来的偏置。如果不做校正,二阶矩的初始值会严重低估真实梯度方差,导致早期步长过大,训练不稳定。这个偏差校正是 Adam 相对于 RMSProp 的关键优势之一。
Adam 论文还提出了一个优雅的「信噪比(SNR)」视角:$\hat{m}_t / \sqrt{\hat{v}_t}$ 反映了当前梯度方向的不确定性。SNR 越小(动量方向和梯度尺度越不确定),有效步长越保守;训练趋于收敛时 SNR 自动趋近于零,学习率自动「退火(annealing)」——这是 Adam 自带的一种自适应调节机制。
Adam 的默认超参数($\beta_1 = 0.9$,$\beta_2 = 0.999$)在大多数场景下能不经调参直接使用,这使得它成为工程实践中的首选。在实际应用中,AdamW(解耦权重衰减的 Adam 变体)进一步改进了正则化方式——AdamW 将权重衰减从梯度的自适应缩放中解耦出来,使正则化不再干扰学习率的自适应调节,成为 Transformer 模型的训练标准。
但 Adam 再好,也有一个前提被很多人忽视:权重初始化必须合理。初始化不对,优化器根本无从发挥作用——训练可能从第一步就陷入梯度消失或梯度爆炸,连收敛的可能性都不存在。
权重初始化:优化器能工作的前提
训练神经网络的第一步,不是选择优化器,而是给权重赋予合理的初始值。如果初始化不当,即使是最先进的 Adam 优化器也无力回天。权重初始化的核心问题是:如何让信号(梯度和激活值)在前向传播和反向传播过程中保持合理的方差尺度,既不消失也不爆炸。
这个问题的严重程度可以从一个实验中直观看出。对于 5 层使用 Sigmoid 激活函数的网络,标准初始化(从均匀分布 $U[-1/\sqrt{n}, 1/\sqrt{n}]$ 或标准差为 $1/\sqrt{n}$ 的正态分布采样)会导致顶层隐藏层的激活值迅速饱和到零:

图注:五层网络激活值分布直方图。标准初始化(top,即上方四幅子图)中 Layer 5 在零处出现尖锐峰值,表明严重饱和;归一化初始化(bottom,即下方四幅子图)各层激活值分布更为均匀。
饱和意味着梯度趋近于零,反向传播时底层权重几乎接不到任何梯度信号——训练完全停滞。
Glorot 和 Bengio 在 2010 年的论文中系统分析了这一问题,提出了著名的Xavier/Glorot 初始化及其核心原则——前向/后向方差保持(Forward/Backward Variance Preservation):为使信息在前向传播中不消失,需要所有层的激活值方差相同($Var[y_l] = Var[y_{l-1}]$);为使梯度在反向传播中不消失,需要所有层损失的梯度方差相同($Var[\partial L/\partial s_l] = Var[\partial L/\partial s_{l+1}]$)。折中两个条件后得到: Xavier2010
- 均匀分布:$W \sim U(-a, a)$,其中 $a = \sqrt{6/(n_{in} + n_{out})}$
- 正态分布:$W \sim N(0, \sigma^2)$,其中 $\sigma^2 = 2/(n_{in} + n_{out})$
Xavier 初始化专为 Sigmoid 和 Tanh 等饱和激活函数设计。对于这类激活函数,零均值附近近似线性(导数约 1),Xavier 的方差推导成立。但对于 ReLU 激活函数,情况完全不同——
ReLU 在 $x < 0$ 时恒等于零(约一半的输入被「杀死」),其非线性特性导致 Xavier 初始化在深层网络中完全失效。He 等人于 2015 年发表的论文(Kaiming/He 初始化)精确建模了 ReLU 的统计特性:对于 ReLU,$E[x^2] = Var[y]/2$(因为一半的输入被置零),因此需要将 Xavier 的方差乘以 2: Kaiming2015
$$W \sim N(0, \sigma^2), \quad \sigma = \sqrt{2/n_{in}}$$
30 层网络的收敛对比实验是 Kaiming 初始化最有力的证据:

图注:30 层 ReLU 网络训练收敛曲线。Kaiming 初始化(红色)从高误差持续下降至收敛;Xavier 初始化(蓝色)几乎保持初始误差不变,完全停滞——即使给更多训练轮次也不收敛,验证了梯度消失问题。
这个对比清晰地证明:初始化方法必须与激活函数匹配。Xavier 在 ReLU 深度网络上梯度消失,Kaiming 从零开始正常收敛,两者差距是本质性的。
对于 SELU(自归一化)激活函数,Klambauer 等人于 2017 年提出了第三套初始化方案——LeCun 初始化: SELU2017
$$W \sim N(0, \sigma^2), \quad \sigma^2 = 1/n_{in}$$

图注:二维相空间图,横轴为均值 $\mu$,纵轴为方差 $\nu$。箭头从不同初始点出发,经映射 $g$ 后均指向 $(0, 1)$ 固定点——SELU 网络的激活值无论初始如何,都会自动收敛到零均值、单位方差的稳定状态。
SELU 网络的特殊之处在于:当初始权重满足 $E[w_i] = 0$ 和 $Var[w_i] = 1/n_{in}$ 时,激活值的均值 $\mu$ 和方差 $\nu$ 在层间传播后会自动收敛到固定点 $(0, 1)$——这意味着无需 BatchNorm 等显式归一化手段,网络本身就能维持稳定的数值尺度。
三种初始化方案至此形成了完整的闭环:Xavier 对应饱和激活函数(Sigmoid/Tanh),Kaiming 对应 ReLU 系列,LeCun 对应 SELU 自归一化网络。选错初始化方法,优化器即使再强大也无法弥补——训练从第一步就走上了错误的轨道。
现代优化器全景与实践选择
了解了从梯度下降到 Adam 的完整演进路径,我们终于可以从更高处俯瞰整个优化器领域,并将目光投向最新的发展。
从 1986 年反向传播的奠基性工作,到 2014 年 Adam 论文发表,再到 2026 年的系统性调研,整个一阶优化器领域可以按照核心改进维度分为三大分支:

图注:一阶优化器演进树状图,从基础 SGD/momentum 分支出三条主要演进路线——自适应策略(Adam/AdamW/Adan)、加速方法(Nadam/RAdam/QHAdam)和曲率近似方法(Shampoo/ASGO)。各分支节点标注了代表性算法,箭头表示推导关系。
第一条是自适应策略(Adam、AdamW、Adan 等),在 Adam 基础上通过偏差校正、解耦权重衰减等手段不断精进;第二条是加速方法(Nesterov 加速、RAdam、QHAdam 等),聚焦于收敛速率的理论改进;第三条是曲率近似方法(K-FAC、Shampoo 等),通过近似二阶曲率信息来获得更精确的梯度预处理。
2026 年发表的系统性调研对 23 种优化器在 ViT-S、ResNet-50 和 Llama-60m 上进行了基准测试,揭示了几个关键发现: OptimizerSurvey2026

图注:23 种优化器在 ViT-S 和 ResNet-50 上的 Top-1 准确率曲线(主体折线图)和相关性热图(右下角 inset)。热图展示了不同优化器在收敛轨迹上的相似性聚类——自适应族(Adam、AdamW、Nadam)和矩阵正交化族(Kron、Muon)各自形成紧密的簇。
核心发现:自适应方法对于 LLM 训练是必需的。SGD 在 ViT-S 上尚可(64.36%),但在 Llama 模型上完全失败(梯度爆炸,NaN 损失)。原因在于 Transformer 架构的极端深度和复杂的注意力机制导致梯度幅度在层间差异巨大,缺乏自适应缩放的优化器无法处理这种异质性。2026年的调研表明,Muon(通过 Newton-Schulz 正交化对整个权重矩阵施加谱约束)在三项基准测试中均取得最优成绩(ViT-S 78.25%、ResNet-50 77.99%、Llama PPL 12.40);AdamW(ViT-S 75.20%,Llama PPL 13.42)凭借其可靠性和跨架构迁移能力仍是实际默认选择;LAMB 和 MARS 在 Llama 上表现尤为出色(分别达到 PPL 12.28 和 12.12),得益于其逐层信任比缩放机制对大批量训练稳定性的改善。
从 LLM 优化器综述的分类来看,LLM 训练优化器可分为 8 个家族:经典一阶方法、自适应对角方法(Adam/AdamW/Adafactor)、大批量分布式方法(LAMB)、内存高效方法(8-bit Adam/LOMO)、符号方法(Lion)、曲率感知二阶方法(Shampoo/Sophia)、低秩/投影方法(GaLore/APOLLO)、以及矩阵正交化方法(Muon)。AdamW 之所以保持主导地位,是因为它恰好满足了 LLM 训练的三层核心需求:自适应矩估计能处理注意力投影中的梯度异质性、解耦权重衰减提供正则化而不干扰学习率自适应、以及 Transformer 架构对梯度异质性的天然鲁棒性。 LLMOptimizer2026
值得注意的是,基准评估本身存在大量方法论陷阱:超参数调参不公平(新方法往往对比调参不足的 AdamW)、只关注早期收敛曲线而忽视最终性能、忽略 wall-clock 计算开销、内存开销报告不完整(只报模型内存而忽视优化器状态)、以及小规模结论未必能迁移到大规模模型。因此在选择优化器时,不仅要考虑理论上的性能差异,还要考虑实际部署中的计算资源、显存约束和调参预算。
实践中的选择建议:对于大多数新项目,以 AdamW 作为默认 baseline 是最稳妥的起步策略——它足够鲁棒,默认超参数在广泛场景下无需调参即可工作。若在 LLM 或 Transformer 训练中遇到性能瓶颈,可考虑 Muon(追求最高精度)或 LAMB(大批量分布式训练)。如果你的网络使用 SELU 激活函数,确保使用 LeCun 初始化;对于 ReLU 系列网络,Kaiming 初始化是必选项。无论选择哪种优化器,都不要忽视权重初始化这个前提条件——初始化不对,优化器的优秀设计无从发挥。
理解到这里,你已经掌握了这个领域从问题起源到最新进展的完整图景。优化器的演进史,本质上是一部针对实际问题不断打补丁的历史:梯度消失催生了动量,per-coordinate 尺度差异催生了 Adagrad,学习率消失催生了 RMSProp,两条路线最终汇聚到 Adam;而所有这些,都建立在合理初始化这个必要前提之上。理解演进逻辑,比记住每一代的公式更重要——因为当你真正理解了每个设计决策背后的「为什么要这样做」,你就能在任何新场景下做出明智的优化器选择。
参考文献
本专题引用的核心资料如下,建议深入学习时阅读原文:
- Learning representations by back-propagating errors — Nature 323, 533–536 (1986), Rumelhart, Hinton & Williams — https://www.nature.com/articles/323533a0
- Momentum and Nesterov Accelerated Gradient — CSC321 Lecture Slides (Geoffrey Hinton, 2014) — https://www.cs.toronto.edu/~tijmen/csc321/slides/lecture_slides_lec6.pdf
- Adaptive Subgradient Methods for Online Learning and Stochastic Optimization — JMLR v12 (2011), Duchi, Hazan & Singer — https://jmlr.org/papers/v12/duchi11a.html
- RMSProp — Coursera Neural Networks for Machine Learning Lecture 6e (Tieleman & Hinton, 2012) — https://www.cs.toronto.edu/~tijmen/csc321/slides/lecture_slides_lec6.pdf
- Adam: A Method for Stochastic Optimization — arXiv:1412.6980 (2014), Kingma & Ba — https://arxiv.org/abs/1412.6980
- Evolution of Optimization Methods: Algorithms, Scenarios, and Evaluations — arXiv:2604.12968 (2026), Zhang et al. — https://arxiv.org/abs/2604.12968
- Navigating LLM Valley: From AdamW to Memory-Efficient and Matrix-Based Optimizers — arXiv:2605.09176 (2026), Ranganath — https://arxiv.org/abs/2605.09176
- Understanding the Difficulty of Training Deep Feedforward Neural Networks — AISTATS 2010, Glorot & Bengio — http://proceedings.mlr.press/v9/glorot10a/glorot10a.pdf
- Delving Deep into Rectifiers: Surpassing Human-Level Performance on ImageNet Classification — arXiv:1502.01852 (2015), He et al. — https://arxiv.org/abs/1502.01852
- Self-Normalizing Neural Networks — arXiv:1706.02515 (2017), Klambauer et al. — https://arxiv.org/abs/1706.02515