优化器及其优缺点

目录

目录

1. SGD

2. Momentum(动量)

3. Nesterov Accelerated Gradient Descent (NAG)

4. AdaGrad

5. AdaDelta

6. RMSProp

7. Adam

总结



优化器优化的是学习率,他发生在反向运算中。学习率衰减,是每次迭代衰减的方法,在前向运算中。

1. SGD

.在这里SGD和mini-batch是同一个意思,抽取m个小批量(独立同分布)样本,通过计算他们的平均梯度均值。

缺点:

(1) leraning rate 选择太小,收敛速度会很慢,如果太大,则loss function会在极小值附近不停的震荡,甚至片偏离。

(2) 容易被困在鞍点。

 

2. Momentum(动量)

动量可以理解为冲量,梯度在某一位置来回徘徊,不再下降或者下降缓慢可以考虑用冲量。

要是当前时刻的梯度与历史时刻梯度方向相似,这种趋势在当前时刻则会加强;要是不同,则当前时刻的梯度方式减弱。

3. Nesterov Accelerated Gradient Descent (NAG)

他是对冲量的改进,给定的目标函数f(x),初始起点x0,起始动量v0

while condition != 停止目标

      \Delta x_{t} = -\triangledown f(x_{t}+\gamma v_{t})

     v_{1+t} = \gamma v_t +\eta \Delta x_{t}

     x_{1+t} =x_{t} +v_{1+t}

 

4. AdaGrad

自适应学习率,前期用较大的学习率加快收敛,梯度快速下降。对已经下降很多的变量,减缓学习率,对没怎么下降的,则用较大的学习率。公式如下

(x_{t+1})_{i}=(x_{t})_{i}-\frac{\eta }{\sqrt{\sum_{\iota=1}^{t}(\triangledown f(x_{\iota}))_{i}^{2}}} \cdot (\triangledown f(x_{t}))_{i}公式编辑器编辑不出来。。

(x_{t})_{i}第i个变量xi在第i次迭代时的值,(\triangledown f(x_{\iota}))_{i}表示函数在t次迭代时,对第i个变量x_{i}的梯度值。根据历史学习率的积累总量来决定当前学习率减小的程度。

设置全局学习率之后,每次通过,全局学习率逐参数的除以历史梯度平方和的平方根,使得每个参数的学习率不同。

优点:学习率可以自适应的减小。在稀疏的样本下,下降的方向,涉及的变量可能有很大的差异。非常适用。

缺点:学习率过早、过量的减少。初始学习率需要手动设置。设置太大优化不稳定,设置太小,没到局部最有结果就停止了。

5. AdaDelta

AdaGrad中存在的问题,在这里的到了解决。改进了两个地方:

1、 将累计梯度信息冲全部历史梯度变为当前时间向前的一个窗口期内的积累。计算历史梯度用下面公式。

E[g^{2}]_{i} = \rho E[g^{2}]_{i-1} + (1-\rho )g^{2}_{i}

历史信息乘上一个衰减系数\rho,然后用(1-\rho )作为当前梯度的平方的加权系数相加。历史信息公式如下:

(\Delta x_{t})_{i}=-\frac{\eta }{(RMS[g]_{t})_{i}} \cdot (\triangledown f(x_{t}))_{i}

2、解决了设置初始值的问题,不用手动指定学习率

好吧。。

我直接放上最后的公式

(\Delta x_{t})_{i}=-\frac{(RMS[\Delta x]_{t-1})_{i} }{(RMS[g]_{t})_{i}} \cdot (\triangledown f(x_{t}))_{i}

6. RMSProp

RMS  root mean square 均方根

鉴于神经网络都是非凸条件下的,RMSProp在非凸条件下结果更好,改变梯度累积为指数衰减的移动平均以丢弃遥远的过去历史。

相比于AdaGrad的历史梯度: 

                                                                                                   

RMSProp增加了一个衰减系数来控制历史信息的获取多少: 

                                                                                              

7. Adam

Adam算法可以看作修正后的Momentum+ RMSProp算法, 学习率通常建议为0.001.

 

 

总结

AdaGrad和AdaDelta是两种自适应算法。

RMSProp,Adam,Adamax等算法与AdaDelta有点像。

在高维度和高复杂问题中,带冲量的梯度下降法是最主流的,不过对于收敛效果不好的,自适应很有用,优化后期AdaDelta和RMSProp常出现反复震荡,效果不如带冲量的。

  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

颐水风华

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值