首页 > 其他分享 >神经网络优化篇:详解动量梯度下降法(Gradient descent with Momentum)

神经网络优化篇:详解动量梯度下降法(Gradient descent with Momentum)

时间:2024-01-17 10:16:07浏览次数:35  
标签:descent Gradient 梯度 db 下降 beta 动量 dW Momentum

动量梯度下降法

还有一种算法叫做Momentum,或者叫做动量梯度下降法,运行速度几乎总是快于标准的梯度下降算法,简而言之,基本的想法就是计算梯度的指数加权平均数,并利用该梯度更新的权重。

例如,如果要优化成本函数,函数形状如图,红点代表最小值的位置,假设从这里(蓝色点)开始梯度下降法,如果进行梯度下降法的一次迭代,无论是batchmini-batch下降法,也许会指向这里,现在在椭圆的另一边,计算下一步梯度下降,结果或许如此,然后再计算一步,再一步,计算下去,会发现梯度下降法要很多计算步骤对吧?

慢慢摆动到最小值,这种上下波动减慢了梯度下降法的速度,就无法使用更大的学习率,如果要用较大的学习率(紫色箭头),结果可能会偏离函数的范围,为了避免摆动过大,要用一个较小的学习率。

另一个看待问题的角度是,在纵轴上,希望学习慢一点,因为不想要这些摆动,但是在横轴上,希望加快学习,希望快速从左向右移,移向最小值,移向红点。所以使用动量梯度下降法,需要做的是,在每次迭代中,确切来说在第\(t\)次迭代的过程中,会计算微分\(dW\),\(db\),会省略上标\([l]\),用现有的mini-batch计算\(dW\),\(db\)。如果用batch梯度下降法,现在的mini-batch就是全部的batch,对于batch梯度下降法的效果是一样的。如果现有的mini-batch就是整个训练集,效果也不错,要做的是计算\(v_{{dW}}= \beta v_{{dW}} + \left( 1 - \beta \right)dW\),这跟之前的计算相似,也就是\(v = \beta v + \left( 1 - \beta \right)\theta_{t}\),\(dW\)的移动平均数,接着同样地计算\(v_{db}\),\(v_{db} = \beta v_{{db}} + ( 1 - \beta){db}\),然后重新赋值权重,\(W:= W -av_{{dW}}\),同样\(b:= b - a v_{db}\),这样就可以减缓梯度下降的幅度。

例如,在上几个导数中,会发现这些纵轴上的摆动平均值接近于零,所以在纵轴方向,希望放慢一点,平均过程中,正负数相互抵消,所以平均值接近于零。但在横轴方向,所有的微分都指向横轴方向,因此横轴方向的平均值仍然较大,因此用算法几次迭代后,发现动量梯度下降法,最终纵轴方向的摆动变小了,横轴方向运动更快,因此的算法走了一条更加直接的路径,在抵达最小值的路上减少了摆动。

动量梯度下降法的一个本质,这对有些人而不是所有人有效,就是如果要最小化碗状函数,这是碗的形状,画的不太好。

它们能够最小化碗状函数,这些微分项,想象它们为从山上往下滚的一个球,提供了加速度,Momentum项相当于速度。

想象有一个碗,拿一个球,微分项给了这个球一个加速度,此时球正向山下滚,球因为加速度越滚越快,而因为\(\beta\) 稍小于1,表现出一些摩擦力,所以球不会无限加速下去,所以不像梯度下降法,每一步都独立于之前的步骤,的球可以向下滚,获得动量,可以从碗向下加速获得动量。发现这个球从碗滚下的比喻,物理能力强的人接受得比较好,但不是所有人都能接受,如果球从碗中滚下这个比喻,理解不了,别担心。

最后来看具体如何计算,算法在此。

所以有两个超参数,学习率\(a\)以及参数\(\beta\),\(\beta\)控制着指数加权平均数。\(\beta\)最常用的值是0.9,之前平均了过去十天的温度,所以现在平均了前十次迭代的梯度。实际上\(\beta\)为0.9时,效果不错,可以尝试不同的值,可以做一些超参数的研究,不过0.9是很棒的鲁棒数。那么关于偏差修正,所以要拿\(v_{dW}\)和\(v_{db}\)除以\(1-\beta^{t}\),实际上人们不这么做,因为10次迭代之后,因为的移动平均已经过了初始阶段。实际中,在使用梯度下降法或动量梯度下降法时,人们不会受到偏差修正的困扰。当然\(v_{{dW}}\)初始值是0,要注意到这是和\(dW\)拥有相同维数的零矩阵,也就是跟\(W\)拥有相同的维数,\(v_{db}\)的初始值也是向量零,所以和\(db\)拥有相同的维数,也就是和\(b\)是同一维数。

最后要说一点,如果查阅了动量梯度下降法相关资料,经常会看到一个被删除了的专业词汇,\(1-\beta\)被删除了,最后得到的是\(v_{dW}= \beta v_{{dW}} +dW\)。用紫色版本的结果就是,所以\(v_{{dW}}\)缩小了\(1-\beta\)倍,相当于乘以\(\frac{1}{1- \beta}\),所以要用梯度下降最新值的话,\(a\)要根据\(\frac{1}{1 -\beta}\)相应变化。实际上,二者效果都不错,只会影响到学习率\(a\)的最佳值。觉得这个公式用起来没有那么自然,因为有一个影响,如果最后要调整超参数\(\beta\),就会影响到\(v_{{dW}}\)和\(v_{db}\),也许还要修改学习率\(a\),所以更喜欢左边的公式,而不是删去了\(1-\beta\)的这个公式,所以更倾向于使用左边的公式,也就是有\(1-\beta\)的这个公式,但是两个公式都将\(\beta\)设置为0.9,是超参数的常见选择,只是在这两个公式中,学习率\(a\)的调整会有所不同。

所以这就是动量梯度下降法,这个算法肯定要好于没有Momentum的梯度下降算法。

标签:descent,Gradient,梯度,db,下降,beta,动量,dW,Momentum
From: https://www.cnblogs.com/oten/p/17969182

相关文章

  • 【五期李伟平】CCF-A(AAAI'21)Game of Gradients: Mitigating Irrelevant Clients in Fe
    Nagalapatti,Lokesh,andR.Narayanam."GameofGradients:MitigatingIrrelevantClientsinFederatedLearning."(2021).  针对联邦学习中相关客户端选择(FRCS)的问题,本文提出一种可以选择具有相关数据的客户端的方法,并提出一个检测拥有特定目标标签数据的客户端......
  • 神经网络优化篇:理解mini-batch梯度下降法(Understanding mini-batch gradient descent)
    理解mini-batch梯度下降法使用batch梯度下降法时,每次迭代都需要历遍整个训练集,可以预期每次迭代成本都会下降,所以如果成本函数\(J\)是迭代次数的一个函数,它应该会随着每次迭代而减少,如果\(J\)在某次迭代中增加了,那肯定出了问题,也许的学习率太大。使用mini-batch梯度下降法,如果......
  • css: rainbow Border with gradient and radius
     <!doctypehtml><html><head><metacharset="utf-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge"><metaname="viewport"content="width=device-width,initial-sca......
  • LinearGradientBrush
    渐变方向 默认是左上角到右下角从左到右<BorderHeight="35"Width="120"><Border.Background><LinearGradientBrushEndPoint="1,0"><GradientStopColor="Yellow"Offset="0......
  • Matlab中gradient函数 梯度计算原理
    ​Gradient(F)函数求的是数值上的梯度,假设F为矩阵.Gradient算法>>x=[6,9,3,4,0;5,4,1,2,5;6,7,7,8,0;7,8,9,10,0]x=6934054125677807891......
  • 神经网络入门篇:神经网络的梯度下降(Gradient descent for neural networks)
    神经网络的梯度下降在这篇博客中,讲的是实现反向传播或者说梯度下降算法的方程组单隐层神经网络会有\(W^{[1]}\),\(b^{[1]}\),\(W^{[2]}\),\(b^{[2]}\)这些参数,还有个\(n_x\)表示输入特征的个数,\(n^{[1]}\)表示隐藏单元个数,\(n^{[2]}\)表示输出单元个数。在这个例子中,只介绍过的......
  • Approximation with Gradient Descent Method
    title:ApproximationwithGradientDescentMethodlayout:pagecategories:dataanalysisPolynomialApproximationwithGradientDescentMethodSupposewehavethefollowingdatasethw10datal.txtwhichisshowninFigure1.1.Figure1.1Plotoftrainin......
  • 梯度下降法 Method of steepest descent.
    梯度下降法是一个一阶最优化算法,通常也称为最速下降法。梯度下降法,就是利用负梯度方向来决定每次迭代的新的搜索方向,使得每次迭代能使待优化的目标函数逐步减小。梯度下降法是2范数下的最速下降法。   最速下降法的一种简单形式是:x(k+1)=x(k)-a*g(k),其中a称为学习速率,可以是较......
  • [机器学习] 3. 镜像下降 Mirror Descent 与线性耦合 Linear Coupling
    MLTheory太魔怔了!!!!!我们来考虑更快的下降算法。对\(L\)-smooth的GradientDescent,我们有两种视角来看它。一种是局部视角,梯度方向相近的点的函数值一定会下降,另一种是全局视角,用一个二次函数为整个\(f\)提供了一个lowerbound。当局部梯度的范数很大时,函数值会下降的很快;当......
  • OC CAGradientLayer 渐变色
       @property(nonatomic,strong)NSTimer*timer;/**<定时器*/@property(strong,nonatomic)CAGradientLayer*gradientLayer;/**<渐变层*/[self.layerinsertSublayer:self.gradientLayeratIndex:0];//初始化定时器self.timer=[NSTi......