? ?优化器用来寻找模型的最优解。
? ? BGD 采用整个训练集的数据来计算 cost function 对参数的梯度:
假设要学习训练的模型参数为W,代价函数为J(W),则代价函数关于模型参数的偏导数即相关梯度为ΔJ(W),学习率为ηt,则使用梯度下降法更新参数为:
Wt+1=Wt?ηtΔJ(Wt)
其中,Wt表示tt时刻的模型参数。训练速度慢:每走一步都要要计算调整下一步的方向,下山的速度变慢。在应用于大型数据集中,每输入一个样本都要更新一次参数,且每次迭代都要遍历所有的样本。会使得训练过程及其缓慢,需要花费很长时间才能得到收敛解。
容易陷入局部最优解:由于是在有限视距内寻找下山的反向。当陷入平坦的洼地,会误以为到达了山地的最低点,从而不会继续往下走。所谓的局部最优解就是鞍点。落入鞍点,梯度为0,使得模型参数不在继续更新。
和 BGD 的一次用所有数据计算梯度相比,SGD 每次更新时对每个样本进行梯度更新,对于很大的数据集来说,可能会有相似的样本,这样 BGD 在计算梯度时会出现冗余,而?SGD 一次只进行一次更新,就没有冗余,而且比较快,并且可以新增样本。
随机梯度下降是通过每个样本来迭代更新一次,如果样本量很大的情况,那么可能只用其中部分的样本,就已经将theta迭代到最优解了,对比上面的批量梯度下降,迭代一次需要用到十几万训练样本,一次迭代不可能最优,如果迭代10次的话就需要遍历训练样本10次。缺点是SGD的噪音较BGD要多,使得SGD并不是每次迭代都向着整体最优化方向。所以虽然训练速度快,但是准确度下降,并不是全局最优。虽然包含一定的随机性,但是从期望上来看,它是等于正确的导数的。
优点:
引入噪声,增加模型的鲁棒性。虽然SGD需要走很多步的样子,但是对梯度的要求很低(计算梯度快)。而对于引入噪声,大量的理论和实践工作证明,只要噪声不是特别大,SGD都能很好地收敛。
缺点:
梯度更新规则:
MBGD 每一次利用一小批样本,即 n(50-256) 个样本进行计算,这样它可以降低参数更新时的方差,收敛更稳定,另一方面可以充分地利用深度学习库中高度优化的矩阵操作来进行更有效的梯度计算。
优点:
缺点:
? ? ? ? SGD的梯度下降过程,类似于一个小球从山坡上滚下,它的前进方向由当前山坡的最大倾斜方向与之前的下降方向共同决定,小球具有初速度(动量),不只被梯度制约。SGDM克服了之前SGD易震荡的缺点。使用动量(Momentum)的随机梯度下降法(SGD),主要思想是引入一个积攒历史梯度信息动量来加速SGD。
优点:
1、引入积攒的历史梯度信息动量加速参数更新
2、一定程度解决了SGD易震荡的问题
缺点:
1、全过程使用了相同的学习率
2、在Momentun中小球会盲目地跟从下坡的梯度,容易发生错误。
?
NAG是Momentum动量算法的变种。更新模型参数表达式如下:
优点
在momentun SGD基础上添加了一个校正因子,避免盲目跟从梯度下降方向
缺点
固定学习率
自适应学习率优化算法针对于机器学习模型的学习率,传统的优化算法要么将学习率设置为常数要么根据训练次数调节学习率。极大忽视了学习率其他变化的可能性。然而,学习率对模型的性能有着显著的影响,因此需要采取一些策略来想办法更新学习率,从而提高训练速度。目前的自适应学习率优化算法主要有:AdaGrad算法,RMSProp算法,Adam算法以及AdaDelta算法。这类算法可以对低频的参数做较大的更新,对高频的做较小的更新,也因此,对于稀疏的数据它的表现很好,很好地提高了 SGD 的鲁棒性。
AdaGrad算法,独立地适应所有模型参数的学习率,缩放每个参数反比于其所有梯度历史平均值总和的平方根。具有代价函数最大梯度的参数相应地有个快速下降的学习率,而具有小梯度的参数在学习率上有相对较小的下降。
?梯度更新规则:
?
优点:
Adagrad适用于数据稀疏或者分布不平衡的数据集
Adagrad 的主要优势在于不需要人为的调节学习率,它可以自动调节;
缺点:
随着迭代次数增多,学习率会越来越小,最终会趋近于0。
?
RMSProp是对Adagrad的一个改进,它解决了Adagrad优化过程中学习率?η?单调减少问题。Adadelta不再对过去的梯度平方进行累加,而是改用加权平均
优点
不再对过去的梯度平方进行累加,通过指数衰减平均值,解决了Adagrad学习率单调递减问题
缺点
需指定全局学习率
?
思想:AdaGrad算法和RMSProp算法都需要指定全局学习率,AdaDelta算法结合两种算法每次参数的更新步长
优点
结合adgrad和rmsprob算法,通过前t-1累加梯度指定学习率,无需指定全局学习率
缺点
在优化前期和中期效果较好,后期在局部最小点震荡。
这个算法是另一种计算每个参数的自适应学习率的方法。相当于 RMSprop + Momentum,除了像 Adadelta 和 RMSprop 一样存储了过去梯度的平方 vt 的指数衰减平均值 ,也像 momentum 一样保持了过去梯度 mt 的指数衰减平均值
如果数据是稀疏的,就用自适用方法,即 Adagrad, Adadelta, RMSprop, Adam。
?
参考博文
https://blog.csdn.net/weixin_40170902/article/details/80092628(优化器详细介绍,公式及优缺点)
https://zhuanlan.zhihu.com/p/58236906?(优化器详细介绍)
https://www.cnblogs.com/guoyaohua/p/8542554.html?(BGD,SGD,MSGD讲的比较详细的博文)
https://www.jiqizhixin.com/graph/technologies/fa50298e-1a85-4af0-ae96-a82708f4b610(提出了几点选择规则)
电话:400-123-4567
传 真:+86-123-4567
手 机:13800000000
邮 箱:admin@eyoucms.com
地 址:广东省广州市天河区88号