0%

优化器数学:从梯度下降到自适应矩估计

训练深度学习模型时,我们每天都在用 SGD、Momentum、Adam、AdamW,但很少有人能说清它们之间的数学关系:为什么动量能加速收敛?为什么 Adam 要维护两个矩估计?偏差修正那一项到底在修什么?AdamW 与 Adam 的区别真的只是"先做权重衰减"吗?本文从凸优化的收敛性分析出发,建立梯度下降的理论基线,然后逐步推导动量法、Nesterov 加速、Adagrad、RMSProp、Adam 与 AdamW,把优化器的演进理解为"逐步修补梯度估计的偏差与尺度缺陷",并给出每个关键公式的严格推导与收敛性说明。

第一部分:优化问题与收敛性分析基础

问题定义

深度学习训练可以写成无约束优化问题:

minθRdL(θ)=1Ni=1N(fθ(xi),yi)\min_{\theta \in \mathbb{R}^d} \quad L(\theta) = \frac{1}{N} \sum_{i=1}^{N} \ell(f_\theta(x_i), y_i)

其中 \ell 是单样本损失,NN 是训练样本数。我们的目标是设计迭代算法 θt+1=θtηtgt\theta_{t+1} = \theta_t - \eta_t g_t,使其快速逼近最优解 θ=argminL(θ)\theta^* = \arg\min L(\theta)

光滑性与强凸性

收敛性分析依赖对损失函数几何性质的假设。两个核心概念:

L-光滑(L-smooth):梯度是 L-Lipschitz 连续的:

L(θ)L(θ)Lθθ,θ,θ\|\nabla L(\theta) - \nabla L(\theta')\| \le L \|\theta - \theta'\|, \quad \forall \theta, \theta'

等价地,损失函数被二次函数从上下夹逼:

L(θ)L(θ)+L(θ)(θθ)+L2θθ2L(\theta') \le L(\theta) + \nabla L(\theta)^{\top}(\theta' - \theta) + \frac{L}{2}\|\theta' - \theta\|^2

这个不等式是几乎所有收敛性证明的起点,它刻画了"梯度变化不会太快"。

μ\mu-强凸(μ\mu-strongly convex)

L(θ)L(θ)+L(θ)(θθ)+μ2θθ2L(\theta') \ge L(\theta) + \nabla L(\theta)^{\top}(\theta' - \theta) + \frac{\mu}{2}\|\theta' - \theta\|^2

强凸保证最优解唯一且"谷底足够深",是线性收敛的前提。两者的比值 κ=L/μ\kappa = L/\mu 称为条件数,是刻画问题难度的核心指标。

梯度下降的收敛性

对 L-光滑函数,取学习率 η1/L\eta \le 1/L,梯度下降满足单调下降

L(θt+1)L(θt)η2L(θt)2L(\theta_{t+1}) \le L(\theta_t) - \frac{\eta}{2}\|\nabla L(\theta_t)\|^2

证明:由 L-光滑不等式代入 θ=θt+1\theta' = \theta_{t+1}θ=θt\theta = \theta_t,并利用 θt+1θt=ηL(θt)\theta_{t+1} - \theta_t = -\eta \nabla L(\theta_t) 即可。

对 L-光滑且 μ\mu-强凸的函数,取 η=1/L\eta = 1/L,有线性收敛

L(θT)L(θ)(1μL)T(L(θ0)L(θ))L(\theta_T) - L(\theta^*) \le \left( 1 - \frac{\mu}{L} \right)^T \left( L(\theta_0) - L(\theta^*) \right)

推导要点:利用强凸给出 L(θt)L(θ)12μL(θt)2L(\theta_t) - L(\theta^*) \le \frac{1}{2\mu}\|\nabla L(\theta_t)\|^2(Polyak-Łojasiewicz 不等式的强凸特例),结合单调下降不等式消去梯度项,得到每步至少按 1μ/L1 - \mu/L 的比例缩小误差。

结论:收敛率由条件数 κ=L/μ\kappa = L/\mu 决定。κ\kappa 大(损失曲面"细长",如狭窄山谷)收敛极慢,这为动量法的引入提供了理论动机:我们需要一种对条件数更不敏感的更新方式。

为什么收敛性分析重要
收敛率 $1 - \mu/L$ 里的条件数 $\kappa$ 解释了"山谷为什么难训练":一个方向曲率大($L$ 大)、另一个方向曲率小($\mu$ 小),梯度在陡峭方向反复震荡、在平缓方向缓慢爬行。后续所有优化器本质上都在做同一件事:降低更新对条件数的敏感度。动量通过累积历史梯度,自适应方法通过逐参数缩放学习率。

第二部分:随机梯度下降(SGD)

为什么需要随机性

全批量梯度 L(θ)=1Nii(θ)\nabla L(\theta) = \frac{1}{N}\sum_i \nabla \ell_i(\theta) 每步需要遍历全部 NN 个样本,大数据集(N107N \sim 10^7)下不可行。SGD 用随机小批量(mini-batch)梯度代替全梯度:

gt=1miBti(θt)g_t = \frac{1}{m} \sum_{i \in \mathcal{B}_t} \nabla \ell_i(\theta_t)

其中 Bt\mathcal{B}_t 是第 tt 步采样的 batch(大小 mm)。gtg_tL(θt)\nabla L(\theta_t)无偏估计

E[gt]=L(θt)\mathbb{E}[g_t] = \nabla L(\theta_t)

方差与收敛

小批量梯度的方差为 EgtL(θt)2σ2/m\mathbb{E}\|g_t - \nabla L(\theta_t)\|^2 \approx \sigma^2 / m,其中 σ2\sigma^2 是单样本梯度的方差。方差的存在使 SGD 只能收敛到最优解的邻域(不衰减学习率时),或者以更慢的速度收敛(衰减学习率时)。

对 L-光滑 + 强凸函数,取衰减学习率 ηt=Θ(1/t)\eta_t = \Theta(1/t),SGD 的收敛率为:

E[L(θT)L(θ)]=O(1T)\mathbb{E}[L(\theta_T) - L(\theta^*)] = O\left( \frac{1}{T} \right)

对比全批量梯度下降的线性收敛(指数衰减),随机性把收敛率从 O((1μ/L)T)O((1-\mu/L)^T) 降到了 O(1/T)O(1/T)这是随机化的代价

批量大小的作用

批量大小 mm 的影响:方差 1/m\propto 1/m,所以增大 batch 可以加大学习率而不发散。经验法则:线性缩放规则(linear scaling rule),batch 翻倍则学习率翻倍。但 batch 过大(超过某阈值)后,梯度估计进入"精确但过拟合当前 batch"的区域,缩放规则失效,且大 batch 的泛化性通常略差于小 batch,这被称为"泛化差距"(generalization gap)。

实践中的学习率

SGD 对学习率极其敏感,需要精心设计调度:

  • 固定学习率:只适合凸问题,非凸下难收敛。
  • 步衰减(step decay):每固定步数乘以衰减因子(如每 30 epoch 乘 0.1),经典 CNN 训练标配。
  • 余弦退火(cosine decay)ηt=ηmin+12(ηmaxηmin)(1+cos(πt/T))\eta_t = \eta_{\min} + \frac{1}{2}(\eta_{\max} - \eta_{\min})(1 + \cos(\pi t / T)),平滑衰减,与 warm restart 结合(SGDR)能进一步改善。

第三部分:动量法(Momentum)

更新规则与物理直觉

动量法维护速度变量 vtv_t,作为历史梯度的指数加权累积:

vt=βvt1+gt,θt+1=θtηvtv_t = \beta v_{t-1} + g_t, \quad \theta_{t+1} = \theta_t - \eta v_t

展开 vtv_t

vt=i=0tβtigi=gt+βgt1+β2gt2+v_t = \sum_{i=0}^{t} \beta^{t-i} g_i = g_t + \beta g_{t-1} + \beta^2 g_{t-2} + \cdots

权重按 βi\beta^i 指数衰减,β=0.9\beta = 0.9 时有效记忆约 1/(1β)=101/(1-\beta) = 10 步。物理直觉是小球在损失曲面上滚动,速度是惯性的累积,单步梯度突变不会立刻反转运动方向。

收敛性分析

对 L-光滑 + μ\mu-强凸函数,Polyak 重球法(heavy ball)的收敛率改进为:

L(θT)L(θ)O((1μL)T)L(\theta_T) - L(\theta^*) \le O\left( \left( 1 - \sqrt{\frac{\mu}{L}} \right)^T \right)

关键对比:朴素梯度下降的衰减因子是 1μ/L1 - \mu/L,动量法是 1μ/L1 - \sqrt{\mu/L}。由于 μ/Lμ/L\sqrt{\mu/L} \gg \mu/Lκ>1\kappa > 1 时),动量把条件数的影响从 κ\kappa 降到了 κ\sqrt{\kappa}

直观解释:在"山谷"地形中,梯度在陡峭方向(曲率 LL)分量大、在平缓方向(曲率 μ\mu)分量小。朴素梯度下降每步都被陡峭方向主导,来回震荡;动量累积后,震荡方向的历史梯度相互抵消,平缓方向的同向分量持续叠加,净速度偏向主方向,等效于"绕过了条件数的平方"。

偏差问题:一个常被忽略的细节

vtv_t 从 0 初始化,早期步数的速度被低估(只有 1βt1 - \beta^t 的权重)。与 Adam 不同,经典动量法通常不做偏差修正,实践中用 warmup 学习率间接缓解。这个细节在 Adam 里被显式处理,是理解 Adam 偏差修正的铺垫。

第四部分:Nesterov 加速梯度(NAG)

前瞻更新

Nesterov 加速梯度在动量法基础上加了一个"前瞻"修正:先用当前速度预演一步,在预演位置计算梯度:

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

θt+1=θtηvt+1\theta_{t+1} = \theta_t - \eta v_{t+1}

与标准动量的唯一区别是梯度计算位置:标准动量在 θt\theta_t 处计算,NAG 在"速度将要到达的位置" θtηβvt\theta_t - \eta \beta v_t 处计算。

为什么前瞻有帮助

在接近最优点的下坡路段,标准动量因为惯性容易过冲(越过最优点后仍沿原方向前进)。NAG 在预演位置看到"前方开始上坡",能提前减小步长。形式化地,NAG 对凸光滑函数达到最优收敛率:

L(θT)L(θ)O(1T2)(凸情形)L(\theta_T) - L(\theta^*) \le O\left( \frac{1}{T^2} \right) \quad (\text{凸情形})

L(θT)L(θ)O((1μL)T)(强凸情形)L(\theta_T) - L(\theta^*) \le O\left( \left( 1 - \sqrt{\frac{\mu}{L}} \right)^T \right) \quad (\text{强凸情形})

凸情形下的 O(1/T2)O(1/T^2) 是一阶方法的信息论下界(Nesterov 证明了没有任何一阶方法能超过这个速率),因此 NAG 在凸优化意义下是最优一阶方法

动量系优化器解决了"方向",还没解决"尺度"
动量与 NAG 都用历史梯度修正更新方向(抑制震荡、加速主方向),但所有参数仍然共享同一个学习率。实际问题里不同参数的梯度尺度差异巨大:深层网络靠近输入的层梯度小、靠近输出的层梯度大;稀疏特征只被少数样本激活。下一步的自适应方法专门解决"每个参数该有自己的学习率"。

第五部分:自适应学习率

Adagrad:累积梯度平方

Adagrad 为每个参数维护历史梯度平方的累积和,用它的平方根逐参数缩放学习率:

Gt=i=1tgigiG_t = \sum_{i=1}^{t} g_i \odot g_i

θt+1=θtηGt+ϵgt\theta_{t+1} = \theta_t - \frac{\eta}{\sqrt{G_t + \epsilon}} \odot g_t

其中 \odot 是逐元素乘法,ϵ\epsilon 防止除零(通常 10810^{-8})。频繁更新、梯度大的参数累积 GtG_t 大,学习率被缩小;稀疏更新、梯度小的参数学习率保持较大,这让 Adagrad 天然适合稀疏特征(如词嵌入、one-hot 编码)。

Regret 分析:Adagrad 的在线学习 regret 界为:

R(T)=t=1Tft(θt)minθt=1Tft(θ)=O(i=1dg1:T,i22)R(T) = \sum_{t=1}^{T} f_t(\theta_t) - \min_\theta \sum_{t=1}^{T} f_t(\theta) = O\left( \sqrt{\sum_{i=1}^{d} \|g_{1:T,i}\|_2^2} \right)

对比 SGD 的 O(T)O(\sqrt{T}) 界,Adagrad 的界与数据本身的结构(各维度梯度范数)相关,对稀疏数据显著更好。

缺陷GtG_t 单调不减,学习率 η/Gt\eta/\sqrt{G_t} 单调衰减到零,训练后期几乎无法继续学习。这个缺陷直接催生了 RMSProp。

RMSProp:滑动平均替代累积

RMSProp 把"全历史累积"改为指数加权滑动平均,让梯度平方的估计能"遗忘"旧信息:

vt=β2vt1+(1β2)gtgtv_t = \beta_2 v_{t-1} + (1 - \beta_2) g_t \odot g_t

θt+1=θtηvt+ϵgt\theta_{t+1} = \theta_t - \frac{\eta}{\sqrt{v_t + \epsilon}} \odot g_t

β2=0.999\beta_2 = 0.999 时有效窗口约 1000 步。vtv_t 是对 E[g2]\mathbb{E}[g^2] 的估计,vt\sqrt{v_t} 刻画当前梯度尺度。每个参数的学习率 η/vt\eta/\sqrt{v_t} 随局部梯度尺度自适应:梯度大的维度被压低,梯度小的维度被放大,等效于白化梯度坐标

RMSProp 解决了 Adagrad 学习率单调衰减的问题,但缺少动量项,在高曲率方向仍会震荡。

第六部分:Adam:自适应矩估计

算法定义

Adam(Adaptive Moment Estimation,Kingma & Ba 2015)把动量法与 RMSProp 结合:一阶矩 mtm_t 估计梯度均值(动量),二阶矩 vtv_t 估计梯度平方均值(自适应尺度):

mt=β1mt1+(1β1)gtm_t = \beta_1 m_{t-1} + (1 - \beta_1) g_t

vt=β2vt1+(1β2)gtgtv_t = \beta_2 v_{t-1} + (1 - \beta_2) g_t \odot g_t

默认 β1=0.9\beta_1 = 0.9β2=0.999\beta_2 = 0.999

偏差修正的严格推导

mtm_t 从 0 初始化导致早期估计有偏。展开 mtm_t

mt=(1β1)i=1tβ1tigim_t = (1 - \beta_1) \sum_{i=1}^{t} \beta_1^{t-i} g_i

若梯度序列平稳(E[gi]=g\mathbb{E}[g_i] = g 恒定),则:

E[mt]=(1β1)i=1tβ1tig=g(1β1t)\mathbb{E}[m_t] = (1 - \beta_1) \sum_{i=1}^{t} \beta_1^{t-i} g = g (1 - \beta_1^t)

期望值只有真实梯度 gg1β1t1 - \beta_1^t 倍,系统性低估。除以 1β1t1 - \beta_1^t 恰好补上缺失的权重:

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

使得 E[m^t]=g\mathbb{E}[\hat{m}_t] = gE[v^t]=E[g2]\mathbb{E}[\hat{v}_t] = \mathbb{E}[g^2],无偏。修正在训练早期(tt 小)尤其关键t=1t = 11β1=0.11 - \beta_1 = 0.1,不修正的话第一步动量只有真实值的十分之一;tt 较大时 1β1t11 - \beta_1^t \to 1,修正项趋于 1,影响渐弱。这也是为什么 Adam 不需要 warmup 就能稳定启动(修正替代了 warmup 的部分作用)。

更新规则

θt+1=θtηv^t+ϵm^t\theta_{t+1} = \theta_t - \frac{\eta}{\sqrt{\hat{v}_t} + \epsilon} \odot \hat{m}_t

Adam 的收敛性

Kingma & Ba 在凸设定下证明了 regret 界:

R(T)D22η(1β1)i=1dTv^T,i+η(1+β1)(1β1)1β2i=1dg1:T,i2R(T) \le \frac{D^2}{2\eta(1 - \beta_1)} \sum_{i=1}^{d} \sqrt{T \hat{v}_{T,i}} + \frac{\eta(1 + \beta_1)}{(1 - \beta_1)\sqrt{1 - \beta_2}} \sum_{i=1}^{d} \|g_{1:T,i}\|_2

其中 DD 是参数空间直径,v^T,i\hat{v}_{T,i} 是二阶矩的修正估计。简化后:

R(T)=O(T)R(T) = O\left( \sqrt{T} \right)

与非自适应方法同阶,但对稀疏梯度、非平稳目标(梯度分布随时间变化)显著更稳健,因为每个维度的缩放自适应于该维度的梯度历史。

已知问题:收敛性与泛化

Adam 存在两个被广泛讨论的问题:

  1. 收敛性缺陷:Reddi et al. 指出,Adam 的 v^t\hat{v}_t 不保证单调不减,可能增大,此时原证明失效,Adam 在某些简单凸问题上不收敛。为此提出 AMSGrad(用 v^t\hat{v}_t 的历史最大值代替当前值,保证单调)。实践中 AMSGrad 通常与 Adam 表现接近,但理论更干净。
  2. 泛化差距:Adam 在训练集上收敛快,但测试集泛化常略逊于 SGD+Momentum。一种解释是 Adam 的逐参数缩放等效于"改变了正则化几何",另一种观点认为 SGD 的隐式正则(沿着平坦方向)更强。这也推动了 AdamW 与 SGD 融合方向的研究。
优化器的演进脉络:每步都在修补前一步的缺陷
SGD 是基线,方差大、对条件数敏感;动量修补"方向震荡"(条件数 $\kappa \to \sqrt{\kappa}$);NAG 用前瞻达到一阶方法最优速率;Adagrad 修补"尺度不均"但引入学习率单调衰减;RMSProp 用滑动平均修复衰减;Adam 融合动量与自适应尺度并显式做偏差修正;AdamW 修复 Adam 里权重衰减被自适应缩放破坏的问题。每一步都是对前一步缺陷的针对性修补,理解这条线就能理解每个超参数存在的理由。

第七部分:AdamW:解耦权重衰减

权重衰减与 L2 正则的关系

**权重衰减(weight decay)**在每步更新时把参数向零收缩:

θt+1=(1ηλ)θtηgt\theta_{t+1} = (1 - \eta \lambda) \theta_t - \eta g_t

L2 正则在损失中加入 λ2θ2\frac{\lambda'}{2}\|\theta\|^2,梯度变为 L(θ)+λθ\nabla L(\theta) + \lambda' \theta,更新为:

θt+1=θtηL(θt)ηλθt\theta_{t+1} = \theta_t - \eta \nabla L(\theta_t) - \eta \lambda' \theta_t

朴素 SGD,两者数学等价(λ=λ\lambda' = \lambda):权重衰减项要么直接乘在参数上,要么混进梯度里被同一学习率缩放,效果一致。

为什么 Adam 里两者不等价

Adam 的更新用 v^t\hat{v}_t 归一化梯度。若权重衰减混在梯度里(L2 正则方式),它也会被逐元素归一化:

θt+1=θtηv^t+ϵ(m^t+λθt)\theta_{t+1} = \theta_t - \frac{\eta}{\sqrt{\hat{v}_t} + \epsilon} \odot \left( \hat{m}_t + \lambda' \theta_t \right)

问题在于权重衰减项被自适应缩放后,每个参数的衰减强度不一致:频繁更新、梯度大的参数 v^t\hat{v}_t 大,衰减项 λθt/v^t\lambda'\theta_t / \sqrt{\hat{v}_t} 被削弱;稀疏参数衰减被放大。这破坏了权重衰减"均匀地把参数拉向零"的语义,也破坏了它与 L2 正则的等价性(在归一化坐标系下才等价)。

AdamW:解耦

AdamW(Loshchilov & Hutter 2019)把权重衰减从梯度中解耦,直接作用于参数:

θt+1=θtηv^t+ϵm^tηλθt\theta_{t+1} = \theta_t - \frac{\eta}{\sqrt{\hat{v}_t} + \epsilon} \odot \hat{m}_t - \eta \lambda \theta_t

权重衰减项 ηλθt\eta \lambda \theta_t 不经过 v^t\hat{v}_t 归一化,对所有参数一视同仁。论文同时给出收敛性论证:解耦后的权重衰减等价于在归一化坐标系下做 L2 正则,保证与 L2 正则的理论等价性恢复;而耦合版本(Adam-L2)在数学上是不严谨的(Loshchilov & Hutter 用反例说明其收敛性质与 L2 正则不一致)。

实践证据:AdamW 在 Transformer、BERT、GPT 系列上的一致优于 Adam-L2,且权重衰减的尺度更可解释(不再依赖各参数梯度尺度的耦合)。AdamW 已成为现代大模型训练的事实标准。

第八部分:现代实践配方

标准配置

现代深度学习训练(尤其 Transformer 系)的推荐配置:

  • 优化器:AdamW,β1=0.9\beta_1 = 0.9β2=0.999\beta_2 = 0.999ϵ=108\epsilon = 10^{-8}
  • 权重衰减λ[0.01,0.1]\lambda \in [0.01, 0.1],比 SGD 时代(10410^{-4} 量级)大一两个量级,因为解耦后衰减不经过归一化,作用更强。
  • 预热(warmup):前 TwT_w 步学习率从 0 线性升到峰值,TwT_w 通常为总步数的 1% 到 10%。动机:训练初期 Adam 的二阶矩估计不可靠,梯度方差大,直接大学习率会破坏参数初始化附近的良好结构。
  • 余弦退火:峰值学习率后余弦衰减到接近 0,配合 warmup 构成完整的"升-降"调度。

大 batch 训练

大 batch 下梯度噪声小,SGD + Momentum + 线性缩放规则可以与 AdamW 表现相当,同时省去二阶矩的内存开销(对超大模型重要)。实践对比:

  • batch 256 以下:AdamW 省心,开箱即用。
  • batch 1024 以上:SGD + Momentum + warmup + cosine 往往更优或相当,且显存占用更低。

梯度裁剪

当梯度范数过大(如长序列 Transformer、GAN 训练),直接裁剪梯度范数:

gtgtmin(1,cgt)g_t \leftarrow g_t \cdot \min\left( 1, \frac{c}{\|g_t\|} \right)

裁剪保护 Adam 的矩估计不被少数异常大梯度污染,是稳定训练长程模型的标配。注意裁剪应在动量累积之前进行,否则异常梯度会通过动量滞后传播。

第九部分:二阶方法对比与展望

牛顿法与拟牛顿

二阶方法利用 Hessian 信息,更新为 θt+1=θtηH1gt\theta_{t+1} = \theta_t - \eta H^{-1} g_t,对条件数不敏感,但 HH 的存储与求逆是 O(d2)O(d^2)O(d3)O(d^3),深度模型(d108d \sim 10^8)完全不可行。拟牛顿法(L-BFGS)用梯度历史近似 Hessian 逆,但随机化后稳定性差,实践中很少用于深度学习。

一阶方法的效率边界

一阶方法的信息论下界(Nesterov):光滑凸问题最优收敛率 O(1/T2)O(1/T^2),NAG 已达到。强凸问题线性收敛的最优常数依赖 κ\sqrt{\kappa}任何一阶方法都无法超越这个下界,这是为什么"更好的优化器"只能从"利用问题结构"(稀疏性、随机性、条件数估计)而非"改进一阶信息的使用"入手。

方向

  • 调度与采样耦合:学习率、batch 大小、数据采样顺序联合设计(如 batch 从大到小 + 学习率从小到大)。
  • 自适应与 SGD 的融合:AdamW 的泛化差距催生了"在 Adam 与 SGD 之间插值"的方法(如 AdaBound、SGDP)。
  • 优化器作为超参数:小规模任务上搜索优化器与调度,迁移到大模型(训练配方自动化)。

总结

本文的完整推导脉络:

  1. 收敛性基础:L-光滑与强凸定义梯度下降的线性收敛,条件数 κ\kappa 是核心障碍。
  2. SGD:小批量带来无偏但含噪的梯度,收敛率降至 O(1/T)O(1/T),批量与学习率耦合。
  3. 动量与 NAG:历史梯度累积把条件数影响从 κ\kappa 降到 κ\sqrt{\kappa},NAG 达到一阶最优速率。
  4. 自适应家族:Adagrad 累积平方、RMSProp 滑动平均、Adam 双矩估计加偏差修正,逐参数自适应尺度。
  5. AdamW:权重衰减与自适应归一化解耦,恢复 L2 等价性,成为现代标准。

核心结论:优化器的演进是"修补梯度估计缺陷"的过程。方向缺陷用动量修,尺度缺陷用自适应修,初始化缺陷用偏差修正修,正则化缺陷用解耦修。理解每个修正在修什么,比记住更新公式更有价值。

参考

[1] Robbins, H., & Monro, S. A Stochastic Approximation Method. Annals of Mathematical Statistics, 22(3):400-407, 1951.
[2] Polyak, B. T. Some Methods of Speeding Up the Convergence of Iteration Methods. USSR Computational Mathematics and Mathematical Physics, 4(5):1-17, 1964.
[3] Nesterov, Y. A Method for Unconstrained Convex Minimization Problem with the Rate of Convergence O(1/k2)O(1/k^2). Doklady AN USSR, 269:543-547, 1983.
[4] Duchi, J., Hazan, E., & Singer, Y. Adaptive Subgradient Methods for Online Learning and Stochastic Optimization. JMLR, 12:2121-2159, 2011.
[5] Tieleman, T., & Hinton, G. RMSProp: Divide the Gradient by a Running Average of Its Recent Magnitude. COURSERA Neural Networks Lecture, 2012.
[6] Kingma, D. P., & Ba, J. Adam: A Method for Stochastic Optimization. ICLR 2015.
[7] Reddi, S. J., Kale, S., & Kumar, S. On the Convergence of Adam and Beyond. ICLR 2018.
[8] Loshchilov, I., & Hutter, F. Decoupled Weight Decay Regularization. ICLR 2019.
[9] Sutskever, I., Martens, J., Dahl, G., & Hinton, G. On the Importance of Initialization and Momentum in Deep Learning. ICML 2013.
[10] Goh, G. Why Momentum Really Works. Distill, 2017.
[11] Ruder, S. An Overview of Gradient Descent Optimization Algorithms. arXiv:1609.04747, 2016.
[12] Nesterov, Y. Introductory Lectures on Convex Optimization: A Basic Course. Springer, 2004.
[13] Goyal, P., et al. Accurate, Large Minibatch SGD: Training ImageNet in 1 Hour. arXiv:1706.02677, 2017.
[14] Loshchilov, I., & Hutter, F. SGDR: Stochastic Gradient Descent with Warm Restarts. ICLR 2017.
[15] Zhang, M. R., et al. Fixup Initialization: Residual Learning without Normalization. ICLR 2019.

🌙