当前位置:   article > 正文

SGD、Momentum、RMSprop、Adam区别与联系_sgd,momentum,rmsprop,adam

sgd,momentum,rmsprop,adam

转载地址:https://zhuanlan.zhihu.com/p/32488889

优化算法框架:

  1. 计算目标函数关于当前参数的梯度: g_{t}=\nabla f(w_{t})\\
  2. 根据历史梯度计算一阶动量和二阶动量: m_{t}=\phi(g_{1},g_{2},...,g_{t})\\ V_{t}=\psi(g_{1},g_{2},...,g_{t})
  3. 计算当前时刻的下降梯度: \eta_{t}=\frac{\alpha}{\sqrt{V_{t}}}\cdot m_{t}\\
  4. 根据下降梯度进行更新: w_{t+1}=w_{t}-\eta_{t}\\

最核心的区别就是第三步所执行的下降方向,在这个式子中,前半部分是实际的学习率(也即下降步长),后半部分是实际的下降方向。不同优化算法也就是不断地在这两部分上做文章。


最朴素的优化算法就是SGD了,没有动量和自适应学习率的概念,但还是有很多人在用着。


SGD

梯度更新规则:

SGD的形式最简单

\eta_{t}=\alpha\cdot g_{t}\\

存在问题:

因为更新比较频繁,会造成 cost function 有严重的震荡,最终停留在Local Minima或者Saddle Point处。


为了能够跳出Local Minima和Saddle Point,提出了动量的概念。


SGD with Momentum

梯度更新规则:

Momentum在梯度下降的过程中加入了惯性,使得梯度方向不变的维度上速度变快,梯度方向有所改变的维度上的更新速度变慢,这样就可以加快收敛并减小震荡。

m_{t}=\beta_{1}\cdot m_{t-1}+(1-\beta_{1})\cdot g_{t}\\

一阶动量是移动平均值,这里 \beta_{1} 的经验值为0.9,也就是说时刻t的主要下降方向是由t-1时刻的下降方向再加一点点t时刻的偏向决定的。

存在问题:

  1. 不具备一些先知,例如快要上坡时,就知道需要减速了,适应性会更好;
  2. 不能根据参数的重要性而对不同的参数进行不同程度的更新。


SGD with Nesterov Acceleration

NAG改进了SGDM的第一个存在问题,在计算梯度时,不是在当前位置,而是未来的位置上。因此这里的梯度是跟着累积动量走了一步后的梯度,即 g_{t}=\nabla f(w_{t}-\frac{\alpha}{\sqrt{V_{t-1}}}\cdot m_{t-1})\\


我们希望能够根据参数的重要性而对不同的参数进行不同程度的更新,学习率是自适应的。对于经常更新的参数,我们已经积累了大量关于它的知识,不希望被单个样本影响太大,希望学习速率慢一些;对于偶尔更新的参数,我们了解的信息太少,希望能从每个偶然出现的样本身上多学一些,即学习速率大一些。


AdaGrad

梯度更新规则:

二阶动量为该维度上迄今为止所有梯度值的平方和

V_{t}=\sum_{\tau=1}^{t}{g_{\tau}^{2}}\\

为了避免分母为0,加了一项随机扰动

\eta_{ti}=\frac{\alpha}{\sqrt{V_{ti}+\varepsilon}}\cdot m_{ti}\\


存在问题:

分母会不断积累,这样学习率就会收缩并最终会变得非常小。


RMSProp

梯度更新规则:

解决Adagrad学习率急剧下降的问题,RMSProp改变了二阶动量计算方法,即用窗口滑动加权平均值计算二阶动量。

V_{t}=\beta_{2}\cdot V_{t-1}+(1-\beta_{2})g_{t}^{2}\\

Hinton 建议设定 \beta_{2} 为 0.9, 学习率 \alpha 为 0.001。


集成动量+自适应学习率的优化算法应该是目前最好的。


Adam

梯度更新规则:

Adam = Adaptive + Momentum,顾名思义Adam集成了SGD的一阶动量和RMSProp的二阶动量。

m_{t}=\beta_{1}\cdot m_{t-1}+(1-\beta_{1})\cdot g_{t}\\ V_{t}=\beta_{2}\cdot V_{t-1}+(1-\beta_{2})g_{t}^{2}\\

优化算法里最常见的两个超参数  \beta_1, \beta_2 就都在这里了,前者控制一阶动量,后者控制二阶动量。

若在Adam基础上再加一个Nesterov加速,是不是更牛逼了,这就是Nadam。 5.34c-.314.314-.3.846.03 1.177z” fill-rule=”evenodd”>

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/喵喵爱编程/article/detail/886599
推荐阅读
相关标签
  

闽ICP备14008679号