引言
在日常学习中,我们经常在机器学习与深度学习中,主要应用于梯度下降。
传统的优化器主要结合数据集,通过变化单次循环所采用的数据量的大小对梯度下降进行控制;
非传统的优化器则进一步集合数据集的特点和模型的训练时间,以不同的形式变化梯度下降的学习率。
梯度下降的原理:
其中, θ为学习率,为更新前的参数,
为更新后的参数,
为当前参数的导数。
优化器的作用
- 用来计算和更新影响模型训练和模型输出的网络参数,使其逼近或达到最优值,从而最小化(或者最大化)代价函数
- 深度学习中,优化代价函数J来训练神经网络。
过程
通过优化算法更新可训练参数W和b值,从而是代价函数J的值最小化
各种优化器的介绍
梯度下降法(Gradient Descent)
标准梯度下降法(GD)
基本策略
在有限的视距内寻找最快路径下山,每走一步,参考当前位置最陡的方向(即梯度)进而迈出下一步
缺点:
- 训练速度慢:从下山角度来看,因为每走一步,才能下降一次。过程缓慢,时间长才能得到收敛解。
- 容易陷入局部最优解
批量梯度下降法(BGD)
基本策略
下山前掌握附近的地势,选择总体平均梯度最小的方向下山
每次权值调整发生在批量样本输入之后,而不是每输入一个样本就更新一次模型参数
优点
- 比标准梯度下降法训练时间短,且下降的方向较好,较正确
随机梯度下降法(SGD)
基本策略
盲人下山,不是每一步都算下降,但过程扭扭曲曲
优点
- 梯度要求低,计算速度快。引入噪声,(噪声不是特别大),SGD能很好收敛
- 应用大型数据集,训练速度快,(随机抽取几百个点,速度快)
缺点
- 引入噪声,权值更新方向不一定正确
- 没有克服局部最优解
动量优化法
作用
在梯度下降法的基础山改变,具有加速度下降的作用
标准动量优化方法Momentum
定义
动量的随机梯度下降法
解决的问题
- 随机梯度的方法(引入噪声)
- Hessian矩阵病态问题(SGD在收敛过程中和正确梯度相比来回摆动比较大的问题)
基本策略
当前权值的改变会受到上一次权值改变的影响,类似于小球向下滚动的时候带上了惯性。这样可以加快小球向下滚动的速度
NAG(牛顿加速度梯度-Nesterov accelerated gradient)
定义
Momentum动量算法的变种
基本策略
加入一个校正因子,提前知道下一个位置的梯度,使得小球在往前滚动的时候,知道自己去哪。
自适应学习率优化算法
应用范围
针对机器学习模型的学习率
AdaGrad算法
应用范围
适用于数据稀疏或者分布不平衡的
优点
- 不需要人为的调节学习率
缺点
- 随着迭代次数的增多,学习率会越来越小,最终会趋近于0
RMSProp算法
作用
修改了AdaGrad的梯度积累为指数****加权的移动平均,使得非凸设定下效果更好,避免了学习率越来越低的问题,自适应地调节学习率
经常用的优化方法
AdaDelta算法
AdaGrad算法和RMSProp算法都需要指定全局学习率,AdaDelta算法结合两种算法每次参数的更新步长。
优点
- 训练初期、中期,AdaDelta表现很好,加速效果不错,训练速度快
缺点
- 训练后期,在局部最小值附近抖动
Adam算法
Adam中动量直接并入了梯度一阶矩(指数加权)的估计
对超参数的选择相当鲁棒,鲁棒性好
有图有真相【优化器对比分析】
对比实例-1
在一个曲面上,6种优化器的运动轨迹表现:
下降速度分析
- 三个自适应学习优化器Adagrad、RMSProp与AdaDelta的下降速度明显比SGD要快,其中,Adagrad和RMSProp齐头并进,要比AdaDelta要快
- 两个动量优化器Momentum和NAG由于刚开始走了岔路,初期下降的慢;随着慢慢调整,下降速度越来越快,其中NAG到后期甚至超过了领先的Adagrad和RMSProp。
下降轨迹分析
- SGD和三个自适应优化器轨迹大致相同。两个动量优化器初期走了“岔路”,后期也调整了过来。
对比实例-2
一个存在鞍点的曲面,比较6中优化器的性能表现:
下降速度分析
- 三个自适应学习率优化器没有进入鞍点,其中,AdaDelta下降速度最快,Adagrad和RMSprop则齐头并进
下降轨迹分析
- 两个动量优化器Momentum和NAG以及SGD都顺势进入了鞍点。但两个动量优化器在鞍点抖动了一会,就逃离了鞍点并迅速地下降,后来居上超过了Adagrad和RMSProp
- SGD进入了鞍点,却始终停留在了鞍点,没有再继续下降
对比实例-3
比较了6种优化器收敛到目标点(五角星)的运行过程:
下降速度分析
- 两个动量优化器Momentum和NAG的速度最快,其次是三个自适应学习率优化器AdaGrad、AdaDelta以及RMSProp,最慢的则是SGD。
下降轨迹分析
- 两个动量优化器虽然运行速度很快,但是初中期走了很长的”岔路”
- 三个自适应优化器中,Adagrad初期走了岔路,但后来迅速地调整了过来,但相比其他两个走的路最长;AdaDelta和RMSprop的运行轨迹差不多,但在快接近目标的时候,RMSProp会发生很明显的抖动。
- SGD相比于其他优化器,走的路径是最短的,路子也比较正。
总结
以上是我个人在学习过程中的记录所学,希望对正在一起学习的小伙伴有所帮助!!!
参考资料:
机器学习:各种优化器Optimizer的总结与比较
深度学习梯度更新各类优化器详细介绍
NLP面试题总结(包含8种优化器简介).03