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

本文介绍了动量梯度下降法(Momentum)、RMSprop和Adam等深度学习优化算法的基本原理及应用技巧,探讨了如何通过这些算法提高模型训练效率,并介绍了学习率衰减的方法。

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

觉得有用的话,欢迎一起讨论相互学习~

我的微博我的github我的B站

吴恩达老师课程原地址

2.6 动量梯度下降法(Momentum)

  • 另一种成本函数优化算法,优化速度一般快于标准的梯度下降算法.

  • 基本思想:计算梯度的指数加权平均数并利用该梯度更新你的权重

  • 假设图中是你的成本函数,函数形象如图所示.其中红点所示就是你的最低点.使用常规的梯度下降方法会有摆动,这种波动减缓了你训练模型的速度,不利于使用较大的学习率,如果学习率使用过大则可能会偏离函数的范围.为了避免摆动过大,你需要选择较小的学习率.

  • 而是用Momentum梯度下降法,我们可以在纵向减小摆动的幅度在横向上加快训练的步长.

基本公式

V d w = β V d w + ( 1 − β ) d w Vd_{w}=\beta Vd_{w}+(1-\beta)d_{w} Vdw=βVdw+(1β)dw
V d b = β V d b + ( 1 − β ) d b Vd_{b}=\beta Vd_{b}+(1-\beta)d_{b} Vdb=βVdb+(1β)db

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

2.7 RMSprop(均方根)

  • RMSprop (root mean square prop),也可以加速梯度下降.

  • 对于梯度下降,横轴方向正在前进,但是纵轴会有大幅度的波动.我们现将横轴代表参数W,纵轴代表参数b.横轴也可以代表 W [ 1 ] , W [ 2 ] , W [ 3 ] . . . W [ n ] W_{[1]},W_{[2]},W_{[3]}...W_{[n]} W[1],W[2],W[3]...W[n],但是为了便于理解,我们将其称之为b和W.

  • 公式
    S d w = β S d w + ( 1 − β ) ( d w ) 2 S_{dw}=\beta S_{dw}+(1-\beta)(dw)^{2} Sdw=βSdw+(1β)(dw)2
    S d b = β S d b + ( 1 − β ) ( d b ) 2 S_{db}=\beta S_{db}+(1-\beta)(db)^{2} Sdb=βSdb+(1β)(db)2
    接 着 R M S p r o p 会 这 样 更 新 参 数 值 接着RMSprop会这样更新参数值 RMSprop
    W = W − α d w S d w W=W-\alpha \frac{dw}{\sqrt{S_{dw}}} W=WαSdw dw
    b = b − α d b S d b b=b-\alpha \frac{db}{\sqrt{S_{db}}} b=bαSdb db

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

  • 注意:这里的W和b标记只是为了方便展示,在实际中这是一个高维的空间,很有可能垂直方向上是W1,W2,W5…的合集而水平方向上是W3,W4,W6…的合集.

  • 实际使用中公式建议为:
    W = W − α d w S d w + ϵ W=W-\alpha \frac{dw}{\sqrt{S_{dw}+\epsilon}} W=WαSdw+ϵ dw
    b = b − α d b S d b + ϵ b=b-\alpha \frac{db}{\sqrt{S_{db}+\epsilon}} b=bαSdb+ϵ db

  • 为了保证实际使用过程中分母不会为0.

  • 主要目的是为了减缓参数下降时的摆动,并允许你使用一个更大的学习率 α \alpha α,从而加快你的算法速率.

2.8 Adam算法

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

算法原理

超参数取值

  • 学习率 α \alpha α 十分重要,也经常需要调试.
  • β 1 \beta_{1} β1 常用的缺省值是0.9
  • β 2 \beta_{2} β2 Adam的发明者推荐使用的数值是0.999
  • ϵ 的 取 值 没 有 那 么 重 要 , A d a m 论 文 的 作 者 建 议 为 ϵ = 1 0 − 8 \epsilon 的取值没有那么重要,Adam论文的作者建议为\epsilon=10^{-8} ϵ,Adamϵ=108
  • 在实际使用中, β 1 , β 2 , ϵ 都 是 使 用 的 推 荐 的 缺 省 值 , 一 般 调 整 的 都 是 学 习 率 α \beta_{1},\beta_{2},\epsilon 都是使用的推荐的缺省值,一般调整的都是学习率\alpha β1,β2,ϵ使,α
  • 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.
  • 学习率 α , 其 中 α 0 表 示 初 始 学 习 率 , d e c a y − r a t e 是 一 个 新 引 入 的 超 参 数 \alpha ,其中 \alpha_{0}表示初始学习率, decay-rate是一个新引入的超参数 α,α0,decayrate :
    α = 1 1 + d e c a y − r a t e ∗ e p o c h − n u m ∗ α 0 \alpha = \frac{1}{1+decay-rate*epoch-num}*\alpha_{0} α=1+decayrateepochnum1α0

其他学习率衰减公式

指数衰减

α = d e c a y − r a t e e p o c h − n u m ∗ α 0 \alpha = decay-rate^{epoch-num}*\alpha_{0} α=decayrateepochnumα0
α = k e p o c h − n u m ∗ α 0 其 中 k 是 超 参 数 \alpha = \frac{k}{\sqrt{epoch-num}}*\alpha_{0}其中k是超参数 α=epochnum kα0k
α = k t ∗ α 0 其 中 k 是 超 参 数 , t 表 示 m i n i − b a t c h 的 标 记 数 字 \alpha = \frac{k}{\sqrt{t}}*\alpha_{0}其中k是超参数,t表示mini-batch的标记数字 α=t kα0k,tminibatch

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值