第一篇介绍了这系列文章的思路,罗列了重要的数学记号,并讲了标准梯度下降法(GD, Gradient Descent)和Momentum机制.今天我们换个角度来解释Momentum,然后介绍RMSProp(Root Mean Square Propagation)和AdaM(Adaptive Moment Algo).
换角度看Momentum
第一篇中讲到带有Momentum的GD的迭代方法为
这个式子可以帮助我们更好的理解“momentum”.
不过它也可以改写为
进一步改写为
两者完全等价,只需要
我们扩展下
因为
设
我们就会发现Momentum每次迭代的方向是当次迭代为止所有梯度
RMSProp (Root Mean Square Propagation)
RMSProp来源于Hinton
Coursera神经网络课程的课后作业www.coursera.org和Momentum一样,RMSProp也可以从多个角度理解[1].
首先给出更新公式
其中
-
是向量各个维度(element-wise)的平方根,比如
-
是很小的常数,用来稳定数值计算(当某一维度很小时)
类似之前对
也就是
RMSProp达到的效果是对幅度的自适应调整:
- 之前更新幅度大的维度上更新幅度变小
- 之前更新幅度不大的维度上更新幅度相对大些
那为什么这个效果很有效,在神经网络优化中脱颖而出呢?据说很大一部分原因是
每次用mini-batch迭代,不同的参数梯度可能相差几个量级,通过梯度的平方的指数加权平均,可以有效得不同参数在多次迭代中的量级差,效果类似于批标准化(BN, Batch Normalization,每一次mini-batch迭代,该批每个参数都先经过仿射变换使得均值为0,方差为1).
此外RMSProp自称在non-stationary的环境下表现很好.所谓non-stationary环境就是随机变量的统计量随时间改变的性质.
AdaM(Adaptive Moment estimates)
AdaM(Adaptive Moment estimates)是一种结合了Momentum和RMSProp的自适应学习率方法.从它的迭代可以看出
其中
如果说Momentum是用一阶矩来估计梯度方向,RMSProp用二阶矩来估计更新幅度,那AdaM就是结合一阶矩和二阶矩来同时估计梯度方向和更新幅度.
参考
- ^从RPROP和AdaGrad角度来理解RMSProp https://towardsdatascience.com/understanding-rmsprop-faster-neural-network-learning-62e116fcf29a?gi=35550bcbd74e