1、动量法
加入历史梯度累积,作为下降方向。
2、Nesterov 加速梯度法
在之前的累积梯度上前进一步,根据当前情况进行修正。相较于动量法,增加了当前情况的修正。动量法容易在梯度的来回震荡中抵消一部分动量作用,Nesterov加速梯度法有效改进了不足之处。
3、Adagrad算法
以上两种动量法都是对不同的参数进行同样的调整,对于稀疏矩阵,往往一些参数更新频繁,另一些参数更新较少。对这些参数的更新需要做到高频更新参数步长较小,低频更新参数步长较大。Adagrad通过各个参数的历史梯度累积,来控制步长大小,在分母中添加了历史平方梯度和的开方。
4、Adadelta算法
Adadelta的提出由于两方面原因:1、adagrad学习率单调下降2、更新值的量纲与参数量纲不一致。针对原因1,adadelta将梯度平方累积值变为衰减平均值
针对原因2,在分子上增加参数更新平方的衰减平均值
最终更新如下:
Adadelta由于加入历史参数更新的衰减均值,代替整学习率,所以不需要设置学习率。
5、adam算法的提出
Adam主要将动量法与自适应学习率算法相结合,既存储历史梯度累积,也计算历史梯度平方累积作为自适应学习率。
由于初始化为0时,衰减率较小,因此加入修正项。
最终更新公式为