A05 · 第 1 章 · 第一编 深度优化

随机梯度、动量与自适应方法

从小批量梯度的抽样估计和方差进入 SGD,推导动量与 Nesterov 状态更新,比较 AdaGrad、RMSProp 和 Adam 的矩估计、偏差修正与 epsilon,并区分耦合 L2 惩罚和解耦权重衰减。

报告页面错误
预备知识神经网络与反向传播综合复习梯度下降统计估计

本章目标

  1. 把小批量梯度视为有抽样条件的估计量,分析批量大小、方差和学习率。
  2. 按统一约定计算 momentum 与 Nesterov 更新,解释状态、振荡和稳定边界。
  3. 推导 AdaGrad、RMSProp 与 Adam 的逐坐标尺度和早期偏差修正。
  4. 说明 epsilon 的数值和算法作用,诊断矩估计、梯度裁剪与非有限状态。
  5. 区分普通 SGD 下等价的 L2 与权重衰减,以及自适应方法中的解耦差异。
页面阅读位置0% · 仅保存在此浏览器
章节未开始
本册完成进度0/6 章 · 0%
本页目录

小批量梯度是抽样估计

经验目标写为

L(θ)=1Ni=1Ni(θ),L(\theta)=\frac1N\sum_{i=1}^N\ell_i(\theta),

完整梯度要访问全部 NN 个样本。第 tt 步抽取大小为 BB 的小批量 Bt\mathcal B_t,常用估计为

gt=1BiBti(θt).g_t=\frac1B\sum_{i\in\mathcal B_t}\nabla\ell_i(\theta_t).

若按规定概率均匀抽样,且样本权重与目标一致,则条件在当前参数上有 E[gtθt]=L(θt)\mathbb E[g_t\mid\theta_t]=\nabla L(\theta_t)。分层抽样、类别过采样或不同纳入概率会改变这个期望,除非用相应重要性权重修正。增强、dropout 和状态化层还引入额外随机性,小批量梯度不只是固定样本梯度的简单子集平均。

独立同分布近似下,均值方差大致随 1/B1/B 缩小;无放回抽样还有有限总体修正。真实样本相关、重复实体和类别不平衡会破坏简单比例。增大批量减少单步噪声并提高硬件并行,却减少固定样本访问预算内的更新次数,且需要更多内存。比较批量大小时应固定总样本数、总浮点工作或墙钟预算之一,并清楚说明。

例 1:枚举小批量梯度的期望与一次更新

某一参数位置上四个样本梯度为

2,1,3,0,2,-1,3,0,

完整梯度均值为 1。无放回均匀抽两个样本,六个可能批量的均值依次为

0.5,2.5,1,1,0.5,1.5.0.5,2.5,1,1,-0.5,1.5.

六者平均仍为 1,所以估计无偏;围绕 1 的平方偏差平均为 5/65/6,说明单步仍有噪声。若当前参数 θ=4\theta=4、学习率 η=0.1\eta=0.1,抽到梯度为 2.5 的批量后,SGD 更新为

θ+=40.1×2.5=3.75.\theta^+=4-0.1\times2.5=3.75.

抽到均值 0.5-0.5 时则更新到 4.05,单步甚至逆着完整梯度方向移动。随机方法的判断对象是操作序列和目标趋势,不能要求每个批量都降低完整训练损失。

SGD 的学习率与批次顺序

基本 SGD 为

θt+1=θtηtgt.\theta_{t+1}=\theta_t-\eta_t g_t.

学习率太大时,即使平均方向正确也会越过低谷或在高曲率方向发散;太小时有限预算内几乎不移动。固定学习率常在噪声决定的邻域内波动,逐步衰减可在适当假设下继续逼近驻点。所谓批量增大时线性放大学习率只是依赖模型、归一化和训练区间的经验起点,不是普遍定理。

一个 epoch 表示按约定访问约一次数据集,但采样放回、丢弃尾批、分布式分片和动态数据流会让定义不同。梯度累积把多个微批梯度求和或平均后再更新,只有损失归一化、模型状态、随机掩码和数值顺序相容时才近似一个大批量。批归一化仍在每个微批上计算统计量,因此通常不等价。

恢复训练必须保存参数、优化器状态、步数、数据迭代器位置和随机源。只加载模型权重会让动量和矩估计从零开始,产生不同轨迹。监控应至少包括训练目标、验证指标、梯度范数、参数范数、更新与参数范数比、非有限数值和数据吞吐。

Momentum 累积方向

本章固定一种无学习率速度约定:

vt+1=βvt+gt,θt+1=θtηvt+1,0β<1.v_{t+1}=\beta v_t+g_t, \qquad \theta_{t+1}=\theta_t-\eta v_{t+1}, \qquad 0\le\beta<1.

展开可见 vt+1v_{t+1} 是历史梯度的指数加权和。连续同向梯度累积,平坦方向前进加快;高曲率方向若梯度正负交替,历史项部分抵消,减少锯齿。另一常见约定把学习率放入速度,或把新梯度乘 1β1-\beta;超参数数值不能跨公式直接照搬。

动量引入二阶状态,不保证每步损失下降。对二次目标,稳定性由学习率、β\beta 与 Hessian 特征值共同决定;β\beta 越接近一,记忆越长,也越可能在突然改变的曲率或梯度尺度下过冲。检测到爆炸梯度时应先定位数据、模型和精度原因,梯度裁剪可限制更新但会改变估计方向和偏差,不能替代诊断。

对确定性一维二次函数 L(θ)=aθ2/2L(\theta)=a\theta^2/2,本章普通动量可消去速度,得到

θt+1=(1+βηa)θtβθt1.\theta_{t+1}=(1+\beta-\eta a)\theta_t-\beta\theta_{t-1}.

0β<10\le\beta<1 下,两个特征根都落在单位圆内的条件是 0<ηa<2(1+β)0<\eta a<2(1+\beta)。多维正定二次目标要对每个曲率特征值成立,所以峰值步长受 λmax\lambda_{\max} 限制。这个边界只说明线性状态渐近稳定,不保证损失逐步单调,也不能直接套给 Nesterov、随机梯度或随位置变化的非二次曲率。

例 2:逐步比较普通动量与 Nesterov

L(θ)=θ2/2L(\theta)=\theta^2/2,初值 θ0=2,v0=0\theta_0=2,v_0=0,取 η=0.1,β=0.9\eta=0.1,\beta=0.9。普通动量第一步

g0=2,v1=2,θ1=1.8.g_0=2,\quad v_1=2,\quad \theta_1=1.8.

第二步在 1.81.8 求梯度,得到

v2=0.9×2+1.8=3.6,θ2=1.80.1×3.6=1.44.v_2=0.9\times2+1.8=3.6, \qquad \theta_2=1.8-0.1\times3.6=1.44.

采用本章 Nesterov 约定时,在前瞻点 θtηβvt\theta_t-\eta\beta v_t 求梯度:

vt+1=βvt+L(θtηβvt),θt+1=θtηvt+1.v_{t+1}=\beta v_t+\nabla L(\theta_t-\eta\beta v_t), \qquad \theta_{t+1}=\theta_t-\eta v_{t+1}.

第一步仍到 1.8;第二步前瞻点为 1.80.18=1.621.8-0.18=1.62,所以 v2=1.8+1.62=3.42v_2=1.8+1.62=3.42θ2=1.458\theta_2=1.458。Nesterov 在预期移动后评估梯度,但这个两步数值不构成对所有目标都更快的证明。

AdaGrad 与 RMSProp 的逐坐标尺度

AdaGrad 累积平方梯度

rt=rt1+gtgt,θt+1=θtetagtrt+ε.r_t=r_{t-1}+g_t\odot g_t, \qquad \theta_{t+1}=\theta_t-eta\frac{g_t}{\sqrt{r_t}+\varepsilon}.

历史上经常出现大梯度的坐标有效步长变小,稀疏且偶尔出现的坐标能保留较大步长。由于 rtr_t 只增不减,长训练中学习率可能不可逆地衰减到几乎停止;这在某些凸稀疏问题有理论意义,却可能不适合持续变化的深度网络目标。

RMSProp 改用指数移动平均

st=ρst1+(1ρ)gtgt,θt+1=θtetagtst+ε.s_t=\rho s_{t-1}+(1-\rho)g_t\odot g_t, \qquad \theta_{t+1}=\theta_t-eta\frac{g_t}{\sqrt{s_t}+\varepsilon}.

它会逐渐遗忘很久以前的尺度,更能适应非平稳梯度。ρ\rho 大时估计平滑但响应慢,小则响应快且噪声大。不同实现可能把 ε\varepsilon 放在平方根内,或加动量与 centered 版本;这些细节会在小二阶矩坐标上明显改变更新。

Adam 的一阶矩、二阶矩与偏差修正

Adam 同时维护

mt=β1mt1+(1β1)gt,vt=β2vt1+(1β2)gt2.m_t=\beta_1m_{t-1}+(1-\beta_1)g_t, \qquad v_t=\beta_2v_{t-1}+(1-\beta_2)g_t^2.

从零状态开始时,早期两个移动平均偏向零。第 tt 次更新的修正为

m^t=mt1β1t,v^t=vt1β2t,\widehat m_t=\frac{m_t}{1-\beta_1^t}, \qquad \widehat v_t=\frac{v_t}{1-\beta_2^t},

再更新

θt+1=θtetam^tv^t+ε.\theta_{t+1}=\theta_t-eta \frac{\widehat m_t}{\sqrt{\widehat v_t}+\varepsilon}.

修正针对从零初始化与近似平稳矩的启动偏差,不会消除小批量噪声,也不能保证非凸目标全局收敛。若从检查点恢复却把步数重置,βt\beta^t 修正会错误;步数属于优化器状态。

例 3:Adam 第一步的偏差修正

取参数 θ0=(1,1)\theta_0=(1,1)、梯度 g1=(2,1)g_1=(2,-1)m0=v0=0m_0=v_0=0,并令 β1=0.9,β2=0.999,η=0.01\beta_1=0.9,\beta_2=0.999,\eta=0.01,暂时忽略极小 ε\varepsilon。原始矩为

m1=(0.2,0.1),v1=(0.004,0.001).m_1=(0.2,-0.1),\qquad v_1=(0.004,0.001).

偏差修正后

m^1=(2,1),v^1=(4,1).\widehat m_1=(2,-1),\qquad \widehat v_1=(4,1).

因此更新量为 (0.01,0.01)(0.01,-0.01),新参数是 (0.99,1.01)(0.99,1.01)。第一步中梯度幅度被其平方根尺度抵消,主要保留符号;后续历史矩不同后,更新不再只是符号步。若某坐标 vv 很小,ε\varepsilon 会限制分母并决定有效最大步长,所以它既是数值保护也是算法参数。

β2\beta_2 在梯度尺度突然增大时响应较慢,分母可能暂时低估新尺度;过小 ε\varepsilon 与低精度计算会放大问题。应监控 m,vm,v 的范围、更新峰值和非有限值。Adam 常能快速获得可用训练损失,但最终泛化、稳定性和最佳学习率仍依任务而定;不能把默认参数当成证明。

二阶矩 vtv_t 是逐坐标梯度平方的时间平均,不是 Hessian 对角线,也不是曲率逆。某坐标可能曲率很小却因小批量噪声很大而得到大分母,另一个高曲率坐标若近期梯度恰小也可能得到小分母。因此 Adam 的预条件只能按观测梯度尺度调整,不能继承 Newton 方法的局部二次最优性质。它还依赖参数坐标:旋转或重参数化模型后,逐坐标平方与更新方向一般会改变。

偏差修正式中的 1βt1-\beta^t 假定对应的 β\beta 在所有早期步骤保持常数。若实现随时间改变 βt\beta_t,正确的零初始化修正应涉及连乘 1j=1tβj1-\prod_{j=1}^t\beta_j;直接沿用常数公式会产生错尺度。冻结某些参数、跳过非有限梯度或稀疏更新时,局部步数如何计数也需由实现契约规定并进入检查点。

L2 惩罚与解耦权重衰减

若把 λθ2/2\lambda\lVert\theta\rVert^2/2 加入目标,梯度变为 gdata+λθg_{\text{data}}+\lambda\theta。普通 SGD 更新可写成

θ+=(1ηλ)θηgdata,\theta^+=(1-\eta\lambda)\theta-\eta g_{\text{data}},

所以在同一步长、无其他状态的 SGD 中,它与乘法权重衰减代数等价。对 Adam 等逐坐标预条件方法,把 λθ\lambda\theta 放进梯度会进入一阶和二阶矩并被坐标归一化;解耦权重衰减则独立执行参数收缩,二者不再等价。

例 4:预条件使 L2 与解耦衰减分离

设参数 θ=(1,10)\theta=(1,10)、数据梯度 (1,1)(1,1)、惩罚系数 λ=0.1\lambda=0.1,当前自适应预条件比例为 (1,0.1)(1,0.1)。耦合 L2 梯度为

(1,1)+0.1(1,10)=(1.1,2),(1,1)+0.1(1,10)=(1.1,2),

经预条件后的下降方向为 (1.1,0.2)(1.1,0.2)。若解耦处理,数据梯度方向先变为 (1,0.1)(1,0.1),参数收缩方向另为 0.1(1,10)=(0.1,1)0.1(1,10)=(0.1,1),合计 (1.1,1.1)(1.1,1.1)。两个第二坐标相差很大。

因此使用 AdamW 一类方法时,应记录解耦公式、衰减系数、哪些参数被排除以及学习率调度。偏置和归一化尺度是否衰减是模型设计选择,不能由参数名称含糊决定。

稳定性、状态与比较边界

没有优化器对所有任务占优。SGD 的噪声可能帮助探索,也可能让小数据训练不稳;动量改善狭长谷底,却带来过冲;AdaGrad 适合稀疏坐标但可能过早停滞;RMSProp 与 Adam 适应尺度,却引入更多状态和数值约定。比较时应给相称的学习率搜索、相同数据顺序预算、多个种子、墙钟时间和最终验证结果。

梯度裁剪按全局范数、逐值或分层方式得到不同方向,裁剪发生在微批、累积后还是跨设备同步后也不同。优化器状态通常是参数内存的若干倍,混合精度还需主权重与损失缩放状态。检查点缺任一矩、步数或调度器状态,都只能称重新初始化优化状态的继续训练,不能声称逐步复现。

常见误区

常见误区

“小批量梯度总是完整梯度的无偏估计。”它需要抽样概率、权重和目标定义相容;过采样与过滤会改变期望。

常见误区

“Adam 会自动选择学习率。”它只做历史矩预条件,仍需基础学习率、epsilon 和稳定性选择。

常见误区

“L2 正则与权重衰减永远相同。”等价只在简单 SGD 等特定更新下成立,自适应预条件会破坏它。

练习:从估计量到优化器状态

练习

说明小批量梯度何时无偏,以及增大批量为何不保证方差严格按 1/B1/B 缩小。

查看提示
先条件在当前参数上计算批量均值的期望,再讨论样本相关和抽样权重。
查看解答
均匀抽样且目标为样本等权均值时,批量均值条件期望等于完整梯度;独立近似下方差约按 1/B 缩小。类别过采样若不加重要性权重会改变期望,重复实体相关也会使方差下降慢于理想比例。
练习

展开本章 momentum 的速度状态,并解释它怎样处理持续方向与振荡方向。

查看提示
连续代入 v 的递推式,观察历史梯度前的 β\beta 次幂。
查看解答
从 v0=0 得 vt=Σj=1tβtjgjvt=\Sigma j=1^t \beta^{t-j}gj。相同方向的梯度累积,交替方向部分抵消;β\beta 越大记忆越长。公式未乘 1β1-\beta,因此稳态尺度与另一种归一化约定不同。
练习

按本章约定写出 Nesterov 一步的计算顺序,并指出实现时最易混淆的状态。

查看提示
先用旧速度形成前瞻点,再在那里计算当前梯度。
查看解答
前瞻点是 θtηβvt\theta t-\eta \beta vt,求得 glook 后令 vt+1=βvt+glookvt+1=\beta vt+glook,最后 θt+1=θtηvt+1\theta t+1=\theta t-\eta vt+1。必须保存旧速度和明确学习率是否在速度内;混用库的另一种公式会得到不同数值。
练习

比较 AdaGrad、RMSProp 与 Adam 的状态、遗忘方式和主要边界。

查看提示
AdaGrad 累加全部平方,RMSProp 指数遗忘,Adam 再增加一阶矩。
查看解答
AdaGrad 分母单调增,适合稀疏但可能停滞;RMSProp 用 ρ\rho 平衡平滑与响应;Adam 用 β1\beta 1β2\beta 2 维护一二阶矩,并以 1β1t1-\beta 1^t1β2t1-\beta 2^t 修正零初始化偏差。三者都仍需基础学习率和 epsilon。
练习

为什么 Adam 或 RMSProp 的 ε\varepsilon 不只是可忽略的防除零常数?

查看提示
分析二阶矩接近零时分母和更新上界。
查看解答
epsilon 防止除零并限制小二阶矩坐标的放大;放在平方根内外会产生不同有效尺度。过小值在低精度下可能失去保护,过大则使自适应归一化变弱。应连同数值格式、矩范围和更新峰值验证。
练习

推导普通 SGD 下 L2 与权重衰减的等价,并解释为何 Adam 中通常不等价。

查看提示
先写普通 SGD 代数,再让自适应预条件逐坐标作用。
查看解答
普通 SGD 中加入 λθ\lambda \thetaθ+=(1ηλ)θηg\theta+=(1-\eta \lambda)\theta-\eta g,与解耦乘法衰减等价。自适应方法会对耦合 λθ\lambda \theta 做矩估计和逐坐标缩放,解耦衰减则直接按参数收缩,所以方向不同;需记录公式、排除参数和调度。

知识连接与资源

书籍 · 2016

Deep Learning

Ian Goodfellow, Yoshua Bengio, Aaron Courville

适合作为反向传播和优化章节的完整参考。

打开官方来源

《Deep Learning》作者在线教材可用于核对随机优化、动量和逐坐标自适应方法的基本动机。具体 Adam、RMSProp 与权重衰减公式仍应以所用实现的参数化和更新顺序为准。