梯度下降优化算(Momentum, AdaGrad, RMSprop, Adam)学习率退火

Posted heelo word

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了梯度下降优化算(Momentum, AdaGrad, RMSprop, Adam)学习率退火相关的知识,希望对你有一定的参考价值。

1.指数加权平均:

当没有使用加权平均时的结果噪音比较大, 如:

Yt表示t时刻的真实值    St表示t加权平均后的值,β为权重值

运算步骤:  就是用前一天结果的0.9倍 加上 今天结果的0.1倍作为今天的结果。以此类推

 加权平均的作用: 使最终的结果更加平滑,减少噪音。

 最终第100天的数据结果为:

梯度下降算法在进行网络训练时,会遇到鞍点,也就是局部极小值问题,要解决这个问题,就提出了动量(Momentum) 算法;

2. 动量算法(Momentum):  是计算梯度的指数加权平均,并利用该值来更新参数。动量问题主要解决鞍点(局部极小值)的问题,  通常贝β设置为0.9

动量(Momentum)解释: 动量的意思是,如果两次梯度方向相同,则动量的值就会增大,如果两次梯度的方向相反,则动量的值就会减小, 用这样的方法,可以冲过鞍点, 如果是到了真正的最小值且越过了最小点,则会由于梯度方向不同,使动量值减小,慢慢的收敛到最小点。

动量(Momentum)方法可以到达最小值点,但是如果动量太大,避免不了在最小点来回动荡,趋于最小值点的速度会很慢,为了解决这个问题,就有了Adagrad算法。

使用动量和不使用动量结果的比较 : 红色是没有使用动量方法的结果, 蓝色是使用动量方法得到的结果,很明显,使用动量后,所得到的结果噪音更小。

3. Adagrad算法:                                                                                                                          

算法的目的:将w的更新看成是一个人下山坡, Adagrad可以理解为,一个人可以在缓坡时候迈的步子大一点, 在陡坡中迈的步子小一点,这样可以加快训练。

首先会将St(是一个向量)中所有的元素初始化为0(因为t的维度和要更新的w维度相同才可以),之后将梯度gt按元素平方后累加到变量St                                                                                              

为什么St是一个向量或矩阵,因为要使用St取更新w的值,w是一个向量或者矩阵,所以St也是一个向量或者矩阵.                               

表示按元素相乘。

gt表示的是梯度    St表示的是t时刻的结果  (每次更新一次w是一次迭代,则顺便更新St的值)

更新w参数:  α表示的是学习率,  ε是为了防止分母为0的情况。ε通常设置为1e-8;                       

注意: 随着迭代次数,上面st累加的值越来越大,导致更新w的值时,st作为分母,会是整体梯度减小,会很难到达最小点

Adagrad算法的问题:  当点移动到缓坡的时候,可以使用梯度平方的方法将步长变大,  但是如果在陡坡的时候,梯度是比较大的,一旦平方后,再往后梯度就很难再减小(也就是说步长很难再变小), 由于这个问题,又提出了RMSprop算法。

4. RMSprop算法: 是在Adagrad算法的基础上,可以让大的步长也可以变小, 那就是引进衰减系数(加权平均),让每次都衰减一定比例。由于有β的存在,大的梯度也可以平滑,不会很大。

 RMSprop算法是状态变量St是截至时间t,所有梯度gt按元素平方和并指数加权平方,算法将这些梯度按元素平方做指数加权移动

5. Adam算法:是将Momentum和RMSprop算法相结合。

优化梯度的方法: (由于前人的经验,β1=0.9较好, β2=0.999较好)

其中 𝑙 表示的是某一层, t为移动平均迭代次数

参数更新过程:

6. 学习率退火:

在训练神经网络时, 一般情况下学习率都会随着训练而变化,主要是训练后期,如果学习率过高,会造成loss的来回震荡, 但是学习率较小的话, 又会造成收敛变慢的请款。

6.1 分段常数衰减:

分段常数衰减是在实现地暖管一号的训练区间上个,设置不同的学习率常数, 刚开始学习率大一些,之后学习率越来越小。           

                       

                                                                            

6.2指数衰减:    

其中 t表示迭代次数, α0 和 k均为超参数,这两个超参数设置不同的值,衰减速率不同 。               α0是初始学习率。                                         

 6.3    叫做1/t衰减:

t表示迭代次数,α0表示初始学习率(是超参数), k也是超参数。

以上是关于梯度下降优化算(Momentum, AdaGrad, RMSprop, Adam)学习率退火的主要内容,如果未能解决你的问题,请参考以下文章

梯度下降:SGD vs Momentum vs NAG vs Adagrad vs Adadelta vs RMSprop vs Adam

TensorFlow 中的梯度下降 vs Adagrad vs Momentum

各种优化方法总结比較(sgd/momentum/Nesterov/adagrad/adadelta)

SGD vs Momentum vs NAG vs Adagrad vs Adadelta vs RMSprop vs Adam

SGD vs Momentum vs NAG vs Adagrad vs Adadelta vs RMSprop vs Adam

梯度下降的可视化解释(Adam,AdaGrad,Momentum,RMSProp)