深度学习中几种常用的优化器
作者:互联网
参考:
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的学习率太低,影响了有效的收敛。
标签:梯度,更新,几种,学习,参数,深度,1e,优化,SGD 来源: https://www.cnblogs.com/lihanlihan/p/15851135.html