深度学习中几种常用的优化器

参考:

https://zhuanlan.zhihu.com/p/261695487(推荐)

https://blog.csdn.net/qq_19917367/article/details/119208803

https://zhuanlan.zhihu.com/p/61955391(推荐)

https://zhuanlan.zhihu.com/p/86591381

一、随机梯度下降法(Stochastic Gradient Descent, SGD)

1、参数更新

深度学习中几种常用的优化器

注:α为学习率,可以随着时间推移进行调整。

2、特点

训练速度快,随机梯度下降所带来的的波动性有利于找到较好的局部极值点,甚至全局极值点。但是当遇到局部最优点或鞍点时,梯度为0,无法继续更新参数。并且沿陡峭维度震荡,而沿平缓维度进展缓慢,难以迅速收敛。

二、SGD with Momentum(SGD-M)

1、参数更新

深度学习中几种常用的优化器

注:β为历史梯度贡献的衰减速率,一般为 0.5,0.9或0.99。可以随着时间的推移进行调整。

2、特点

因为加入了动量因素,SGD-M缓解了SGD在局部最优点梯度为0,无法持续更新和震荡幅度过大的问题。但是,即使有动量的加持,仍旧有可能陷入局部最优点。

三、Nesterov加速(NAG)

1、参数更新

深度学习中几种常用的优化器

 2、特点

有利于跳出局部最优解,但是收敛速度慢。

四、AdaGrad(自适应学习率)

1、参数更新

深度学习中几种常用的优化器

注:δ是一个小的平滑项,为了避免分母为0。大约设为10-7

2、特点

该算法的思想就是针对于不同的维度设置不同的学习率。偏导数较大的参数,学习率较小;偏导数较小的参数,学习率较大。该算法在稀疏数据场景下表现非常好。但是由于st的不断累积,学习率一直在下降,可能会导致训练过程提前结束。

五、RMSProp

1、参数更新

 深度学习中几种常用的优化器

注:建议的初始值:α=0.001,β=0.9。δ为平滑项,一般取值1e-8~1e-10,tensorflow中的默认值为1e-10。

2、特点

不累积全部历史梯度,而只关注过去一段时间窗口的下降梯度。避免了AdaGrad中学习率过度衰减的问题。

六、Adam

1、参数更新

深度学习中几种常用的优化器

注:建议的初始值:α=0.001,β1=0.9,β2=0.999,δ=1e-8

2、特点

通过一阶动量和二阶动量,有效控制学习率步长和梯度方向,防止梯度的震荡和在鞍点的静止。但是(1)可能不收敛。二阶动量是固定时间窗口内的累积,随着时间窗口的变化,遇到的数据可能发生巨变,使得st可能会时大时小,不是单调变化。这就可能在训练后期引起学习率的震荡,导致模型无法收敛。修正方法:深度学习中几种常用的优化器(2)可能错过全局最优解。自适应学习率算法可能会对前期出现的特征过拟合,后期才出现的特征很难纠正前期的拟合效果。后期Adam的学习率太低,影响了有效的收敛。

 

上一篇:目标检测模型回归anchor偏移量等问题


下一篇:python小数格式:不用科学计数法、不截断