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

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

  • 1.梯度下降存在的问题
  • 2.动量法(momentum)
  • 3.自适应梯度与RMSProp
    • 3.1AdaGrad方法
    • 3.2RMSProp方法
  • 4.Adam方法(Adaptive Momentum Estimation)

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

1.梯度下降存在的问题

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

  2. 随机梯度下降法(SGD)
    由于随机梯度下降法一次迭代一个样本,导致迭代方向变化很大,不能很快的收敛到局部最优解
    深度学习相关概念:动量法与自适应梯度_第1张图片

  3. 小批量梯度下降(MBGD)
       同SGD一样,每次梯度的方向不确定,可能陷入局部最优
    深度学习相关概念:动量法与自适应梯度_第2张图片

2.动量法(momentum)

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

深度学习相关概念:动量法与自适应梯度_第3张图片

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

3.自适应梯度与RMSProp

   自适应梯度法通过减小震荡方向步长,增大平坦方向步长来减小震荡,加速通往谷底方向。但是如何区分震荡方向与平坦方向?梯度幅度的平方较大的方向是震荡方向;梯度幅度的平方较小的方向是平坦方向。
深度学习相关概念:动量法与自适应梯度_第7张图片
   AdaGrad方法和RMSProp方法都是自适应梯度方法

3.1AdaGrad方法

深度学习相关概念:动量法与自适应梯度_第8张图片
   AdaGrad会记录过去所有梯度的平方和,更新权重时如下图所示
深度学习相关概念:动量法与自适应梯度_第9张图片

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

3.2RMSProp方法

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

深度学习相关概念:动量法与自适应梯度_第10张图片

4.Adam方法(Adaptive Momentum Estimation)

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

深度学习相关概念:动量法与自适应梯度_第11张图片

不同最优化方法效果:

深度学习相关概念:动量法与自适应梯度_第12张图片

深度学习相关概念:动量法与自适应梯度_第13张图片
上图展示了一个马鞍状的最优化地形,其中对于不同维度它的曲率不同(一个维度下降另一个维度上升)。注意SGD很难突破对称性,一直卡在顶部。而RMSProp之类的方法能够看到马鞍方向有很低的梯度。因为在RMSProp更新方法中的分母项,算法提高了在该方向的有效学习率,使得RMSProp能够继续前进。

你可能感兴趣的:(深度学习相关概念详解,深度学习,机器学习,算法)