视频封面

视频元信息

  • 课程:吴恩达深度学习专项课程 · 改善深层神经网络:超参数调试、正则化以及优化(第二课)
  • 章节:2.7 RMSprop
  • 时长:约 7 分 40 秒
  • 性质:理论讲解(无代码演示,代码在后续实战环节)

内容摘要(TL;DR)

本节介绍 RMSprop(Root Mean Square Prop)优化算法。它通过对梯度平方做指数加权平均,再让参数更新除以该平均值的平方根,从而在震荡剧烈的方向上自动减小步长、在平缓方向上保持较大步长。核心公式为 S_dW = β·S_dW + (1−β)·dW²,W ← W − α·dW/√(S_dW+ε)。它能让训练使用更大的学习率而不发散,是后续 Adam 优化的组成部件之一。


一、引入:从动量法到 RMSprop [00:00]

上一节学习了动量(Momentum)梯度下降可以加速优化。本节介绍另一种同样能加速梯度下降的算法——RMSprop,全称 Root Mean Square Prop(均方根传播)。

理解:动量法解决的是"方向"问题(利用历史梯度平滑更新方向),而 RMSprop 解决的是"尺度"问题(为每个参数自适应调整学习步长)。两者思路不同,但目标一致——加速收敛。


二、问题背景:垂直方向震荡 [00:11]

回顾之前的例子:如果直接实现梯度下降,在垂直方向会出现巨大的震荡(oscillations),即便在水平方向上已经在稳步前进。

为了便于直觉理解,吴恩达做如下简化设定:

  • 垂直轴:参数 B(实际上可能是 W₁、W₂ 或任意一组参数)
  • 水平轴:参数 W

核心诉求:我们希望减缓 B 方向(垂直方向)的学习,同时加速或至少不减缓 W 方向(水平方向)的学习。

理解:垂直方向震荡是因为该方向梯度绝对值很大,参数更新幅度过大导致来回跳跃;水平方向梯度小、前进慢。RMSprop 要做的就是"抑制大的、扶持小的"。


三、RMSprop 的算法流程 [00:59]

在第 t 次迭代中,先照常计算当前 mini-batch 上的导数 dW 和 dB。

3.1 计算梯度平方的指数加权平均

引入新记号 S_dW 和 S_dB(区别于动量法中的 V_dW):

  • S_dW = β · S_dW + (1 − β) · dW²
  • S_dB = β · S_dB + (1 − β) · dB²

易错点:平方是逐元素(element-wise)运算。dW² 不是矩阵乘法,而是对 dW 中每个元素分别平方。吴恩达有时写作 dW**2 表示这个逐元素平方。

理解:S_dW 本质上是在"记忆"过去一段时间内 dW 平方的平均水平。梯度大的方向,S 值大;梯度小的方向,S 值小。

3.2 参数更新

  • W ← W − α · dW / √(S_dW)
  • B ← B − α · dB / √(S_dB)

对比之前:原来分子是 dW、dB,现在多除了一个 √S。这就是 RMSprop 的关键改动。


四、直觉理解:为什么能抑制震荡 [01:41]

4.1 梯度在垂直方向远大于水平方向

在之前的例子中,垂直方向(B 方向)的斜率非常陡,因此:

  • dB 很大 → dB² 很大 → S_dB 相对较大
  • dW 较小 → dW² 较小 → S_dW 相对较小

4.2 除法的效果

  • 垂直方向:更新量除以较大的数 √S_dB → 步长被压缩,震荡被抑制
  • 水平方向:更新量除以较小的数 √S_dW → 步长保持较大,继续快速前进

最终效果:更新轨迹变得更"平直",垂直方向的震荡被抹平,而水平方向仍能持续推进。

额外收益:由于垂直方向不再发散,你可以使用更大的学习率 α 来进一步加速学习,而不必担心在垂直方向炸开。

思考:这本质上是一种"逐参数自适应学习率"。每个参数实际的有效学习率是 α/√S,梯度持续大的参数被自动降速,梯度小的参数被相对提速。


五、高维空间中的推广 [04:41]

前面用 B、W 两个轴只是为了画图直观。实际训练中参数是高维的:

  • 需要抑制震荡的"垂直维度"可能是 W₁、W₂、W₁₇ 等一组参数
  • 前进的"水平维度"可能是 W₃、W₄ 等另一组参数

真正的机制:dW 和 dB 都是高维向量,S 也是逐元素计算的向量。凡是出现震荡的维度,其梯度平方平均较大,因此该维度的更新被自动削弱。

关键结论:RMSprop 不需要人工区分哪些是"垂直"哪些是"水平",它通过逐元素的 S 值自动识别并压制震荡方向。


六、命名由来 [05:33]

RMSprop 中的 RMS = Root Mean Square(均方根):

  • 先对导数平方(square)
  • 计算其平均(mean,即指数加权平均)
  • 最后在分母上开根号(root)

所以叫 "root mean square prop"。


七、实现细节与注意事项 [05:44]

7.1 超参数命名:β₂

下一节将把 RMSprop 与动量法结合(即 Adam)。为避免混淆,动量法的 β 与 RMSprop 的 β 需要区分:

  • 动量法使用 β₁
  • RMSprop 使用 β₂

7.2 数值稳定性:加入 ε

易错点:分母可能为零。如果 S_dW 非常接近 0,√S_dW 也会接近 0,dW/√S_dW 会爆炸(blow up)。

解决方案:在分母加一个极小常数 ε:

  • W ← W − α · dW / (√S_dW + ε)
  • B ← B − B − α · dB / (√S_dB + ε)

推荐默认值:ε = 10⁻⁸。吴恩达强调 ε 的具体取值不太重要,主要作用是保证数值稳定性,避免除以极小值。

理解:ε 既是工程上的"保险丝",也是防止浮点舍入误差导致异常的手段。


八、总结与延伸 [06:42]

8.1 本节要点

  • RMSprop 与动量法类似,都能抑制梯度下降中的震荡(对 batch 梯度下降同样有效)
  • 允许使用更大的学习率 α,从而显著加速训练
  • 是加速学习算法的又一有力工具

8.2 趣味背景:诞生于 Coursera 课堂

RMSprop 并非出自正式学术论文,而是 Geoffrey Hinton 多年前在 Coursera 课程中提出的。Coursera 本非发布前沿学术研究的平台,但 RMSprop 正是通过这门课广为人知并迅速流行。

8.3 下一节预告

将 RMSprop 与动量法结合,可以得到更强的优化算法——Adam。


【拓展】深入理解 RMSprop

拓展 1:与 AdaGrad 的关系

RMSprop 可以看作 AdaGrad 的改进版。AdaGrad 累积所有历史梯度平方(无衰减),导致学习率单调递减、后期几乎停滞;RMSprop 引入指数加权平均(β 衰减),只关注近期梯度,避免学习率过早衰减到 0。

拓展 2:典型超参数取值

实践中常用 β₂ = 0.999(对应约 1000 步的窗口),ε = 10⁻⁸,学习率 α 常取 0.001 起步。注意 β₂ 越大,S 越平滑但响应越慢。

拓展 3:与动量法的对比

维度 动量法(Momentum) RMSprop
处理对象 梯度的一阶矩(方向) 梯度平方(尺度)
更新公式 V = βV+(1−β)dW;W←W−αV S = βS+(1−β)dW²;W←W−α·dW/√S
主要作用 平滑方向、抑制震荡 自适应调整各维度步长
超参数 β₁ β₂、ε

两者结合即 Adam,同时利用一阶矩和二阶矩。

拓展 4:容易踩的坑

坑点 1:忘记加 ε,训练初期 S 接近 0 时出现 NaN 或 loss 爆炸。 坑点 2:把 dW² 误写成矩阵乘法 dW·dW,维度对不上或结果错误,必须是逐元素平方。 坑点 3:β₂ 设得过大(如 0.9999),S 更新过慢,自适应能力下降。 坑点 4:RMSprop 通常配合 mini-batch 使用,在 batch 梯度下降上虽然有效,但实践中较少单独使用。


关键标签 / 关键词

RMSprop #优化算法 #梯度下降 #指数加权平均 #自适应学习率 #均方根 #吴恩达深度学习 #改善深层神经网络 #Adam #动量法 #数值稳定性 #GeoffreyHinton #超参数β2 #epsilon #震荡抑制


生成时间:2026-10-10 22:10:56 生成平台:VideoNote www.xygy.top