优化器
一、优化器概述
根据前向传播求得损失,然后利用优化器对模型参数进行优化。
二、常见的优化器
2.1 SGD
数学公式:
利用损失函数J(θ),反向传播求得θ的导数,通过链式法则对θ进行更新。其中η为学习步长(学习率)。
原先的SGD是对每个样本都计算一次损失,然后根据每个样本的损失更新一次参数,这样的话波动比较大,并且数据中可能存在噪音数据,对参数影响会比较大。
之后的话就是选择一个batchsize的样本,计算其平均损失,然后修改一次参数。
缺点:
1、学习率的调整非常的关键,若是学习率较小,收敛速度会比较慢,学习率较大,会非常抖动,可能达不到收敛的最情况。可以预先指定学习的学习规则,但是规则的学习率没有得到比较好的验证。
2、容易陷入局部最小值。
2.2 Momentum(动量)
数学公式:
基于SGD的方法,然后在求更新量的时候,加入了一个动量。若是t-1时刻vt-1的方向和t时刻vt的方向相同,则会加快更新速度;若是相反,则会放慢学习。相当于加了一个上一时刻的动量,因此容易突破局部最小值。
2.3 Adagrad
数学公式:
其中ϵ为平滑项,为了避免分母为0的情况,一次会取一个非常小的值。Gt表示的是参数的对角矩阵,Gt,ii表示第t轮的时候,第i,i位置上对应参数θi从第i轮到第t轮梯度的平方和。因此,Gt,ii随着t的增加,也是不断增大,学习率因此也在不断的下降。好的地方确实是学习率在自动调整,但是问题在于到随着梯度平方和累计非常大的时候,就会趋近于0,训练会出现提前结束。
2.4 RMSprop
数学公式:
RMSprop是基于Adagrad算法进行改进。Adagrad是求的其梯度累计平方的和,因此容易出现的问题在于很快就数值非常大,导致学习率趋向于0,训练结束。在RMSprop中,用到的是对之前梯度进行平均加权求和的方法。因此可以减缓学习率趋向于0的速度。
2.5 Adam
数学公式:
mt和vt分别是梯度的一阶矩估计(均值)和二阶矩估计(方差)。mt和vt可以看作是对mt和vt的纠正,其中β1一般设置为0.9, β2一般设置为0.999,ϵ为平滑项,一般设置为10e-8。调整的参数过程比较稳定。
2.6 AdaMax
数学公式:
为了和Adam区分开,这里用ut表示。
Adam中用到的是二范数更新,论文中提到二范数更新不是稳定,无穷范数是稳定的,因此通过计算无穷范数,使得收敛到稳定。
三、参考链接
1、https://www.jianshu.com/p/0acd30a23e4e
2、https://blog.csdn.net/u010089444/article/details/76725843
3、https://blog.csdn.net/willduan1/article/details/78070086