第十二章:SGD & Adam --- 知识点笔记
综合来源:Lecture 12 PDF(25页)、课堂笔记(CSDN)
占位图

12.1 学习率调度(Learning Rate Schedules)
| 调度策略 | 公式 | 适用 |
|---|---|---|
| 线性(Linear) | η(τ)=(1−τT)ηstart+τTηend\eta^{(\tau)} = (1-\frac{\tau}{T})\eta_{start} + \frac{\tau}{T}\eta_{end}η(τ)=(1−Tτ)ηstart+Tτηend | 简单任务 |
| 幂律(Power-law) | η(τ)=ηstart(1+τs)−c\eta^{(\tau)} = \eta_{start}(1+\frac{\tau}{s})^{-c}η(τ)=ηstart(1+sτ)−c | 最常用 |
| 指数(Exponential) | η(τ)=ηstart⋅cτ\eta^{(\tau)} = \eta_{start} \cdot c^{\tau}η(τ)=ηstart⋅cτ | --- |
| 余弦(Cosine) | η(τ)=ηmin+ηmax−ηmin2(1+cos(πτT))\eta^{(\tau)} = \eta_{min} + \frac{\eta_{max}-\eta_{min}}{2}(1+\cos(\pi\frac{\tau}{T}))η(τ)=ηmin+2ηmax−ηmin(1+cos(πTτ)) | LLM常用 |
12.2 自适应学习率 ⭐⭐
AdaGrad
- 对每个参数维度独立调整学习率
- 累积梯度平方和→梯度大的维度学习率减小
ri=ri+(∂E∂wi)2r_i = r_i + \left(\frac{\partial E}{\partial w_i}\right)^2ri=ri+(∂wi∂E)2
wi=wi−ηri+ϵ⋅∂E∂wiw_i = w_i - \frac{\eta}{\sqrt{r_i + \epsilon}} \cdot \frac{\partial E}{\partial w_i}wi=wi−ri+ϵ η⋅∂wi∂E
问题 :rrr单调增长→学习率过度减小→早期大梯度导致后期停滞
RMSProp
- 用指数加权移动平均替代AdaGrad的累积和→关注近期梯度
ri=βri+(1−β)(∂E∂wi)2r_i = \beta r_i + (1-\beta)\left(\frac{\partial E}{\partial w_i}\right)^2ri=βri+(1−β)(∂wi∂E)2
- β≈0.9\beta \approx 0.9β≈0.9:越近的梯度权重越大
12.3 Adam ⭐⭐⭐
Adam = RMSProp + Momentum
si(τ)=β1si(τ−1)+(1−β1)∂E∂wi(Momentum: 一阶矩)s_i^{(\tau)} = \beta_1 s_i^{(\tau-1)} + (1-\beta_1)\frac{\partial E}{\partial w_i} \quad \text{(Momentum: 一阶矩)}si(τ)=β1si(τ−1)+(1−β1)∂wi∂E(Momentum: 一阶矩)
ri(τ)=β2ri(τ−1)+(1−β2)(∂E∂wi)2(RMSProp: 二阶矩)r_i^{(\tau)} = \beta_2 r_i^{(\tau-1)} + (1-\beta_2)\left(\frac{\partial E}{\partial w_i}\right)^2 \quad \text{(RMSProp: 二阶矩)}ri(τ)=β2ri(τ−1)+(1−β2)(∂wi∂E)2(RMSProp: 二阶矩)
偏差校正 (解决初始步过小问题):
s^i=si1−β1τ,r^i=ri1−β2τ\hat{s}_i = \frac{s_i}{1-\beta_1^\tau}, \quad \hat{r}_i = \frac{r_i}{1-\beta_2^\tau}s^i=1−β1τsi,r^i=1−β2τri
更新 :
wi=wi−ηs^ir^i+ϵw_i = w_i - \eta \frac{\hat{s}_i}{\sqrt{\hat{r}_i} + \epsilon}wi=wi−ηr^i +ϵs^i
典型超参数 :β1=0.9,β2=0.99,ϵ=10−8\beta_1=0.9, \beta_2=0.99, \epsilon=10^{-8}β1=0.9,β2=0.99,ϵ=10−8
Adam是最广泛使用的梯度下降变体!
12.4 Batch GD → SGD → Mini-batch ⭐⭐
Batch GD的代价
- 每步计算N个数据点的梯度→**O(ND)\mathcal{O}(ND)O(ND)**
- 大数据集→每步都极昂贵
SGD(随机梯度下降)
- 每步随机选1个 数据点→O(D)\mathcal{O}(D)O(D)
- 梯度有噪声→但便宜+快
- 噪声可能帮助逃离局部最小值!
Mini-batch SGD
- 每步随机选B个 数据点→O(BD)\mathcal{O}(BD)O(BD)
- 在噪声和精度之间取得平衡
三种方法对比
| 方法 | 每步梯度 | 代价 | 特点 |
|---|---|---|---|
| Batch GD | 全部N点 | O(ND)\mathcal{O}(ND)O(ND) | 精确但昂贵 |
| SGD | 1个点 | O(D)\mathcal{O}(D)O(D) | 噪声大但便宜+快 |
| Mini-batch SGD | B个点 | O(BD)\mathcal{O}(BD)O(BD) | 最优折中 |
训练误差=测试误差的经验估计
1N∑nL(tn,fw(xn))≈Ep(t,x)L(t,fw(x))\frac{1}{N}\sum_n L(t_n, f_w(x_n)) \approx \mathbb{E}_{p(t,x)}L(t, f_w(x))N1n∑L(tn,fw(xn))≈Ep(t,x)L(t,fw(x))
- 大N→训练误差≈期望测试误差(大数定律)
12.5 Epoch与Shuffling
Epoch
- 1 Epoch = 完整遍历全部N个数据点一次
Shuffling
- 每个Epoch开始前随机打乱数据顺序
- Mini-batch按序取B个→自然随机
每Epoch步数
- Batch size B → 每Epoch ⌈N/B⌉\lceil N/B \rceil⌈N/B⌉ 步
选择Batch Size
| 大B | 小B |
|---|---|
| 梯度估计更准 | 计算便宜→更多步 |
| GPU并行更好 | 随机性帮助逃离局部最优 |
| →先增大B填满GPU | →η\etaη可随B成比例增大 |
笔记中的图片索引
| 序号 | 图片内容描述 | 来源位置 |
|---|---|---|
| 图1 | 四种学习率调度策略曲线 | Lecture 12 第2-3页 |
| 图2 | Batch/SGD/Mini-batch梯度估计谱 | Lecture 12 第18-19页 |
| 图3 | Epoch与Shuffling循环 | Lecture 12 第21页 |
笔记整理时间:2026年6月29日