深度学习相关概念:动量法与自适应梯度


  在上一篇博客中,我们介绍了梯度下降算法。但是梯度下降算法存在计算量过大或者陷入局部最优的问题。人们如今已经提出动量法和自适应梯度法来解决上述的问题。

1.梯度下降存在的问题

  1. 批量梯度下降(BGD)
    在梯度下降的每一步中,我们都用到了所有的训练样本,我们需要进行求和运算,在梯度下降中,在计算微积随机梯度下降(SGD)

  2. 随机梯度下降法(SGD)
    由于随机梯度下降法一次迭代一个样本,导致迭代方向变化很大,不能很快的收敛到局部最优解
    在这里插入图片描述

  3. 小批量梯度下降(MBGD)
       同SGD一样,每次梯度的方向不确定,可能陷入局部最优
    在这里插入图片描述

2.动量法(momentum)

   普通的梯度下降法当接近最优值时梯度会比较小,由于学习率固定,普通的梯度下降法的收敛速度会变慢,有时甚至陷入局部最优。
   改进目标:改进梯度下降算法存在的问题,即减少震荡,加速通往谷低
   改进思想:利用累加历史梯度信息更新梯度

在这里插入图片描述

   这时如果考虑历史梯度,将会引导参数朝着最优值更快收敛,这就是动量算法的基本思想在这里插入图片描述
   可是为什么加入历史梯度值,就会避免陷入震荡,落入局部最优呢?
   因为累加过程中震荡方向相互抵消,假设第n次的梯度g为-1,第n+1计算的梯度g’为1,那么通过累加后,二者再更新权重时梯度就会变成0,而不是在梯度g为-1的方向进行权重更新后,再在梯度g为1的方向进行权重更新(也就是说避免震荡)。
在这里插入图片描述
   此外动量法还可以避免高维空间中的鞍点(导数为0的点但不是全局最优点)
在这里插入图片描述

3.自适应梯度与RMSProp

   自适应梯度法通过减小震荡方向步长,增大平坦方向步长来减小震荡,加速通往谷底方向。但是如何区分震荡方向与平坦方向?梯度幅度的平方较大的方向是震荡方向;梯度幅度的平方较小的方向是平坦方向。
在这里插入图片描述
   AdaGrad方法和RMSProp方法都是自适应梯度方法

3.1AdaGrad方法

在这里插入图片描述
   AdaGrad会记录过去所有梯度的平方和,更新权重时如下图所示
在这里插入图片描述

   但是学习越深入,r会累计的越来越大,更新的幅度就越小。如果无止境地学习,更新量就会变为0, 完全不再更新。

3.2RMSProp方法

   RMSProp优化算法和AdaGrad算法唯一的不同,就在于累积平方梯度的求法不同。RMSProp算法不是像AdaGrad算法那样暴力直接的累加平方梯度,而是加了一个衰减系数来控制历史信息的获取多少
在这里插入图片描述
   假设ρ取0.9,则在100次之后约等于2.65e-5=0.0000265≈0,也就是说100次前的梯度不在参与计算了。这样就可以控制历史信息的获取多少。

在这里插入图片描述

4.Adam方法(Adaptive Momentum Estimation)

   Adam是RMSProp的动量版,采用了一个修正偏差来解决冷启动问题

在这里插入图片描述

不同最优化方法效果:

在这里插入图片描述

在这里插入图片描述
上图展示了一个马鞍状的最优化地形,其中对于不同维度它的曲率不同(一个维度下降另一个维度上升)。注意SGD很难突破对称性,一直卡在顶部。而RMSProp之类的方法能够看到马鞍方向有很低的梯度。因为在RMSProp更新方法中的分母项,算法提高了在该方向的有效学习率,使得RMSProp能够继续前进。

  • 18
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AiCharm

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值