前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[DeeplearningAI 笔记]第二章 2.6-2.9Momentum/RMSprop/Adam 与学习率衰减

[DeeplearningAI 笔记]第二章 2.6-2.9Momentum/RMSprop/Adam 与学习率衰减

作者头像
演化计算与人工智能
发布2020-08-14 11:27:44
5440
发布2020-08-14 11:27:44
举报

2.6 动量梯度下降法(Momentum)

  • 另一种成本函数优化算法,优化速度一般快于标准的梯度下降算法.
  • 基本思想:计算梯度的指数加权平均数并利用该梯度更新你的权重
  • 假设图中是你的成本函数,函数形象如图所示.其中红点所示就是你的最低点.使用常规的梯度下降方法会有摆动,这种波动减缓了你训练模型的速度,不利于使用较大的学习率,如果学习率使用过大则可能会偏离函数的范围.为了避免摆动过大,你需要选择较小的学习率.
  • 而是用 Momentum 梯度下降法,我们可以在纵向减小摆动的幅度在横向上加快训练的步长.

基本公式

Vd_{w}=\beta Vd_{w}+(1-\beta)d_{w}
Vd_{b}=\beta Vd_{b}+(1-\beta)d_{b}
  • 在纵轴方向上,你希望放慢一点,平均过程中,正负数相互抵消,平均值接近于零.
  • 横轴方向所有的微分都指向于横轴方向,所以横轴的平均值仍较大.
  • 横轴方向运动更快,纵轴方向摆动幅度变小.
  • 两个超参数
\alpha控制学习率,\beta控制指数加权平均数,\beta最常用的值是0.9
  • 此处的指数加权平均算法不一定要使用带修正偏差,因为经过 10 次迭代的平均值已经超过了算法的初始阶段,所以不会受算法初始阶段的影响.

2.7 RMSprop(均方根)

  • RMSprop (root mean square prop),也可以加速梯度下降.
  • 对于梯度下降,横轴方向正在前进,但是纵轴会有大幅度的波动.我们现将横轴代表参数 W,纵轴代表参数 b.横轴也可以代表
W_{[1]},W_{[2]},W_{[3]}...W_{[n]}

,但是为了便于理解,我们将其称之为 b 和 W.

  • 公式
S_{dw}=\beta S_{dw}+(1-\beta)(dw)^{2}
S_{db}=\beta S_{db}+(1-\beta)(db)^{2}
接着RMSprop会这样更新参数值
W=W-\alpha \frac{dw}{\sqrt{S_{dw}}}
b=b-\alpha \frac{db}{\sqrt{S_{db}}}
  • w 的在横轴上变化变化率很小,所以 dw 的值十分小,所以
S_{dw}

也小,而 b 在纵轴上波动很大,所以斜率在 b 方向上特别大.所以这些微分中,db 较大,dw 较小.这样 W 除数是一个较小的数,总体来说,W 的变化很大.而 b 的除数是一个较大的数,这样 b 的更新就会被减缓.纵向的变化相对平缓.

  • 注意:这里的 W 和 b 标记只是为了方便展示,在实际中这是一个高维的空间,很有可能垂直方向上是 W1,W2,W5..的合集而水平方向上是 W3,W4,W6...的合集.
  • 实际使用中公式建议为:
W=W-\alpha \frac{dw}{\sqrt{S_{dw}+\epsilon}}
b=b-\alpha \frac{db}{\sqrt{S_{db}+\epsilon}}
  • 为了保证实际使用过程中分母不会为 0.
  • 主要目的是为了减缓参数下降时的摆动,并允许你使用一个更大的学习率
\alpha

,从而加快你的算法速率.

2.8 Adam 算法

  • Adam 算法基本原理是将 Momentum 和 RMSprop 结合在一起.

算法原理

超参数取值

  • 学习率
\alpha

十分重要,也经常需要调试.

\beta_{1}

常用的缺省值是 0.9

\beta_{2}

Adam 的发明者推荐使用的数值是 0.999

\epsilon 的取值没有那么重要,Adam论文的作者建议为\epsilon=10^{-8}
  • 在实际使用中,
\beta_{1},\beta_{2},\epsilon 都是使用的推荐的缺省值,一般调整的都是学习率\alpha
  • Adam: Adaptive Moment Estimation(自适应估计时刻)

2.9 学习率衰减(learning rate decay)

  • 加快学习算法的一个办法就是随时间慢慢减少学习率,我们将之称为学习率衰减(learning rate decay)

概括

  • 假设你要使用 mini-batch 梯度下降法,mini-batch 数量不大,大概 64 或者 128 个样本,但是在迭代过程中会有噪音,下降朝向这里的最小值,但是不会精确的收敛,所以你的算法最后在附近摆动.,并不会真正的收敛.因为你使用的是固定的
\alpha

,在不同的 mini-batch 中有杂音,致使其不能精确的收敛.

  • 但如果能慢慢减少学习率
\alpha

的话,在初期的时候,你的学习率还比较大,能够学习的很快,但是随着

\alpha

变小,你的步伐也会变慢变小.所以最后的曲线在最小值附近的一小块区域里摆动.所以慢慢减少

\alpha

的本质在于在学习初期,你能承受较大的步伐, 但当开始收敛的时候,小一些的学习率能让你的步伐小一些.

细节

  • 一个 epoch 表示要遍历一次数据,即就算有多个 mini-batch,但是一定要遍历所有数据一次,才叫做一个 epoch.
  • 学习率
\alpha ,其中 \alpha_{0}表示初始学习率, decay-rate是一个新引入的超参数

:

\alpha = \frac{1}{1+decay-rate*epoch-num}*\alpha_{0}

其他学习率衰减公式

指数衰减

\alpha = decay-rate^{epoch-num}*\alpha_{0}
\alpha = \frac{k}{\sqrt{epoch-num}}*\alpha_{0}其中k是超参数
\alpha = \frac{k}{\sqrt{t}}*\alpha_{0}其中k是超参数,t表示mini-batch的标记数字

参考资料

[1]

吴恩达老师课程原地址: https://mooc.study.163.com/smartSpec/detail/1001319001.htm

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-04-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DrawSky 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 2.6 动量梯度下降法(Momentum)
    • 基本公式
    • 2.7 RMSprop(均方根)
    • 2.8 Adam 算法
      • 算法原理
        • 超参数取值
        • 2.9 学习率衰减(learning rate decay)
          • 概括
            • 细节
              • 其他学习率衰减公式
                • 指数衰减
                • 参考资料
            相关产品与服务
            批量计算
            批量计算(BatchCompute,Batch)是为有大数据计算业务的企业、科研单位等提供高性价比且易用的计算服务。批量计算 Batch 可以根据用户提供的批处理规模,智能地管理作业和调动其所需的最佳资源。有了 Batch 的帮助,您可以将精力集中在如何分析和处理数据结果上。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档