神经网络中各种优化器简介

最常见的优化器

  • BGD(Batch Gradient Descent)
    一次更新计算整个数据集的梯度,计算慢,收敛速度慢。但是下降方向为总体平均梯度,能得到一个全局最优解。
  • SGD(Stochastic Gradient Descent)
    每次更新选取一个样本计算梯度,训练速度快,但是每次迭代并不是朝着整体最优的方向,导致梯度下降波动大,容易从一个局部最优跳到另一个局部最优。
  • MBDG(Mini-Batch Gradient Descent)
    每次更新利用一小批样本,即保证了训练的速度,又能保证最后收敛的准确率。

Momentum

参数更新时在一定程度上保留之前更新的方向,同时又利用当前batch的梯度微调最终的更新方向,简言之就是通过积累之前的动量来加速当前的梯度。(就像一个小球从山上滚落,没有阻力的话,动量会越来越大,但是如果遇到了阻力,速度会变小)。
有助于跳出鞍点。

AdaGrad(Adaptive gradient algorithm)

动态的调整学习率,避免人为的介入,根据需要让程序自己动态地设置学习率。例如对于遇到鞍点的情况,参数变化很小,基本不会改变,那么这个方法就会设置一个较大的学习率,跨过鞍点。

缺点:

  • 它的缺点是分母会不断积累,分母上梯度累加的平方和会越来越大,这样学习率就会收缩并最终会变得非常小,使得参数更新量趋近于0,使得训练提前结束,无法学习

RMSProp

RMSProp算法修改了AdaGrad的梯度平方和累加为指数加权的移动平均,使得其在非凸设定下效果更好。

Adam(Adaptive Moment Estimation)

这个算法是另一种计算每个参数的自适应学习率的方法。相当于 RMSprop + Momentum
实践表明,Adam 比其他适应性学习方法效果要好。

特点:

  • Adam梯度经过偏置校正后,每一次迭代学习率都有一个固定范围,使得参数比较平稳。
  • 结合了Adagrad善于处理稀疏梯度和RMSprop善于处理非平稳目标的优点
  • 为不同的参数计算不同的自适应学习率
  • 也适用于大多非凸优化问题——适用于大数据集和高维空间。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容