目录

目录

1. SGD

2. Momentum(动量)

3. Nesterov Accelerated Gradient Descent (NAG)

4. AdaGrad

5. AdaDelta

6. RMSProp

7. Adam

总结



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

1. SGD

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

adam优化器学习率 pytorch adam优化器优缺点_迭代

缺点:

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

(2) 容易被困在鞍点。

 

2. Momentum(动量)

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

adam优化器学习率 pytorch adam优化器优缺点_adam优化器学习率 pytorch_02

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

3. Nesterov Accelerated Gradient Descent (NAG)

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

while condition != 停止目标

     

adam优化器学习率 pytorch adam优化器优缺点_迭代_03

    

adam优化器学习率 pytorch adam优化器优缺点_迭代_04

    

adam优化器学习率 pytorch adam优化器优缺点_自适应_05

 

4. AdaGrad

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

adam优化器学习率 pytorch adam优化器优缺点_迭代_06

公式编辑器编辑不出来。。用

adam优化器学习率 pytorch adam优化器优缺点_自适应_07

第i个变量xi在第i次迭代时的值,

adam优化器学习率 pytorch adam优化器优缺点_adam优化器学习率 pytorch_08

表示函数在t次迭代时,对第i个变量

adam优化器学习率 pytorch adam优化器优缺点_公式编辑器_09

的梯度值。根据历史学习率的积累总量来决定当前学习率减小的程度。

adam优化器学习率 pytorch adam优化器优缺点_自适应_10

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

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

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

5. AdaDelta

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

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

adam优化器学习率 pytorch adam优化器优缺点_公式编辑器_11

历史信息乘上一个衰减系数

adam优化器学习率 pytorch adam优化器优缺点_adam优化器学习率 pytorch_12

,然后用

adam优化器学习率 pytorch adam优化器优缺点_公式编辑器_13

作为当前梯度的平方的加权系数相加。历史信息公式如下:

adam优化器学习率 pytorch adam优化器优缺点_自适应_14

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

好吧。。

我直接放上最后的公式

adam优化器学习率 pytorch adam优化器优缺点_adam优化器学习率 pytorch_15

6. RMSProp

RMS  root mean square 均方根

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

相比于AdaGrad的历史梯度: 

                                                                                                   

adam优化器学习率 pytorch adam优化器优缺点_迭代_16

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

                                                                                              

adam优化器学习率 pytorch adam优化器优缺点_自适应_17

adam优化器学习率 pytorch adam优化器优缺点_adam优化器学习率 pytorch_18

7. Adam

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

adam优化器学习率 pytorch adam优化器优缺点_公式编辑器_19

 

 

总结

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

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

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