第13讲 · EECS 189:收敛、动量、Adam 与随机梯度下降
UC Berkeley EECS 189/289A《机器学习导论》2026 春季 · 课堂实录重构
| 原始标题 | Convergence + Momentum + Adam + Stochastic Gradient Descent |
| 视频 | https://www.youtube.com/watch?v=1EAoNdjsOZw |
| 课程主页 | https://eecs189.org/sp26/ |
| 官方讲义/笔记(Lecture 13) | Google Drive 文件夹 |
| 图片来源 | 书中幻灯片插图为官方 PDF 高清渲染图 |
对应讲次:第13讲(UC Berkeley EECS 189 机器学习导论)
制作模型:deepseek-flash(coding-agent / pi;据 ~/.pi/agent/settings.json)
说明:课程材料版权归 UC Berkeley 及授课教师所有,本书仅供学习
本讲路线图
(参考时间: 00:00)
本讲回到优化——现代机器学习真正的主力:梯度下降及其变体。
- 批量梯度下降:更新公式、停止条件、损失函数与「优化 vs 学习」;
- 收敛性:Taylor 二次近似、Hessian、学习率与条件数;
- 动量 / AdaGrad / RMSProp / Adam;
- 随机梯度下降(SGD)与小批量(mini-batch)。
📷 标题页
回到原视频 (00:00:52)
一、梯度下降基础
1.1 更新公式
(参考时间: 00:01)
我们不断优化一组模型参数 $w$(如线性回归的权重)。梯度下降:
$$ w^{(t+1)} = w^{(t)} - \eta\,\nabla_w L(w^{(t)}) $$
- $\eta$ 是学习率;$\nabla L$ 与 $w$ 同维;
- 从一个傻气的初始化(全零或随机)开始,反复沿负梯度方向走一小步,直到 $w$ 变化足够小(收敛)。
📷 批量梯度下降算法
回到原视频 (00:02:20)
损失函数:以房价预测为例,特征是面积/卧室数/浴室数,标签是价格;损失是平方误差和。注意模型参数的量纲——「面积每增加一部分,价格涨多少」取决于单位。
📷 收敛条件
回到原视频 (00:03:48)
📷 收敛(假设之下)
回到原视频 (00:05:16)
编者说明:讲师用「爱荷华房价数据集(Kaggle)」为例:在训练集上最小化损失 ≠ 泛化好,还需要留出测试集。优化做得好和泛化好是两回事——在训练集上表现极好、测试集极差就是过拟合。
二、收敛性与二次近似
2.1 Taylor 展开
(参考时间: 00:22)
损失是 $w$ 的函数(不是 $x$ 的函数)。对高维函数,Taylor 一阶近似是一张平面:
$$ f(x) \approx f(x_0) + \nabla f(x_0)^\top (x - x_0) $$
它是局部近似——离 $x_0$ 太远就失效。因此每一步都要限制步长(用 $\tfrac{1}{2\eta}\lVert x-x^{(t)}\rVert^2$ 保证不会走太远),再最小化这个近似。
📷 二次近似
回到原视频 (00:06:44)
📷 误差曲面的 Taylor 展开(一)
回到原视频 (00:08:12)
📷 Hessian(二阶导)
回到原视频 (00:09:40)
📷 Hessian 练习
回到原视频 (00:11:08)
📷 误差曲面的 Taylor 展开(二)
回到原视频 (00:12:36)
📷 推导(一)
回到原视频 (00:14:04)
📷 推导(二)
回到原视频 (00:15:32)
📷 驻点处的 Taylor 展开(一)
回到原视频 (00:17:00)
📷 驻点处的 Taylor 展开(二)
回到原视频 (00:18:28)
📷 驻点与 Hessian
回到原视频 (00:19:56)
📷 Hessian 的特征向量
回到原视频 (00:21:24)
📷 Taylor 展开与 Hessian
回到原视频 (00:22:52)
对二次函数,一阶导是梯度向量、二阶导是 Hessian 矩阵;最小化时要求 Hessian 半正定(对应标量情形「二阶导为正」)。
📷 小结:二次近似误差
回到原视频 (00:24:20)
📷 二次近似上的梯度下降(一)
回到原视频 (00:25:48)
📷 二次近似上的梯度下降(二)
回到原视频 (00:27:16)
2.2 学习率、曲率与条件数
(参考时间: 00:28)
以一个标量二次函数 $f(x)=3x^2+4x-2$ 为例(直接求导可得最优解 $x=-2/3$),用梯度下降迭代可写成 $x^{(t+1)}=(1-6\eta)x^{(t)}-4\eta$,展开成等比数列。收敛条件:
$$ |1-6\eta| < 1 \;\Longrightarrow\; 0 < \eta < \tfrac13 $$
- $\eta$ 太大 ⇒ 越过最小值、震荡发散;
- $\eta$ 太小 ⇒ 收敛极慢;
- 甚至可能因对称点无限循环。
- 这里的「6」来自曲率——一般地,学习率必须根据损失的曲率来选。
📷 学习率对收敛的影响
回到原视频 (00:28:44)
📷 条件数与损失曲面
回到原视频 (00:30:12)
编者说明:对凸函数,梯度下降保证收敛到全局最优;但一般(非凸)函数可能陷入局部极小。这正是神经网络曾长期不被信任的原因(「梯度下降会卡在局部极小」)。而实践中深度学习的损失曲面出人意料地「友好」,是过去十年的一大谜团。
三、动量与自适应学习率
(参考时间: 00:31)
梯度下降的问题:在病态条件数(某个方向很陡、另一个方向很平)下会震荡、收敛慢。
- 动量(Momentum):累积历史梯度形成「速度」,在平坦方向加速、在震荡方向抑制来回摆动;
- 学习率调度(schedules):随训练进程调整 $\eta$;
- AdaGrad / RMSProp:按参数的历史梯度平方自适应缩放每个方向的学习率;
- Adam = RMSProp + Momentum:结合两者,是最常用的优化器之一。
📷 梯度下降的问题
回到原视频 (00:31:40)
📷 震荡式收敛
回到原视频 (00:33:08)
📷 动量
回到原视频 (00:34:36)
📷 动量如何帮助平坦方向
回到原视频 (00:36:04)
📷 动量如何抑制震荡
回到原视频 (00:37:32)
📷 动量(小结)
回到原视频 (00:39:00)
📷 学习率调度(一)
回到原视频 (00:40:28)
📷 学习率调度(二)
回到原视频 (00:41:56)
📷 自适应学习率:AdaGrad
回到原视频 (00:43:24)
📷 自适应学习率:RMSProp
回到原视频 (00:44:52)
📷 Adam = RMSProp + Momentum
回到原视频 (00:46:20)
📷 Adam
回到原视频 (00:47:48)
四、随机梯度下降(SGD)与小批量
(参考时间: 00:49)
批量梯度下降每步要用全部 $N$ 个样本算梯度,代价是 $\mathcal{O}(N\cdot D)$——当 $N$ 是数万亿(如训练 GPT 的互联网语料)、参数数十亿时,根本放不进 GPU 内存。
随机梯度下降(SGD):每次随机取一个样本(或一小批)计算随机梯度(对全量梯度的随机近似),更新后再取下一个:
$$ w^{(t+1)} = w^{(t)} - \eta\,\nabla_w L_i(w^{(t)}) $$
小批量 SGD(mini-batch):一次取一批(batch)样本,批次大小受 GPU 显存限制。跑完整个数据集一遍叫一个 epoch。
- 批次越大 ⇒ 梯度越可靠、迭代次数越少,但显存/成本越高;
- 批次越小 ⇒ 梯度噪声大、需要更多迭代;
- 训练误差能估计测试误差(同分布假设下)。
📷 回顾:批量梯度下降
回到原视频 (00:49:16)
📷 随机梯度下降
回到原视频 (00:50:44)
📷 批量梯度下降的代价
回到原视频 (00:52:12)
📷 单次梯度更新的代价
回到原视频 (00:53:40)
📷 批量梯度下降的代价(续)
回到原视频 (00:55:08)
📷 训练误差估计测试误差
回到原视频 (00:56:36)
📷 梯度的近似
回到原视频 (00:58:04)
📷 随机梯度下降(续)
回到原视频 (00:59:32)
📷 SGD:打乱(shuffling)
回到原视频 (01:01:00)
📷 SGD(小结)
回到原视频 (01:02:28)
📷 (过渡)
回到原视频 (01:03:56)
📷 随机梯度的谱系
回到原视频 (01:05:24)
📷 小批量随机梯度下降
回到原视频 (01:06:52)
📷 小批量 SGD 的打乱
回到原视频 (01:08:20)
📷 给定 N 个数据点
回到原视频 (01:09:48)
📷 如何选择批次大小
回到原视频 (01:11:16)
📷 小批量梯度下降
回到原视频 (01:12:44)
编者说明:讲师强调——几乎所有前沿实验室训练大模型时,都会花大量时间调试学习率(深度学习最重要的超参数之一),并通过实验调整;不能只凭理论设置。数据大于内存时,还有分布式、磁盘 I/O 等一系列工程技巧。
总结(Takeaways)
- 梯度下降:$w \leftarrow w - \eta\nabla L$;学习率 $\eta$ 必须配合损失的曲率。
- 收敛性:对凸函数有保证(可收敛到全局最优);一般函数可能卡在局部极小。二次近似(Taylor + Hessian)是分析收敛的工具;收敛条件形如 $|1-\eta\lambda|<1$。
- 病态条件数导致震荡;动量、学习率调度、AdaGrad/RMSProp/Adam 用于加速与稳定。
- SGD / mini-batch:用随机梯度近似全量梯度,把每步代价从 $\mathcal{O}(N)$ 降到一小批,解决了大数据/大模型的内存瓶颈;epoch、shuffling、batch size 是核心工程概念。
- 优化 ≠ 泛化:训练集上的最优不等于测试集上的好模型。
附:参考与延伸阅读
| 主题 | 链接 |
|---|---|
| 本讲视频 | https://www.youtube.com/watch?v=1EAoNdjsOZw |
| 课程主页 | https://eecs189.org/sp26/ |
| 官方讲义/笔记(Lecture 13) | Google Drive 文件夹 |
| 教材 Machine Learning: A First Course for Engineers and Scientists | 优化、梯度下降、SGD、Adam 相关章节 · https://doi.org/10.1017/9781108919371 |
版权说明:本讲视频、幻灯片与课程材料版权归 UC Berkeley EECS 189/289A 课程团队所有。本书为课堂内容的学习性中文重构,仅供学习交流。