小批量梯度是抽样估计
经验目标写为
L ( θ ) = 1 N ∑ i = 1 N ℓ i ( θ ) , L(\theta)=\frac1N\sum_{i=1}^N\ell_i(\theta), L ( θ ) = N 1 i = 1 ∑ N ℓ i ( θ ) ,
完整梯度要访问全部 N N N 个样本。第 t t t 步抽取大小为 B B B 的小批量 B t \mathcal B_t B t ,常用估计为
g t = 1 B ∑ i ∈ B t ∇ ℓ i ( θ t ) . g_t=\frac1B\sum_{i\in\mathcal B_t}\nabla\ell_i(\theta_t). g t = B 1 i ∈ B t ∑ ∇ ℓ i ( θ t ) .
若按规定概率均匀抽样,且样本权重与目标一致,则条件在当前参数上有
E [ g t ∣ θ t ] = ∇ L ( θ t ) \mathbb E[g_t\mid\theta_t]=\nabla L(\theta_t) E [ g t ∣ θ t ] = ∇ L ( θ t ) 。分层抽样、类别过采样或不同纳入概率会改变这个期望,除非用相应重要性权重修正。增强、dropout 和状态化层还引入额外随机性,小批量梯度不只是固定样本梯度的简单子集平均。
独立同分布近似下,均值方差大致随 1 / B 1/B 1/ B 缩小;无放回抽样还有有限总体修正。真实样本相关、重复实体和类别不平衡会破坏简单比例。增大批量减少单步噪声并提高硬件并行,却减少固定样本访问预算内的更新次数,且需要更多内存。比较批量大小时应固定总样本数、总浮点工作或墙钟预算之一,并清楚说明。
例 1:枚举小批量梯度的期望与一次更新
某一参数位置上四个样本梯度为
2 , − 1 , 3 , 0 , 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. 0.5 , 2.5 , 1 , 1 , − 0.5 , 1.5. 六者平均仍为 1,所以估计无偏;围绕 1 的平方偏差平均为 5 / 6 5/6 5/6 ,说明单步仍有噪声。若当前参数 θ = 4 \theta=4 θ = 4 、学习率 η = 0.1 \eta=0.1 η = 0.1 ,抽到梯度为 2.5 的批量后,SGD 更新为
θ + = 4 − 0.1 × 2.5 = 3.75. \theta^+=4-0.1\times2.5=3.75. θ + = 4 − 0.1 × 2.5 = 3.75. 抽到均值 − 0.5 -0.5 − 0.5 时则更新到 4.05,单步甚至逆着完整梯度方向移动。随机方法的判断对象是操作序列和目标趋势,不能要求每个批量都降低完整训练损失。
SGD 的学习率与批次顺序
基本 SGD 为
θ t + 1 = θ t − η t g t . \theta_{t+1}=\theta_t-\eta_t g_t. θ t + 1 = θ t − η t g t .
学习率太大时,即使平均方向正确也会越过低谷或在高曲率方向发散;太小时有限预算内几乎不移动。固定学习率常在噪声决定的邻域内波动,逐步衰减可在适当假设下继续逼近驻点。所谓批量增大时线性放大学习率只是依赖模型、归一化和训练区间的经验起点,不是普遍定理。
一个 epoch 表示按约定访问约一次数据集,但采样放回、丢弃尾批、分布式分片和动态数据流会让定义不同。梯度累积把多个微批梯度求和或平均后再更新,只有损失归一化、模型状态、随机掩码和数值顺序相容时才近似一个大批量。批归一化仍在每个微批上计算统计量,因此通常不等价。
恢复训练必须保存参数、优化器状态、步数、数据迭代器位置和随机源。只加载模型权重会让动量和矩估计从零开始,产生不同轨迹。监控应至少包括训练目标、验证指标、梯度范数、参数范数、更新与参数范数比、非有限数值和数据吞吐。
Momentum 累积方向
本章固定一种无学习率速度约定:
v t + 1 = β v t + g t , θ t + 1 = θ t − η v t + 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. v t + 1 = β v t + g t , θ t + 1 = θ t − η v t + 1 , 0 ≤ β < 1.
展开可见 v t + 1 v_{t+1} v t + 1 是历史梯度的指数加权和。连续同向梯度累积,平坦方向前进加快;高曲率方向若梯度正负交替,历史项部分抵消,减少锯齿。另一常见约定把学习率放入速度,或把新梯度乘 1 − β 1-\beta 1 − β ;超参数数值不能跨公式直接照搬。
动量引入二阶状态,不保证每步损失下降。对二次目标,稳定性由学习率、β \beta β 与 Hessian 特征值共同决定;β \beta β 越接近一,记忆越长,也越可能在突然改变的曲率或梯度尺度下过冲。检测到爆炸梯度时应先定位数据、模型和精度原因,梯度裁剪可限制更新但会改变估计方向和偏差,不能替代诊断。
对确定性一维二次函数 L ( θ ) = a θ 2 / 2 L(\theta)=a\theta^2/2 L ( θ ) = a θ 2 /2 ,本章普通动量可消去速度,得到
θ t + 1 = ( 1 + β − η a ) θ t − β θ t − 1 . \theta_{t+1}=(1+\beta-\eta a)\theta_t-\beta\theta_{t-1}. θ t + 1 = ( 1 + β − η a ) θ t − β θ t − 1 .
在 0 ≤ β < 1 0\le\beta<1 0 ≤ β < 1 下,两个特征根都落在单位圆内的条件是
0 < η a < 2 ( 1 + β ) 0<\eta a<2(1+\beta) 0 < η a < 2 ( 1 + β ) 。多维正定二次目标要对每个曲率特征值成立,所以峰值步长受 λ max \lambda_{\max} λ m a x 限制。这个边界只说明线性状态渐近稳定,不保证损失逐步单调,也不能直接套给 Nesterov、随机梯度或随位置变化的非二次曲率。
例 2:逐步比较普通动量与 Nesterov
令 L ( θ ) = θ 2 / 2 L(\theta)=\theta^2/2 L ( θ ) = θ 2 /2 ,初值 θ 0 = 2 , v 0 = 0 \theta_0=2,v_0=0 θ 0 = 2 , v 0 = 0 ,取 η = 0.1 , β = 0.9 \eta=0.1,\beta=0.9 η = 0.1 , β = 0.9 。普通动量第一步
g 0 = 2 , v 1 = 2 , θ 1 = 1.8. g_0=2,\quad v_1=2,\quad \theta_1=1.8. g 0 = 2 , v 1 = 2 , θ 1 = 1.8. 第二步在 1.8 1.8 1.8 求梯度,得到
v 2 = 0.9 × 2 + 1.8 = 3.6 , θ 2 = 1.8 − 0.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. v 2 = 0.9 × 2 + 1.8 = 3.6 , θ 2 = 1.8 − 0.1 × 3.6 = 1.44. 采用本章 Nesterov 约定时,在前瞻点 θ t − η β v t \theta_t-\eta\beta v_t θ t − η β v t 求梯度:
v t + 1 = β v t + ∇ L ( θ t − η β v t ) , θ t + 1 = θ t − η v t + 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}. v t + 1 = β v t + ∇ L ( θ t − η β v t ) , θ t + 1 = θ t − η v t + 1 . 第一步仍到 1.8;第二步前瞻点为 1.8 − 0.18 = 1.62 1.8-0.18=1.62 1.8 − 0.18 = 1.62 ,所以
v 2 = 1.8 + 1.62 = 3.42 v_2=1.8+1.62=3.42 v 2 = 1.8 + 1.62 = 3.42 ,θ 2 = 1.458 \theta_2=1.458 θ 2 = 1.458 。Nesterov 在预期移动后评估梯度,但这个两步数值不构成对所有目标都更快的证明。
AdaGrad 与 RMSProp 的逐坐标尺度
AdaGrad 累积平方梯度
r t = r t − 1 + g t ⊙ g t , θ t + 1 = θ t − e t a g t r t + ε . r_t=r_{t-1}+g_t\odot g_t,
\qquad
\theta_{t+1}=\theta_t-eta\frac{g_t}{\sqrt{r_t}+\varepsilon}. r t = r t − 1 + g t ⊙ g t , θ t + 1 = θ t − e t a r t + ε g t .
历史上经常出现大梯度的坐标有效步长变小,稀疏且偶尔出现的坐标能保留较大步长。由于 r t r_t r t 只增不减,长训练中学习率可能不可逆地衰减到几乎停止;这在某些凸稀疏问题有理论意义,却可能不适合持续变化的深度网络目标。
RMSProp 改用指数移动平均
s t = ρ s t − 1 + ( 1 − ρ ) g t ⊙ g t , θ t + 1 = θ t − e t a g t s t + ε . 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}. s t = ρ s t − 1 + ( 1 − ρ ) g t ⊙ g t , θ t + 1 = θ t − e t a s t + ε g t .
它会逐渐遗忘很久以前的尺度,更能适应非平稳梯度。ρ \rho ρ 大时估计平滑但响应慢,小则响应快且噪声大。不同实现可能把 ε \varepsilon ε 放在平方根内,或加动量与 centered 版本;这些细节会在小二阶矩坐标上明显改变更新。
Adam 的一阶矩、二阶矩与偏差修正
Adam 同时维护
m t = β 1 m t − 1 + ( 1 − β 1 ) g t , v t = β 2 v t − 1 + ( 1 − β 2 ) g t 2 . m_t=\beta_1m_{t-1}+(1-\beta_1)g_t,
\qquad
v_t=\beta_2v_{t-1}+(1-\beta_2)g_t^2. m t = β 1 m t − 1 + ( 1 − β 1 ) g t , v t = β 2 v t − 1 + ( 1 − β 2 ) g t 2 .
从零状态开始时,早期两个移动平均偏向零。第 t t t 次更新的修正为
m ^ t = m t 1 − β 1 t , v ^ t = v t 1 − β 2 t , \widehat m_t=\frac{m_t}{1-\beta_1^t},
\qquad
\widehat v_t=\frac{v_t}{1-\beta_2^t}, m t = 1 − β 1 t m t , v t = 1 − β 2 t v t ,
再更新
θ t + 1 = θ t − e t a m ^ t v ^ t + ε . \theta_{t+1}=\theta_t-eta
\frac{\widehat m_t}{\sqrt{\widehat v_t}+\varepsilon}. θ t + 1 = θ t − e t a v t + ε m t .
修正针对从零初始化与近似平稳矩的启动偏差,不会消除小批量噪声,也不能保证非凸目标全局收敛。若从检查点恢复却把步数重置,β t \beta^t β t 修正会错误;步数属于优化器状态。
例 3:Adam 第一步的偏差修正
取参数 θ 0 = ( 1 , 1 ) \theta_0=(1,1) θ 0 = ( 1 , 1 ) 、梯度 g 1 = ( 2 , − 1 ) g_1=(2,-1) g 1 = ( 2 , − 1 ) 、m 0 = v 0 = 0 m_0=v_0=0 m 0 = v 0 = 0 ,并令
β 1 = 0.9 , β 2 = 0.999 , η = 0.01 \beta_1=0.9,\beta_2=0.999,\eta=0.01 β 1 = 0.9 , β 2 = 0.999 , η = 0.01 ,暂时忽略极小 ε \varepsilon ε 。原始矩为
m 1 = ( 0.2 , − 0.1 ) , v 1 = ( 0.004 , 0.001 ) . m_1=(0.2,-0.1),\qquad v_1=(0.004,0.001). m 1 = ( 0.2 , − 0.1 ) , 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). m 1 = ( 2 , − 1 ) , v 1 = ( 4 , 1 ) . 因此更新量为 ( 0.01 , − 0.01 ) (0.01,-0.01) ( 0.01 , − 0.01 ) ,新参数是 ( 0.99 , 1.01 ) (0.99,1.01) ( 0.99 , 1.01 ) 。第一步中梯度幅度被其平方根尺度抵消,主要保留符号;后续历史矩不同后,更新不再只是符号步。若某坐标 v v v 很小,ε \varepsilon ε 会限制分母并决定有效最大步长,所以它既是数值保护也是算法参数。
大 β 2 \beta_2 β 2 在梯度尺度突然增大时响应较慢,分母可能暂时低估新尺度;过小 ε \varepsilon ε 与低精度计算会放大问题。应监控 m , v m,v m , v 的范围、更新峰值和非有限值。Adam 常能快速获得可用训练损失,但最终泛化、稳定性和最佳学习率仍依任务而定;不能把默认参数当成证明。
二阶矩 v t v_t v t 是逐坐标梯度平方的时间平均,不是 Hessian 对角线,也不是曲率逆。某坐标可能曲率很小却因小批量噪声很大而得到大分母,另一个高曲率坐标若近期梯度恰小也可能得到小分母。因此 Adam 的预条件只能按观测梯度尺度调整,不能继承 Newton 方法的局部二次最优性质。它还依赖参数坐标:旋转或重参数化模型后,逐坐标平方与更新方向一般会改变。
偏差修正式中的 1 − β t 1-\beta^t 1 − β t 假定对应的 β \beta β 在所有早期步骤保持常数。若实现随时间改变 β t \beta_t β t ,正确的零初始化修正应涉及连乘 1 − ∏ j = 1 t β j 1-\prod_{j=1}^t\beta_j 1 − ∏ j = 1 t β j ;直接沿用常数公式会产生错尺度。冻结某些参数、跳过非有限梯度或稀疏更新时,局部步数如何计数也需由实现契约规定并进入检查点。
L2 惩罚与解耦权重衰减
若把 λ ∥ θ ∥ 2 / 2 \lambda\lVert\theta\rVert^2/2 λ ∥ θ ∥ 2 /2 加入目标,梯度变为 g data + λ θ g_{\text{data}}+\lambda\theta g data + λ θ 。普通 SGD 更新可写成
θ + = ( 1 − η λ ) θ − η g data , \theta^+=(1-\eta\lambda)\theta-\eta g_{\text{data}}, θ + = ( 1 − η λ ) θ − η g data ,
所以在同一步长、无其他状态的 SGD 中,它与乘法权重衰减代数等价。对 Adam 等逐坐标预条件方法,把 λ θ \lambda\theta λ θ 放进梯度会进入一阶和二阶矩并被坐标归一化;解耦权重衰减则独立执行参数收缩,二者不再等价。
例 4:预条件使 L2 与解耦衰减分离
设参数 θ = ( 1 , 10 ) \theta=(1,10) θ = ( 1 , 10 ) 、数据梯度 ( 1 , 1 ) (1,1) ( 1 , 1 ) 、惩罚系数 λ = 0.1 \lambda=0.1 λ = 0.1 ,当前自适应预条件比例为 ( 1 , 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.1 ( 1 , 10 ) = ( 1.1 , 2 ) , 经预条件后的下降方向为 ( 1.1 , 0.2 ) (1.1,0.2) ( 1.1 , 0.2 ) 。若解耦处理,数据梯度方向先变为 ( 1 , 0.1 ) (1,0.1) ( 1 , 0.1 ) ,参数收缩方向另为 0.1 ( 1 , 10 ) = ( 0.1 , 1 ) 0.1(1,10)=(0.1,1) 0.1 ( 1 , 10 ) = ( 0.1 , 1 ) ,合计 ( 1.1 , 1.1 ) (1.1,1.1) ( 1.1 , 1.1 ) 。两个第二坐标相差很大。
因此使用 AdamW 一类方法时,应记录解耦公式、衰减系数、哪些参数被排除以及学习率调度。偏置和归一化尺度是否衰减是模型设计选择,不能由参数名称含糊决定。
稳定性、状态与比较边界
没有优化器对所有任务占优。SGD 的噪声可能帮助探索,也可能让小数据训练不稳;动量改善狭长谷底,却带来过冲;AdaGrad 适合稀疏坐标但可能过早停滞;RMSProp 与 Adam 适应尺度,却引入更多状态和数值约定。比较时应给相称的学习率搜索、相同数据顺序预算、多个种子、墙钟时间和最终验证结果。
梯度裁剪按全局范数、逐值或分层方式得到不同方向,裁剪发生在微批、累积后还是跨设备同步后也不同。优化器状态通常是参数内存的若干倍,混合精度还需主权重与损失缩放状态。检查点缺任一矩、步数或调度器状态,都只能称重新初始化优化状态的继续训练,不能声称逐步复现。
常见误区
常见误区
“小批量梯度总是完整梯度的无偏估计。”它需要抽样概率、权重和目标定义相容;过采样与过滤会改变期望。
常见误区
“Adam 会自动选择学习率。”它只做历史矩预条件,仍需基础学习率、epsilon 和稳定性选择。
常见误区
“L2 正则与权重衰减永远相同。”等价只在简单 SGD 等特定更新下成立,自适应预条件会破坏它。
练习:从估计量到优化器状态
练习 标记完成
所属知识 小批量方差
难度 3/5 说明小批量梯度何时无偏,以及增大批量为何不保证方差严格按 1 / B 1/B 1/ B 缩小。
查看提示 先条件在当前参数上计算批量均值的期望,再讨论样本相关和抽样权重。
查看解答 均匀抽样且目标为样本等权均值时,批量均值条件期望等于完整梯度;独立近似下方差约按 1/B 缩小。类别过采样若不加重要性权重会改变期望,重复实体相关也会使方差下降慢于理想比例。
练习 标记完成
所属知识 动量展开
难度 3/5 展开本章 momentum 的速度状态,并解释它怎样处理持续方向与振荡方向。
查看提示 连续代入 v 的递推式,观察历史梯度前的
β \beta β 次幂。
查看解答 从 v0=0 得
v t = Σ j = 1 t β t − j g j vt=\Sigma j=1^t \beta^{t-j}gj v t = Σ j = 1 t β t − j g j 。相同方向的梯度累积,交替方向部分抵消;
β \beta β 越大记忆越长。公式未乘
1 − β 1-\beta 1 − β ,因此稳态尺度与另一种归一化约定不同。
练习 标记完成
所属知识 Nesterov 更新
难度 4/5 按本章约定写出 Nesterov 一步的计算顺序,并指出实现时最易混淆的状态。
查看提示 先用旧速度形成前瞻点,再在那里计算当前梯度。
查看解答 前瞻点是
θ t − η β v t \theta t-\eta \beta vt θt − η β v t ,求得 glook 后令
v t + 1 = β v t + g l o o k vt+1=\beta vt+glook v t + 1 = β v t + g l oo k ,最后
θ t + 1 = θ t − η v t + 1 \theta t+1=\theta t-\eta vt+1 θt + 1 = θt − η v t + 1 。必须保存旧速度和明确学习率是否在速度内;混用库的另一种公式会得到不同数值。
练习 标记完成
所属知识 自适应矩
难度 4/5 比较 AdaGrad、RMSProp 与 Adam 的状态、遗忘方式和主要边界。
查看提示 AdaGrad 累加全部平方,RMSProp 指数遗忘,Adam 再增加一阶矩。
查看解答 AdaGrad 分母单调增,适合稀疏但可能停滞;RMSProp 用
ρ \rho ρ 平衡平滑与响应;Adam 用
β 1 \beta 1 β 1 、
β 2 \beta 2 β 2 维护一二阶矩,并以
1 − β 1 t 1-\beta 1^t 1 − β 1 t 、
1 − β 2 t 1-\beta 2^t 1 − β 2 t 修正零初始化偏差。三者都仍需基础学习率和 epsilon。
练习 标记完成
所属知识 epsilon
难度 3/5 为什么 Adam 或 RMSProp 的 ε \varepsilon ε 不只是可忽略的防除零常数?
查看提示 分析二阶矩接近零时分母和更新上界。
查看解答 epsilon 防止除零并限制小二阶矩坐标的放大;放在平方根内外会产生不同有效尺度。过小值在低精度下可能失去保护,过大则使自适应归一化变弱。应连同数值格式、矩范围和更新峰值验证。
练习 标记完成
所属知识 权重衰减
难度 4/5 推导普通 SGD 下 L2 与权重衰减的等价,并解释为何 Adam 中通常不等价。
查看提示 先写普通 SGD 代数,再让自适应预条件逐坐标作用。
查看解答 普通 SGD 中加入
λ θ \lambda \theta λ θ 得
θ + = ( 1 − η λ ) θ − η g \theta+=(1-\eta \lambda)\theta-\eta g θ + = ( 1 − η λ ) θ − η g ,与解耦乘法衰减等价。自适应方法会对耦合
λ θ \lambda \theta λ θ 做矩估计和逐坐标缩放,解耦衰减则直接按参数收缩,所以方向不同;需记录公式、排除参数和调度。
知识连接与资源
书籍 · 2016 Deep Learning Ian Goodfellow, Yoshua Bengio, Aaron Courville
适合作为反向传播和优化章节的完整参考。
打开官方来源
《Deep Learning》作者在线教材可用于核对随机优化、动量和逐坐标自适应方法的基本动机。具体 Adam、RMSProp 与权重衰减公式仍应以所用实现的参数化和更新顺序为准。