←上一篇 ↓↑ 下一篇→
2.6 动量梯度下降法 回到目录 2.8 Adam 优化算法

RMSprop (Root Mean Square Rrop)

你们知道了动量(Momentum)可以加快梯度下降,还有一个叫做RMSprop的算法,全称是root mean square prop算法,它也可以加速梯度下降,我们来看看它是如何运作的。

回忆一下我们之前的例子,如果你执行梯度下降,虽然横轴方向正在推进,但纵轴方向会有大幅度摆动,为了分析这个例子,假设纵轴代表参数 bbb ,横轴代表参数 WWW,可能有 W1W_1W1​ , W2W_2W2​ 或者其它重要的参数,为了便于理解,被称为 bbb 和 WWW 。

所以,你想减缓 bbb 方向的学习,即纵轴方向,同时加快,至少不是减缓横轴方向的学习,RMSprop算法可以实现这一点。

在第 ttt 次迭代中,该算法会照常计算当下mini-batch的微分 dWdWdW , dbdbdb ,所以我会保留这个指数加权平均数,我们用到新符号 SdWS_{dW}SdW​ ,而不是 vdWv_{dW}vdW​ ,因此 SdW=βSdW+(1−β)dW2S_{dW}=\beta S_{dW}+(1-\beta)dW^2SdW​=βSdW​+(1−β)dW2 ,澄清一下,这个平方的操作是针对这一整个符号的,这样做能够保留微分平方的加权平均数,同样 Sdb=βSdb+(1−β)db2S_{db}=\beta S_{db}+(1-\beta)db^2Sdb​=βSdb​+(1−β)db2 ,再说一次,平方是针对整个符号的操作。

接着RMSprop会这样更新参数值, W:=W−αdWSdWW:=W-\alpha \frac{dW}{\sqrt{S_{dW}}}W:=W−αSdW​​dW​ , b:=b−αdbSdbb:=b-\alpha \frac{db}{\sqrt{S_{db}}}b:=b−αSdb​​db​ ,我们来理解一下其原理。记得在横轴方向或者在例子中的 WWW 方向,我们希望学习速度快,而在垂直方向,也就是例子中的 bbb 方向,我们希望减缓纵轴上的摆动,所以有了 SdWS_{dW}SdW​ 和 SdbS_{db}Sdb​ ,我们希望 SdWS_{dW}SdW​ 会相对较小,所以我们要除以一个较小的数,而希望 SdbS_{db}Sdb​ 又较大,所以这里我们要除以较大的数字,这样就可以减缓纵轴上的变化。你看这些微分,垂直方向的要比水平方向的大得多,所以斜率在 bbb 方向特别大,所以这些微分中, dbdbdb 较大, dWdWdW 较小,因为函数的倾斜程度,在纵轴上,也就是 bbb 方向上要大于在横轴上,也就是 WWW 方向上。 dbdbdb 的平方较大,所以 SdbS_{db}Sdb​ 也会较大,而相比之下, dWdWdW 会小一些,亦或 dWdWdW 平方会小一些,因此 SdWS_{dW}SdW​ 会小一些,结果就是纵轴上的更新要被一个较大的数相除,就能消除摆动,而水平方向的更新则被较小的数相除。

RMSprop的影响就是你的更新最后会变成这样(绿色线),纵轴方向上摆动较小,而横轴方向继续推进。还有个影响就是,你可以用一个更大学习率 α\alphaα ,然后加快学习,而无须在纵轴上垂直方向偏离。

要说明一点,我一直把纵轴和横轴方向分别称为 bbb 和 WWW ,只是为了方便展示而已。实际中,你会处于参数的高维度空间,所以需要消除摆动的垂直维度,你需要消除摆动,实际上是参数 W1W_1W1​, W2W_2W2​ 等的合集,水平维度可能 W3W_3W3​ , W4W_4W4​ 等等,因此把 WWW 和 bbb 分开只是方便说明。实际中 dWdWdW 是一个高维度的参数向量, dbdbdb 也是一个高维度参数向量,但是你的直觉是,在你要消除摆动的维度中,最终你要计算一个更大的和值,这个平方和微分的加权平均值,所以你最后去掉了那些有摆动的方向。所以这就是RMSprop,全称是均方根,因为你将微分进行平方,然后最后使用平方根。

最后再就这个算法说一些细节的东西,然后我们再继续。下一个视频中,我们会将RMSpropMomentum结合起来,我们在Momentum中采用超参数 β\betaβ ,为了避免混淆,我们现在不用 β\betaβ ,而采用超参数 β2\beta_2β2​ 以保证在MomentumRMSprop中采用同一超参数。要确保你的算法不会除以0,如果 SdWS_{dW}SdW​ 的平方根趋近于0怎么办?得到的答案就非常大,为了确保数值稳定,在实际操练的时候,你要在分母上加上一个很小很小的 ϵ\epsilonϵ , ϵ\epsilonϵ 是多少没关系, 10−810^{-8}10−8 是个不错的选择,这只是保证数值能稳定一些,无论什么原因,你都不会除以一个很小很小的数。所以RMSpropMomentum有很相似的一点,可以消除梯度下降中的摆动,包括mini-batch梯度下降,并允许你使用一个更大的学习率 α\alphaα ,从而加快你的算法学习速度。

所以你学会了如何运用RMSprop,这是给学习算法加速的另一方法。关于RMSprop的一个有趣的事是,它首次提出并不是在学术研究论文中,而是在多年前Jeff HintonCoursera的课程上。我想Coursera并不是故意打算成为一个传播新兴的学术研究的平台,但是却达到了意想不到的效果。就是从Coursera课程开始,RMSprop开始被人们广为熟知,并且发展迅猛。

我们讲过了Momentum,我们讲了RMSprop,如果二者结合起来,你会得到一个更好的优化算法,在下个视频中我们再好好讲一讲为什么。

课程PPT



←上一篇 ↓↑ 下一篇→
2.6 动量梯度下降法 回到目录 2.8 Adam 优化算法

2.7 RMSprop-深度学习第二课《改善深层神经网络》-Stanford吴恩达教授相关推荐

  1. 吴恩达deeplearning.ai系列课程笔记+编程作业(6)第二课 改善深层神经网络-第二周:优化算法 (Optimization algorithms)

    第二门课 改善深层神经网络:超参数调试.正则化以及优化(Improving Deep Neural Networks:Hyperparameter tuning, Regularization and ...

  2. 2.19 总结-深度学习-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 2.18 Logistic 损失函数的解释 回到目录 3.1 神经网络概览 文章目录 总结 习题 第 11 题 第 12 题 第 13 题 第 14 题 第 15 题 第 1 ...

  3. 1.8 其他正则化方法-深度学习第二课《改善深层神经网络》-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 1.7 理解 Dropout 回到目录 1.9 归一化输入 其他正则化方法 (Other Regularization Methods) 除了 L2L2L2 正则化和随机失活 ...

  4. 1.1 欢迎-深度学习第一课《神经网络与深度学习》-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 无 回到目录 1.2 什么是神经网络 欢迎 第一个视频主要讲了什么是深度学习,深度学习能做些什么事情.以下是吴恩达老师的原话: 深度学习改变了传统互联网业务,例如如网络搜索和 ...

  5. 深度学习教程(6) | 神经网络优化算法(吴恩达·完整版)

    作者:韩信子@ShowMeAI 教程地址:https://www.showmeai.tech/tutorials/35 本文地址:https://www.showmeai.tech/article-d ...

  6. 3.12 总结-深度学习-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 3.11 随机初始化 回到目录 4.1 深层神经网络 文章目录 总结 习题 第 21 题 第 22 题 第 23 题 第 24 题 第 25 题 第 26 题 第 27 题 ...

  7. 机器学习和深度学习到底怎么学?顶尖专家吴恩达告诉你

    机器学习和深度学习到底怎么学? 在外国版知乎上,有位网友问:新手如何学习机器学习?学习完MOOC的课程后有没有能力阅读研究论文或者真正的做出一点研究成果? 这个困惑很多人的问题吴恩达给出了详细的回答, ...

  8. 3.5 向量化实现的解释-深度学习-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 3.4 多个例子中的向量化 回到目录 3.6 激活函数 向量化实现的解释 (Explanation for Vectorized Implementation) 在上一个视频 ...

  9. 0.0 目录-深度学习第二课《改善神经网络》-Stanford吴恩达教授

    文章目录 第五课 第四课 第三课 第二课 第一课 第五课 <序列模型> 笔记列表 Week 1 循环序列模型 Week 1 传送门 -> 1.1 为什么选择序列模型 1.2 数学符号 ...

  10. 2.10 局部最优的问题-深度学习第二课《改善深层神经网络》-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 2.9 学习率衰减 回到目录 2.11 总结 局部最优的问题 (The Problem of Local Optima) 在深度学习研究早期,人们总是担心优化算法会困在极差的 ...

最新文章

  1. c++以代理的方式来实现接口化编程
  2. Adobe illustrator 粉色背景字体是为什么 - 连载19
  3. ps-色彩饱和度的设计
  4. 详解:Hive的MetaStore和三种配置方式
  5. ckEditor与ckFinder的集成
  6. 将linux文件拷贝到windows,Windows与Linux系统拷贝文件之pscp的使用分享
  7. vscode中文vsix_离线安装vscode vsix插件
  8. GitHub绑定阿里云域名
  9. 2.5.2 文法的二义性
  10. 【笔记】排列组合公式、二项式定理
  11. Flutter 2.8 release 发布,快来看看新特性吧
  12. java基础之Web全套知识点梳理
  13. 计算机nls数据丢失损坏无法启动,电脑开机时,显示NLS数据丢失或损坏怎么处理...
  14. 使用 SendARP 获取 MAC 地址
  15. 跳一跳改分java源码_解密微信小程序漏洞:可下载任意小游戏源代码,“跳一跳”可改分...
  16. linux删除每行首字符,vim技巧:删除行首、行末的空白字符,删除空白行
  17. Xcode能编译运行成功,但是模拟器没有任何反应
  18. Zend Studio 12.5注册码破解
  19. Matplotlib数据可视化基础
  20. centos7 网桥桥接、网卡绑定终极实战

热门文章

  1. npm WARN install Refusing to install vue-router as a dependency of itself
  2. 文字或者图片连续滚动
  3. MSSQL同时操作数据加锁问题
  4. Lisp和前缀表示法入门
  5. 图解基本C语言程序一
  6. VC++对话框学习总结
  7. PE文件数据结构汇总
  8. Python即Python解释器的发展史
  9. MySQL数据库排序选择的作用和该如何选择编码格式
  10. POJ3468--A Simple Problem with Integers--线段树/树状数组 改段求段