先看这个 https://mp.weixin.qq.com/s/xm4MuZm-6nKTn2eE3eNOlg
最基本的gradient descent:
1.Momentum
Momentum 是一种有助于在相关方向上加速SGD并抑制振荡的方法。它通过将上步的更新向量添加到当前的更新向量来实现。
γ通常是0.9或者类似的值。
2.Adagrad
Adagrad是一种参数自适应学习率算法,对常用的参数采用较小的更新,对不常用的参数采用较大更新。
建议学习速率设置为0.01,并保持不变。
3.RMSprop
建议γ设置为0.9,学习速率设置为0.001。
4.Adam
Adam同时具有AdaGrad 和 RMSProp 算法的优点,它通过计算梯度的一阶矩估计和二阶矩估计为不同的参数设计独立的自适应性学习率。
beta1:一阶矩估计的指数衰减率。
beta2:二阶矩估计的指数衰减率。
epsilon:该参数是非常小的数,其为了防止在实现中除以零。
建议学习速率设置为0.001,β1设置为0.9,β2设置为0.999,ϵ设置为1e-08。
PS:
Adam在实际应用中效果良好,超过了其他的自适应技术。
几种优化算法的γ和ϵ是通用的,可以使用相同的值。
Reference:
https://mp.weixin.qq.com/s/xm4MuZm-6nKTn2eE3eNOlg
http://ruder.io/optimizing-gradient-descent/index.html#batchgradientdescent