adam优化_机器学习中的优化算法(2)-Momentum, RMSProp, AdaM(附Python示例)

本系列文章发表在

机器学习的优化器​zhuanlan.zhihu.com
4b70deef7_ipico.jpg

系列第一篇文章[1]介绍了这系列文章的思路,罗列了重要的数学记号,并讲了标准梯度下降法(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也可以从多个角度理解[2].

首先给出更新公式

其中

  1. 向量各个维度(element-wise)的平方根,比如
  2. 是很小的常数,用来稳定数值计算(当
    某一维度很小时)

类似之前对

的展开,我们同样可以得到

也就是

是直到当前迭代为止所有梯度的平方的平均.这也解释了为什么叫做
Root Mean Square.

RMSProp达到的效果是对幅度的自适应调整:

  • 之前更新幅度大的维度上更新幅度变小
  • 之前更新幅度不大的维度上更新幅度相对大些

v2-21588842fca8f5cd1b651c00f6bbc2b2_b.jpg

那为什么这个效果很有效,在神经网络优化中脱颖而出呢?据说很大一部分原因是

每次用mini-batch迭代,不同的参数梯度可能相差几个量级,通过梯度的平方的指数加权平均,可以有效得不同参数在多次迭代中的量级差,效果类似于批标准化(BN, Batch Normalization,每一次mini-batch迭代,该批每个参数都先经过仿射变换使得均值为0,方差为1).

此外RMSProp自称在non-stationary的环境下表现很好.因为梯度的平方采用了指数加权平均.而所谓non-stationary环境就是随机变量的统计量随时间改变的性质.

AdaM(Adaptive Moment estimates)

AdaM(Adaptive Moment estimates)是一种结合了Momentum和RMSProp的自适应学习率方法.从它的迭代可以看出

v2-204bf97f64e27dc170ef97e05eae9a13_b.png

v2-05291965f46dba80bf0bec864a3d2cf5_b.jpeg

其中

为矫正后的梯度的一阶矩(均值),
为矫正后的梯度的二阶矩(未中心化的方差),所以叫做Adaptive Moment estimates. 如果说Momentum是用一阶矩来估计梯度方向,RMSProp用二阶矩来估计更新幅度,那AdaM就是结合一阶矩和二阶矩来同时估计梯度方向和更新幅度.

v2-307ea3ac86d930f442c602c14aae967d_b.jpg
RMSProp vs AdaM

附录1

图片"RMSProp vs Momentum"和"RMSProp vs AdaM"的代码

import 

附录2

pytorch中RMSProp和AdaM的实现为

import torch
torch.optim.RMSprop()
torch.optim.Adam()

参考

  1. ^系列第一篇文章 https://zhuanlan.zhihu.com/c_1216343504177508352
  2. ^从RPROP和AdaGrad角度来理解RMSProp https://towardsdatascience.com/understanding-rmsprop-faster-neural-network-learning-62e116fcf29a?gi=35550bcbd74e
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值