深度学习的优化算法

目前,深度学习的优化器以反向传播的梯度下降算法为主流。常见的优化器有如下几种:

  • BGD
  • SGD
  • MBGD
  • Momentum
  • RMSProp
  • AdaGrad
  • Adam

1. 批量梯度下降(Batch Gradient Descent, BGD)

2. 随机梯度下降法(Stochastic Gradient Descent,SGD)

3. 小批量随机梯度下降(Mini-batch Gradient Descent, MBGD)

4. SGDM(SGD with Momentum)

SGDM在SGD基础上引入了一阶动量:

mt=β1mt1+(1β1)gt

SGD-M参数更新公式如下,其中α是学习率,gt是当前参数的梯度

ωt+1=ωtαmt=ωtα(β1mt1+(1β1)gt)

一阶动量是各个时刻梯度方向的指数移动平均值,也就是说,t时刻的下降方向,不仅由当前点的梯度方向决定,而且由此前累积的下降方向决定。β1 的经验值为0.9,这就意味着下降方向主要是此前累积的下降方向,并略微偏向当前时刻的下降方向。想象高速公路上汽车转弯,在高速向前的同时略微偏向,急转弯可是要出事的。

特点:

因为加入了动量因素,SGD-M缓解了SGD在局部最优点梯度为0,无法持续更新的问题和振荡幅度过大的问题,但是并没有完全解决,当局部沟壑比较深,动量加持用完了,依然会困在局部最优里来回振荡。

5. RMSProp

6. 自适应梯度法(adaptive gradient, AdaGrad)

它通过记录每次迭代过程中的前进方向和距离,从而使得针对不同问题,有一套自适应调整学习率的方法,即不同的参数是需要不同的学习率的。具有损失较大偏导的参数相应地有一个快速下降的学习率,而具有小偏导的参数在学习率上有相对较小的下降。

AdaGrad的效果是:在参数空间中更为平缓的倾斜方向会取得更大的进步(因为平缓,所以历史梯度平方和较小,对应学习下降的幅度较小)。

优点:解决了SGD中学习率不能自适应调整的问题。

缺点:
(1)对于训练深度神经网络模型而言,从训练开始时累积平方梯度值会越来越大,会导致学习率过早和过量的减少,从而导致迭代后期收敛及其缓慢。AdaGrad在某些深度学习模型上效果不错,但不是全部。
(2)需要手动设置全局学习率

7. Adam

posted @   woxin_lab  阅读(170)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示