深度学习的优化算法

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

  • 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基础上引入了一阶动量:

\[m_t = \beta_1\cdot m_{t-1}+(1-\beta_1)\cdot g_t \]

SGD-M参数更新公式如下,其中\(\alpha\)是学习率,\(g_t\)是当前参数的梯度

\[\omega_{t+1} = \omega_t - \alpha\cdot m_t = \omega_t-\alpha\cdot\left(\beta_1\cdot m_{t-1}+(1-\beta_1)\cdot g_t\right) \]

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

特点:

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

5. RMSProp

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

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

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

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

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

7. Adam

posted @ 2023-04-12 14:19  woxin_lab  阅读(219)  评论(0)    收藏  举报