资讯专栏INFORMATION COLUMN

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

JackJiang / 1968人阅读

摘要:以此类推加权平均的作用使最终的结果更加平滑,减少噪音。最终第天的数据结果为动量算法是计算梯度的指数加权平均,并利用该值来更新参数。叫做衰减表示迭代次数,表示初始学习率是超参数,也是超参数。

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

1.指数加权平均:

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

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

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

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

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

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也是超参数。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/123710.html

相关文章

  • 深度学习优化Adam 解析

    摘要:原文指出设步长当时,其他时候,所以,正是由于采用了的形式,梯度本身的大小被消除了,假设你在目标函数上乘以,那么这个会同时出现在分子分母上,从而在梯度更新时被消除了。 Adam的优点 现在很多深度网络都优先推荐使用Adam做优化算法,我也一直使用,但是对它的参数一知半解,对它的特性也只是略有耳闻,今天我终于花时间看了一下论文和网上的资料。整理如下。 Adam是从2个算法脱胎而来的:Ada...

    ZoomQuiet 评论0 收藏0
  • 【DL-CV】更高级的参数更新/优化(二)

    续【DL-CV】更高级的参数更新(一) 【DL-CV】正则化,Dropout【DL-CV】浅谈GoogLeNet(咕咕net) Adagrad 全名 Adaptive gradient algorithm ,翻译过来就是适应梯度算法,该算法能根据梯度中偏导数的大小给不同的偏导数以不同的学习率,偏导数大(小)的给个小(大)的学习率,以此来减少参数更新时的摆动。 其核心是引入一个参数对历次的梯度的平方...

    jone5679 评论0 收藏0
  • 【DL-CV】更高级的参数更新/优化(二)

    续【DL-CV】更高级的参数更新(一) 【DL-CV】正则化,Dropout【DL-CV】浅谈GoogLeNet(咕咕net) Adagrad 全名 Adaptive gradient algorithm ,翻译过来就是适应梯度算法,该算法能根据梯度中偏导数的大小给不同的偏导数以不同的学习率,偏导数大(小)的给个小(大)的学习率,以此来减少参数更新时的摆动。 其核心是引入一个参数对历次的梯度的平方...

    glumes 评论0 收藏0
  • 【DL-CV】更高级的参数更新/优化(二)

    续【DL-CV】更高级的参数更新(一) 【DL-CV】正则化,Dropout【DL-CV】浅谈GoogLeNet(咕咕net) Adagrad 全名 Adaptive gradient algorithm ,翻译过来就是适应梯度算法,该算法能根据梯度中偏导数的大小给不同的偏导数以不同的学习率,偏导数大(小)的给个小(大)的学习率,以此来减少参数更新时的摆动。 其核心是引入一个参数对历次的梯度的平方...

    Big_fat_cat 评论0 收藏0
  • 【DL-CV】更高级的参数更新/优化(二)

    续【DL-CV】更高级的参数更新(一) 【DL-CV】正则化,Dropout【DL-CV】浅谈GoogLeNet(咕咕net) Adagrad 全名 Adaptive gradient algorithm ,翻译过来就是适应梯度算法,该算法能根据梯度中偏导数的大小给不同的偏导数以不同的学习率,偏导数大(小)的给个小(大)的学习率,以此来减少参数更新时的摆动。 其核心是引入一个参数对历次的梯度的平方...

    lemon 评论0 收藏0

发表评论

0条评论

JackJiang

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<