1. 梯度下降(gradient descent):
三种梯度下降方式: 全量梯度下降;SGD;mini-batch 梯度下降
mini-batch的缺点:
1. 对步长比较敏感
2.不同参数使用相同的步长
3.可能无法跳出鞍点
2. momentum:
针对SGD在局部最优点处的震荡问题,增加上一时刻的梯度信息,当两个梯度同向,则增强梯度下降,否则,降低梯度下降。
3. NAG
在momentum的基础上,为了防止动量的过度增强,及超过鞍点之后继续上坡,使用
作为对未知下一时刻的估计,然后计算该位置的梯度,作为参数更新的指导。
注: NAG可以显著地提高RNN的效果。
4. Adagrad
核心思想:
对于出现次数较少的特征使用大的学习率,出现次数较多的特征使用小的学习率。
针对SGD中不同参数具有相同步长的问题(实际不同参数出现频率是不一样的),Adagrad采用不用参数i前t个时刻的梯度的平方和来赋予不同参数不同的步长。
其中G(t-1)表示任意参数i的前t-1个时刻的梯度的平方和 ,g(t-1)表示当前时刻的梯度值。
由于
故而不同参数具有不同的更新步长。
特点:
1. 非常适合用于处理稀疏数据,提高了SGD模型的鲁棒性
2. 分析发现参数的二阶导数值和距离最优点的距离成反比,而距离最优点中越近应该使用越小的学习率,--> 参数的二阶导数值应该与学习率成反比
而直接计算二阶导数值的计算量太大,因此使用一阶导数值的平方来近似二阶导数值。
因此要除以梯度的平方和。(注:实验表明根号很重要,去掉效果很差)。
缺点:
1. 由于梯度平方的每一项都大于0,学习率单调递减,这在初期有利于收敛,但在后期会阻碍模型收敛
2.需要一个合适的全局初始学习率
5. RMSprop
为了解决学习率一直衰减的问题,RMSProp使用累积梯度平方和进行梯度的更新。
其中前t时刻的累积梯度G(t)为前t-1时刻的累积梯度G(t-1)与当前梯度g(t)的平方的加权结果。由于加权,所以G(t)不总是单调递增的。
6. AdaDelta
初始状态和RMSprop相同,之后继续使用Hessian矩阵的对角线近似Hessian矩阵,得到学习率可以替换为:
因此公式可以转化为:
特点:
不需要初始化步长
7. Adam
beta1为一阶矩,类似于momentum的梯度衰减的平均值
beta2为二阶矩,类似于RMS的梯度平方的衰减平均值
优点:
1. 通过一阶矩冲破鞍点
2. 利用二阶矩使得不同参数具有不同的步长