视频封面

视频元信息

  • 课程主题:深度学习优化算法 —— 适应性矩估计(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