AdaGrad、RMSProp和Adam
AdaGrad、RMSProp以及Adam都是逐元素的自适应学习率方法(per-parameter adaptive learning rate methods),根据每个神经元的梯度变化进行权重调整,能够有效的提高模型精度
AdaGrad
数学公式如下:
其中
1e-8,用于保证数值稳定性
实现如下:
1 | cache += dw**2 |
与原始
- 其学习率除以
的平方根,起到了学习率退火的效果 - 如果得到了高梯度,则有效学习率下降,反之有效学习率提高,这样保证权重向量的变化更加稳定,不易被个别样本影响
其缺点在于变量
RMSProp
数学公式如下:
其中[0.9, 0.99, 0.999]其中之一,使用
1e-8,用于保证数值稳定性
实现如下:
1 | cache = decay_rate * cache + (1 - decay_rate) * dw**2 |
与AdaGrad相比,其
Adam
Adam方法集成了前两者,数学实现如下:
[0,1]之间
[1e-4, 1e-8]之间
常用的取值组合为
参考:

实现如下:
1 | m = beta1*m + (1-beta1)*dw |
Adam方法计算了梯度的一阶动量(均值,mean)和二阶动量(方差,the uncentered variance),同时为了避免初始动量不趋向于bias correction)
与RMSProp方法相比,Adam方法进一步平滑了权重更新过程
梯度下降流程
文章从 SGD 到 Adam —— 深度学习优化算法概览(一)总结了梯度下降方法的更新框架
- 计算梯度
- 计算梯度的一阶动量
和二阶动量 - 更新权重
小结
逐元素的自适应学习率方法能够更加有效的利用神经元的梯度变化,加速学习过程