一.算法概述及实现步骤
Adam优化算法基本上就是将Momentum和RMSprop结合在一起。
1.初始化
2.在第t次迭代中,用mini-batch梯度下降法计算出和
3.计算Momentum指数加权平均数
4.用RMSprop进行更新
5.计算Momentum和RMSprop的偏差修正
6.更新权重
Adam的参数配置:
:同样也称为学习率或步长因子,它控制了权重的更新比率(如 0.001)。较大的值(如 0.3)在学习率更新前会有更快的初始学习,而较小的值(如 1.0E-5)会令训练收敛到更好的性能。
:一阶矩估计的指数衰减率(如 0.9)。
:二阶矩估计的指数衰减率(如 0.999)。该超参数在稀疏梯度(如在 NLP 或计算机视觉任务中)中应该设置为接近 1 的数。
:该参数是非常小的数,其为了防止在实现中除以零(如 10E-8)。
在流行的深度学习库中,参数的默认设置如下:
TensorFlow:learning_rate=0.001, beta1=0.9, beta2=0.999, epsilon=1e-08.
Keras:lr=0.001, beta_1=0.9, beta_2=0.999, epsilon=1e-08, decay=0.0.
Blocks:learning_rate=0.002, beta1=0.9, beta2=0.999, epsilon=1e-08, decay_factor=1.
Lasagne:learning_rate=0.001, beta1=0.9, beta2=0.999, epsilon=1e-08
Caffe:learning_rate=0.001, beta1=0.9, beta2=0.999, epsilon=1e-08
MxNet:learning_rate=0.001, beta1=0.9, beta2=0.999, epsilon=1e-8
Torch:learning_rate=0.001, beta1=0.9, beta2=0.999, epsilon=1e-8
二.Adam算法分析
优势:
直截了当地实现
高效的计算
所需内存少
梯度对角缩放的不变性(第二部分将给予证明)
适合解决含大规模数据和参数的优化问题
适用于非稳态(non-stationary)目标
适用于解决包含很高噪声或稀疏梯度的问题
超参数可以很直观地解释,并且基本上只需极少量的调参
Adam 是一种在深度学习模型中用来替代随机梯度下降的优化算法。
Adam 结合了 AdaGrad 和 RMSProp 算法最优的性能,它还是能提供解决稀疏梯度和噪声问题的优化方法。
Adam 的调参相对简单,默认参数就可以处理绝大部分的问题。