
视频元信息
- 课程主题:深度学习优化算法 —— 适应性矩估计(Adam)算法
- 所属章节:Professionalization of Deep Learning / 改善深层神经网络(第二课)
- 授课人:吴恩达(Andrew Ng)
- 时长参考:约 7 分钟(有效内容自 [01:28] 起)
视频前约 1 分 28 秒为自动语音识别产生的乱码(与课程内容无关),实际课程内容从 [01:28] 开始。以下笔记仅整理有效教学内容。
内容摘要(TL;DR)
Adam(适应性矩估计)算法将动量梯度下降与RMSprop两种优化思想结合:用 beta1 计算梯度的一阶矩(均值),用 beta2 计算梯度的二阶矩(平方的加权平均),并加入偏差修正。实践中的默认超参数为 beta1=0.9、beta2=0.999、epsilon=1e-8,通常只需调学习率 alpha。
一、Adam 算法的核心思想 [01:28]
Adam 的本质是把两种已有优化算法"叠加"起来:
- 动量梯度下降(Momentum):对梯度做指数加权平均,抑制震荡、加速收敛。
- RMSprop:对梯度的平方做指数加权平均,自适应地缩放每个参数的学习步长。
Adam 同时使用这两套机制,因此对各种不同架构的神经网络都表现稳定有效,是业界最常用的优化算法之一。
通常的实现流程是:先用 mini-batch 梯度下降计算梯度,再做动量式的指数加权平均,然后做 RMSprop 式的更新。
理解:可以把 Adam 看作"两条腿走路"——动量负责方向平滑,RMSprop 负责步长自适应,二者互补。
二、算法步骤分解 [01:38]
1. 动量的更新(Momentum 部分)[01:38]
- 引入超参数 beta1(用于区分 RMSprop 部分的 beta2)。
- 计算 VdW(dW 的指数加权平均):与标准动量实现完全一致。
- 计算 VdB(dB 的指数加权平均)。
公式(概念形式):
- VdW = beta1 × VdW + (1 - beta1) × dW
- VdB = beta1 × VdB + (1 - beta1) × dB
易错点:这里的 beta1 就是动量算法里原本的 beta,只是改名以区别于 RMSprop 的 beta2,不要混淆两者作用。
2. RMSprop 的更新(RMSprop 部分)[02:14]
- 引入超参数 beta2(独立于 beta1)。
- 计算 SdW(dW 平方的指数加权平均)。
- 计算 SdB(dB 平方的指数加权平均)。
公式(概念形式):
- SdW = beta2 × SdW + (1 - beta2) × dW²
- SdB = beta2 × SdB + (1 - beta2) × dB²
易错点:dW² 指的是逐元素平方(element-wise squaring),不是矩阵乘法,也不是 dW 的转置相乘。
理解:beta1 控制一阶矩(均值)的平滑程度,beta2 控制二阶矩(方差/能量)的平滑程度,二者作用维度不同。
3. 偏差修正(Bias Correction)[02:54]
Adam 的典型实现一定要做偏差修正,否则初期估计会偏小。
- VdW_corrected = VdW / (1 - beta1^t)
- VdB_corrected = VdB / (1 - beta1^t)
- SdW_corrected = SdW / (1 - beta2^t)
- SdB_corrected = SdB / (1 - beta2^t)
其中 t 表示已完成的迭代次数。
考点:偏差修正是 Adam 与"朴素动量 + 朴素 RMSprop"的关键区别。因为指数加权平均在初期(t 很小时)会严重低估真实值,除以 (1 - beta^t) 可将其校正到无偏估计。
推导:以 VdW 为例,初始 VdW=0,第一次迭代后 VdW=(1-beta1)dW,仅为真实梯度的 (1-beta1) 倍;除以 (1-beta1^1)=(1-beta1) 后恰好还原为 dW。
4. 参数更新(最终步)[03:50]
- W = W - alpha × [VdW_corrected / (√SdW_corrected + epsilon)]
- b = b - alpha × [VdB_corrected / (√SdB_corrected + epsilon)]
对比:
- 纯动量:用 VdW(或修正后的 VdW)。
- Adam:在动量的基础上,再除以 √(S_corrected) + epsilon(即加入 RMSprop 部分)。
易错点:epsilon 加在分母的根号外(√S + epsilon),而不是根号内,目的是防止分母为零导致除零错误。
三、超参数设置与实践建议 [04:46]
Adam 涉及的超参数及推荐值:
| 超参数 | 含义 | 推荐默认值 | 是否需要调优 |
|---|---|---|---|
| alpha | 学习率 | 需尝试一组值 | 是(最重要) |
| beta1 | 一阶矩(动量)超参数 | 0.9 | 很少调 |
| beta2 | 二阶矩(RMSprop)超参数 | 0.999 | 很少调 |
| epsilon | 数值稳定项 | 1e-8 | 基本不用调 |
要点说明:
- 学习率 alpha 仍然是最重要的超参数,通常需要尝试一系列取值找到最佳值。
- beta1=0.9 是 dW 移动加权平均的默认选择,对应动量项。
- beta2=0.999 由 Adam 论文作者推荐,用于计算 dW² 和 dB² 的移动加权平均。
- epsilon 对性能影响很小,作者推荐 1e-8,实践中几乎无人专门调它。
- 实践中通常直接用 beta1、beta2、epsilon 的默认值,只调 alpha;beta1、beta2 虽可调,但从业者很少这么做。
实践提醒:Adam 的"开箱即用"特性是其流行的重要原因——默认超参数在大多数任务上都能工作良好,新手不必纠结 beta1/beta2/epsilon。
思考:虽然 Adam 默认值好用,但在某些对精度要求极高的任务(如部分图像分类竞赛)中,精调后的 SGD + Momentum 有时仍能取得略优的最终性能,这是 Adam 的一个已知局限。
四、名称由来:什么是"适应性矩估计" [06:02]
Adam = Adaptive Moment Estimation(适应性矩估计)
- beta1 计算的是梯度导数的均值 → 称为一阶矩(first moment)。
- beta2 计算的是梯度平方的加权平均 → 称为二阶矩(second moment)。
- 两者结合,故得名"适应性矩估计"。
吴恩达补充趣闻:他的一位长期朋友兼合作者名叫 Adam Coates,但该算法与他无关,只是他有时也会使用这个算法。
理解:"矩"是统计学概念,一阶矩对应均值(方向),二阶矩对应方差(波动幅度),Adam 正是用这两个统计量来动态调整每个参数的更新。
五、总结与衔接 [06:48]
- Adam 结合了动量梯度下降与RMSprop的效果,被证明对非常广泛的神经网络架构都有效。
- 使用 Adam 通常能更快地训练网络。
- 本视频之后,课程将继续讨论超参数调优,并进一步建立对神经网络优化问题的直觉。
- 下一节视频主题:学习率衰减(Learning Rate Decay)。
关键标签 / 关键词
深度学习 #吴恩达 #Adam优化算法 #适应性矩估计 #AdaptiveMomentEstimation #动量梯度下降 #Momentum #RMSprop #偏差修正 #BiasCorrection #超参数调优 #学习率 #beta1 #beta2 #epsilon #一阶矩 #二阶矩 #神经网络优化 #DeepLearning #优化算法
生成时间:2026-10-10 22:12:50 生成平台:VideoNote www.xygy.top