AdaGrad
AdaGrad是基于随机梯度下降进行改进后的优化算法
AdaGrad的更新公式为:
其中 Gt 是历史梯度值平方的累加,公式为:
ε 是用来防止分母为0的超参数。在这个公式下,历史梯度越大的特征Gt会越大,因此历史梯度越大的特征的学习率会下降越快。
-
优点
-
为不同参数设置不同的学习率,避免手动去调整学习率,减缓大梯度的更新速度,加快小梯度的更新速度
-
-
缺点
-
由于随着梯度增加,分母越来越大,学习率不断衰减甚至接近0,因此Adagrad后期的学习率非常小,容易学习困难
-
Momentum
首先构造表征包含历史梯度的参数 mt ,计算如下:
其中,参数 β 为动量因子。然后按照 mt 的方向与大小进行参数更新:
-
优点
-
在梯度方向改变时候,动量能够惩罚梯度方向的改变,从而减少震荡
-
在梯度方向相同的时候,动量能加速参数更新,从而加速收敛
-
-
缺点
-
不能动态改变学习率
-
动量因子的取值对结果有一定的影响
-
RMSprop
-
RMSprop = 动量 + AdaGrad
-
AdaGrad中学习率分母是历史梯度的平方和,会无限增大,我们采用动量的思想对其修改,这样他的历史梯度就不会无限增大导致学习率下降
-
优点
-
克服了AdaGrad的梯度消失问题
-
-
缺点
-
如果参数设置不好的话,可能会导致学习率不衰减,反而增大,这可能导致无法收敛
-
Adam
-
Adam = RMSprop + 动量
-
他结合了两者的优势,在学习率和梯度上都应用的动量的思想
-
在使用指数加权平均的时候,可以选择偏差修正
-
目的是为了解决初始时期的偏差,在早期得到更好的预测,但是也可以不用
-
-
除了传统的梯度下降,其他的梯度下降可以跳出局部最小值和鞍点