优化算法:优化器谱系 + 四大优化器(课本公式)¶
- 章节:第29章 · 深度学习方法总结(29.3 深度学习的优化算法)
- 出处:课本 29.3 节 p.520–522,式 29.1–29.12(符号、公式全部忠于课本)。AdaGrad/AdaDelta/AdamW 见末尾「额外档」。
- 符号约定(课本,务必认准):
- \(\boldsymbol g_t\)=第 \(t\) 步的梯度(损失对参数的偏导,在 \(\boldsymbol\theta_{t-1}\) 处算);\(\eta\)=学习率。
- \(\boldsymbol v_t\)=一阶动量(梯度的指数加权移动平均);\(\boldsymbol s_t\)=二阶动量(梯度平方的指数加权移动平均)。⚠️ 别和别的书的 \(m,v\) 或 \(r\) 记号串了。
- 矫正步没有"小帽子",课本是原地覆盖(\(\boldsymbol v_t\leftarrow\boldsymbol v_t/(1-\beta_1^t)\))。
- \(\epsilon\) 位置:RMSProp 在根号内 \(\sqrt{\boldsymbol s_t+\epsilon}\);Adam 在根号外 \(\sqrt{\boldsymbol s_t}+\epsilon\)。
优化器谱系与掌握程度¶
┌─ 动量算法 (一阶动量 v:减振荡) ───┐
SGD (式29.1, 基础) ─────────┤ ├──→ Adam (v+s 合体, 必考)
└─ RMSProp (二阶动量 s:自适应) ────┘
↑ 由 AdaGrad 改进而来
- 必考 / 要会写公式:SGD、动量算法、RMSProp、Adam(课本 29.3 节正好这 4 个小节)。
- 仅识名(额外档,封面旁注「还有」):AdaGrad、AdaDelta、AdamW(课本/PPT 都没给公式)。
- 课本定位原话:「Adam 是最常用的算法,是动量算法和 RMSProp 算法的组合」。
① 随机梯度下降 SGD(式 29.1)¶
\[
\boldsymbol\theta_t = \boldsymbol\theta_{t-1} - \eta\,\boldsymbol g_t
\]
课本:每步梯度只基于当前位置,整体收敛未必快,故有下面几种改进。
② 动量算法 Momentum(式 29.2、29.3)¶
\[
\boldsymbol v_t = \beta_1 \boldsymbol v_{t-1} + (1-\beta_1)\,\boldsymbol g_t
\]
\[
\boldsymbol\theta_t = \boldsymbol\theta_{t-1} - \eta\,\boldsymbol v_t
\]
展开式(设 \(\boldsymbol v_0=\boldsymbol 0\),式 29.4):
\[
\boldsymbol v_t = (1-\beta_1)\sum_{\tau=1}^{t}\beta_1^{\,t-\tau}\,\boldsymbol g_\tau
\]
- \(\boldsymbol v_t\) 是迄今所有步梯度的加权平均,权重从后往前指数递减(指数加权移动平均)。\(\beta_1=0\) 时退回 SGD。
- 直观:某方向梯度有正有负 → 加权平均小 → 小幅更新;同正同负 → 大 → 大幅更新。减轻 SGD 的振荡。物理解释:\(\boldsymbol v_t\) 表示速度。
③ RMSProp(式 29.5、29.6)¶
RMSProp(root mean square propagation)是 AdaGrad 的改进。
\[
\boldsymbol s_t = \beta_2 \boldsymbol s_{t-1} + (1-\beta_2)\,\boldsymbol g_t \odot \boldsymbol g_t
\]
\[
\boldsymbol\theta_t = \boldsymbol\theta_{t-1} - \frac{\eta}{\sqrt{\boldsymbol s_t+\epsilon}}\,\boldsymbol g_t
\]
展开式(设 \(\boldsymbol s_0=\boldsymbol 0\),式 29.7):
\[
\boldsymbol s_t = (1-\beta_2)\sum_{\tau=1}^{t}\beta_2^{\,t-\tau}\,\boldsymbol g_\tau\odot\boldsymbol g_\tau
\]
- \(\boldsymbol s_t\) 是梯度元素平方的指数加权移动平均,用它对当前梯度元素归一化。\(\beta_2=0\) 时近似 SGD。
- 直观:某方向梯度都大 → \(\boldsymbol s_t\) 大 → 归一化后小 → 小幅更新;都小 → 大幅更新。对每个梯度元素做自适应调整。
④ Adam(式 29.8–29.12)¶
\[
\boldsymbol v_t = \beta_1 \boldsymbol v_{t-1} + (1-\beta_1)\,\boldsymbol g_t
\]
\[
\boldsymbol s_t = \beta_2 \boldsymbol s_{t-1} + (1-\beta_2)\,\boldsymbol g_t \odot \boldsymbol g_t
\]
矫正(原地覆盖,无帽子):
\[
\boldsymbol v_t \leftarrow \frac{\boldsymbol v_t}{1-\beta_1^{\,t}}
\]
\[
\boldsymbol s_t \leftarrow \frac{\boldsymbol s_t}{1-\beta_2^{\,t}}
\]
更新:
\[
\boldsymbol\theta_t = \boldsymbol\theta_{t-1} - \eta\,\frac{\boldsymbol v_t}{\sqrt{\boldsymbol s_t}+\epsilon}
\]
- Adam(adaptive moment estimation)把动量(\(\boldsymbol v\))和 RMSProp(\(\boldsymbol s\))结合。
- 超参数通常取 \(\beta_1=0.9,\ \beta_2=0.999,\ \epsilon=10^{-8}\)。
易错点速记¶
- \(\boldsymbol v\)=一阶动量、\(\boldsymbol s\)=二阶动量,别记反(二阶是带 \(\boldsymbol g_t\odot\boldsymbol g_t\) 的那个)。
- Adam 没有小帽子,矫正是原地覆盖(式 29.10/29.11)。
- \(\epsilon\) 位置:RMSProp 根号内、Adam 根号外。
- 动量解决「振荡/方向」问题(一阶);RMSProp 解决「各维步长自适应」问题(二阶);Adam 两者兼得。
额外档(仅识名,课本/PPT 无公式)¶
- AdaGrad:课本只一句「RMSProp 是 AdaGrad 的改进」。课外理解:把历史梯度平方全部累加(无遗忘),分母越滚越大、后期学习率衰减到几乎不动;RMSProp 改用指数加权移动平均修正之。
- AdaDelta:仅 PPT slide_050 括号里列名。
- AdamW:仅 PPT slide_050 括号里列名(课本零提及、录音零提及)。W=weight decay;AdamW=Adam + 解耦权重衰减(把衰减项从梯度里拿出来单独施加,不被 \(\sqrt{\boldsymbol s_t}\) 缩放)。公式属课外,不会要求推/默写。