前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >深度学习相关概念7:动量法与自适应梯度

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

原创
作者头像
AiCharm
发布2023-09-27 12:46:23
2980
发布2023-09-27 12:46:23
举报
文章被收录于专栏:AiCharmAiCharm

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

1.梯度下降存在的问题

  1. 批量梯度下降(BGD)

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

  1. 随机梯度下降法(SGD)

由于随机梯度下降法一次迭代一个样本,导致迭代方向变化很大,不能很快的收敛到局部最优解

添加描述

  1. 小批量梯度下降(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能够继续前进。

我正在参与2023腾讯技术创作特训营第二期有奖征文,瓜分万元奖池和键盘手表

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.梯度下降存在的问题
  • 2.动量法(momentum)
  • 3.自适应梯度与RMSProp
    • 3.1AdaGrad方法
      • 3.2RMSProp方法
      • 4.Adam方法(Adaptive Momentum Estimation)
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档