精华内容
下载资源
问答
  • 动量梯度下降算法

    2020-03-09 01:35:03
    上篇文章介绍了指数加权平均,这篇文章介绍在此基础上介绍一下动量梯度下降算法。 所谓动量梯度下降算法,简言之就计算梯度的指数加权平均,然后使用这个梯度来更新权重,下面我们来详细解释这句话。 我们在使用...

    上篇文章介绍了指数加权平均,这篇文章介绍在此基础上介绍一下动量梯度下降算法。

    所谓动量梯度下降算法,简言之就计算梯度的指数加权平均,然后使用这个梯度来更新权重,下面我们来详细解释这句话。

    我们在使用梯度下降算法更新权重时,希望损失函数能减小直到最优值。我们可以在一副等高线图中,画出损失函数随着迭代次数增加而减小的路径,即如下图所示:

    图中红点为最优点,蓝线为损失函数的减小路径,从图中左侧出发,逐渐靠近最优点。不过我们可以发现,这条路径看起来十分曲折,虽然整体趋势是向右的,但在竖直方向有太多波动,这直接造成了两个负面影响:

    1. 增加了梯度下降的次数,增加了训练时间
    2. 无法使用较大的学习率

    如果使用了较大的学习率,可能会出现下图中紫线的情况:

    即虽然增大了向右的步伐,同时也增大了上下的步伐,导致损失函数值反而越来越大,因此为了避免振荡过大,我们只能选择较小的学习率。

    为了使其步伐能在水平方向更大,而在竖直方向更小,可以使用之前提到的指数滑动平均。

    我们说过,运用了指数滑动平均后,vtv_t 相当于粗略计算了前 11β\frac{1}{1 - \beta} 个数据的平均值,如果我们对导数进行指数滑动平均操作,就会有以下结果:

    • 竖直方向的振动几乎消失
    • 水平方向的步伐逐渐加大

    即如下图红线所示

    这正好是我们想看到的结果,为什么会这样呢?下面来分析一下。观察上图中的蓝线,我们发现竖直方向的振动大致可以抵消,即每两次上下方向的振动长度大致相等,因此如果对其去平均值,结果就会很接近 0,这就是“竖直方向的振动几乎消失”的原因,而蓝线水平方向的路径都是向右的,对其取平均值不会使其减小,而是随着已经行进的路径增多而变大,这就是“水平方向的步伐逐渐加大”的原因。综上,得到上图中的红线。

    算法描述如下:

    第 t 次迭代:
    	在当前的 mini-batch 上计算 dW, db
    	v_dW = β * v_dW + (1 - β) * dW
    	v_db = β * v_db + (1 - β) * db
    	W -= α * v_dW, b -= α * v_db
    

    上面的描述中,α\alphaβ\beta 都是需要调整的超参数,β\beta 通常会取 0.9 左右。

    以上就是对动量梯度下降算法的简单介绍,它几乎总是要优于不适用动量的梯度下降算法,不过除此外,还有一些其他的方法也能加速你的训练速度,接下来几篇文章会谈谈 RMSprop 和 Adam 梯度下降算法以及学习率衰减。

    展开全文
  • 动量梯度下降法

    2020-06-02 09:46:37
    动量梯度下降法(Gradient descent with Momentum)

     

     

     

     

     

     

     

     

     

     

     

     

     

    动量梯度下降法(Gradient descent with Momentum)

     

     

     

    展开全文
  • 动量梯度下降法(gradient descent with momentum)

    万次阅读 多人点赞 2018-10-28 10:57:35
    理解梯度下降法是理解动量梯度下降法的前提,除此之外要搞懂动量梯度下降法需要知道原始方法在实际应用中的不足之处,动量梯度下降法怎样改善了原来方法的不足以及其具体的实现算法。依次从以下几个方面进行说明: ...

    简介

    动量梯度下降法是对梯度下降法的改良版本,通常来说优化效果好于梯度下降法。对梯度下降法不熟悉的可以参考梯度下降法,理解梯度下降法是理解动量梯度下降法的前提,除此之外要搞懂动量梯度下降法需要知道原始方法在实际应用中的不足之处,动量梯度下降法怎样改善了原来方法的不足以及其具体的实现算法。依次从以下几个方面进行说明:

    • 小批量梯度下降法(mini-batch gradient descent)
    • 指数加权平均(exponential weight averages)
    • 动量梯度下降法(gradient descent with momentum)

    总结一下他们之间的关系:每次梯度下降都遍历整个数据集会耗费大量计算能力,而mini-batch梯度下降法通过从数据集抽取小批量的数据进行小批度梯度下降解决了这一问题。使用mini-batch会产生下降过程中左右振荡的现象。而动量梯度下降法通过减小振荡对算法进行优化。动量梯度下降法的核心便是对一系列梯度进行指数加权平均,下面时详细介绍。


    1 mini-batch梯度下降法

    在实际应用中,由于样本数量庞大,训练数据上百万是很常见的事。如果每执行一次梯度下降就遍历整个训练样本将会耗费大量的计算机资源。在所有样本中随机抽取一部分(mini-batch)样本,抽取的样本的分布规律与原样本基本相同,事实发现,实际训练中使用mini-batch梯度下降法可以大大加快训练速度。

    1.1 实现方法

    mini-batch梯度下降法的思想很简单,将样本总体分成多个mini-batch。例如100万的数据,分成10000份,每份包含100个数据的mini-batch-1到mini-batch-10000,每次梯度下降使用其中一个mini-batch进行训练,除此之外和梯度下降法没有任何区别。

    1.2 直观体验

    区别
    由于mini-batch每次仅使用数据集中的一部分进行梯度下降,所以每次下降并不是严格按照朝最小方向下降,但是总体下降趋势是朝着最小方向,上图可以明显看出两者之间的区别。

    对右边的图来说,动量梯度下降法并没有什么用处。梯度批量下降法主要是针对mini-batch梯度下降法进行优化,优化之后左右的摆动减小,从而提高效率。优化前后的对比如下图,可见动量梯度下降法的摆动明显减弱。
    momentum

    2 指数加权平均

    指数加权平均值又称指数加权移动平均值,局部平均值,移动平均值。加权平均这个概念都很熟悉,即根据各个元素所占权重计算平均值。指数加权平均中的指数表示各个元素所占权重呈指数分布。假设存在数列{Q1,Q2,Q3,Q4...........}\left \{ Q_1,Q_2,Q_3,Q_4........... \right \}令:V0=0V_0=0V1=βV0+(1β)Q1V_1=\beta V_0 + (1-\beta )Q_1V2=βV1+(1β)Q2V_2=\beta V_1 + (1-\beta )Q_2V3=βV2+(1β)Q3V_3=\beta V_2 + (1-\beta )Q_3 .. .. ..其中的V1,V2,V3....V_1,V_2,V_3....便称为该数列的指数加权平均。为了更好地理解指数两个字,我们展开V100V_{100}中的所有VV(为了方便书写,令β=0.9,1β=0.1\beta = 0.9,则 1- \beta =0.1)得到:V100=0.1Q100+0.10.9Q99+0.10.92Q98+0.10.93Q97+......+0.10.999Q1V_{100} = 0.1Q_{100} + 0.1*0.9Q_{99} + 0.1*0.9^2Q_{98} + 0.1*0.9^3Q_{97} + ......+0.1*0.9^{99}Q_1观察各项前面的系数不难得到从Q1Q100Q_1到Q_{100}各数权重呈指数分布。其权重大小如下图:
    在这里插入图片描述
    可以看出指数加权平均是有记忆平均,每一个VV都包含了之前所有数据的信息。

    3 动量梯度下降法

    回顾一下梯度下降法每次的参数更新公式:W:=WαWW := W - \alpha \nabla Wb:=bαbb := b - \alpha \nabla b可以看到,每次更新仅与当前梯度值相关,并不涉及之前的梯度。而动量梯度下降法则对各个mini-batch求得的梯度W,b\nabla W,\nabla b使用指数加权平均得到 VwVbV_{\nabla w },V_{\nabla b }。并使用新的参数更新之前的参数。

    例如,在100次梯度下降中求得的梯度序列为:{W1,W2,W3.........W99,W100}\left \{ \nabla W_1 , \nabla W_2,\nabla W_3.........\nabla W_{99},\nabla W_{100} \right\}则其对应的动量梯度分别为:VW0=0 V_{\nabla W_0} = 0VW1=βVW0+(1β)W1 V_{\nabla W_1} = \beta V_{\nabla W_0} + (1-\beta)\nabla W_1VW2=βVW1+(1β)W2 V_{\nabla W_2} = \beta V_{\nabla W_1} + (1-\beta)\nabla W_2......VW100=βVW99+(1β)W100 V_{\nabla W_{100}} = \beta V_{\nabla W_{99}} + (1-\beta)\nabla W_{100}使用指数加权平均之后梯度代替原梯度进行参数更新。因为每个指数加权平均后的梯度含有之前梯度的信息,动量梯度下降法因此得名。

    4 参考资料

    展开全文
  • 理解梯度下降法是理解动量梯度下降法的前提,除此之外要搞懂动量梯度下降法需要知道原始方法在实际应用中的不足之处,动量梯度下降法怎样改善了原来方法的不足以及其具体的实现算法。依次从以下几个方面进行说明: ...

    简介

    动量梯度下降法是对梯度下降法的改良版本,通常来说优化效果好于梯度下降法。对梯度下降法不熟悉的可以参考梯度下降法,理解梯度下降法是理解动量梯度下降法的前提,除此之外要搞懂动量梯度下降法需要知道原始方法在实际应用中的不足之处,动量梯度下降法怎样改善了原来方法的不足以及其具体的实现算法。依次从以下几个方面进行说明:

    • 小批量梯度下降法(mini-batch gradient descent)
    • 指数加权平均(exponential weight averages)
    • 动量梯度下降法(gradient descent with momentum)

    总结一下他们之间的关系:每次梯度下降都遍历整个数据集会耗费大量计算能力,而mini-batch梯度下降法通过从数据集抽取小批量的数据进行小批度梯度下降解决了这一问题。使用mini-batch会产生下降过程中左右振荡的现象。而动量梯度下降法通过减小振荡对算法进行优化。动量梯度下降法的核心便是对一系列梯度进行指数加权平均,下面时详细介绍。

    mini-batch梯度下降法

    在实际应用中,由于样本数量庞大,训练数据上百万是很常见的事。如果每执行一次梯度下降就遍历整个训练样本将会耗费大量的计算机资源。在所有样本中随机抽取一部分(mini-batch)样本,抽取的样本的分布规律与原样本基本相同,事实发现,实际训练中使用mini-batch梯度下降法可以大大加快训练速度。

    • 实现方法

    mini-batch梯度下降法的思想很简单,将样本总体分成多个mini-batch。例如100万的数据,分成10000份,每份包含100个数据的mini-batch-1到mini-batch-10000,每次梯度下降使用其中一个mini-batch进行训练,除此之外和梯度下降法没有任何区别。

    • 直观体验

    38356f5d7b19531339e9179f8ffb817f.png

    区别

    由于mini-batch每次仅使用数据集中的一部分进行梯度下降,所以每次下降并不是严格按照朝最小方向下降,但是总体下降趋势是朝着最小方向,上图可以明显看出两者之间的区别。

    对右边的图来说,动量梯度下降法并没有什么用处。梯度批量下降法主要是针对mini-batch梯度下降法进行优化,优化之后左右的摆动减小,从而提高效率。优化前后的对比如下图,可见动量梯度下降法的摆动明显减弱。

    80ed79f287f7abb8018e9a0fe1e547d7.png

    指数加权平均

    指数加权平均值又称指数加权移动平均值,局部平均值,移动平均值。加权平均这个概念都很熟悉,即根据各个元素所占权重计算平均值。指数加权平均中的指数表示各个元素所占权重呈指数分布。

    假设存在数列{ Q1 , Q2 , Q3 , Q4 . . . . . . . . . . . }

    令: V0 = 0

    V1 = βV0 + ( 1 − β ) Q1

    V2 = βV1 + ( 1 − β ) Q2

    V3 = βV2 + ( 1 − β ) Q3​

    . . . . . . . . .

    其中的 V1 , V2 , V3 . . . . 便称为该数列的指数加权平均。为了更好地理解指数两个字,我们展开 V100​中的所有V(为了方便书写,令 β = 0.9 , 则 1 − β = 0.1 )得到:

    V100​=0.1Q100 + 0.1∗0.9Q99 ​+ 0.1∗0.9∗0.9Q98​ + 0.1∗0.9∗0.9∗0.9Q97​+......+0.1∗0.9...∗0.9Q1​

    观察各项前面的系数不难得到从 Q1 到 Q100​各数权重呈指数分布。其权重大小如下图:

    4e12b692c862e4679acda8137a4cba22.png

    可以看出指数加权平均是有记忆平均,每一个V都包含了之前所有数据的信息。

    动量梯度下降法

    回顾一下梯度下降法每次的参数更新公式:

    W : = W − α dW

    b : = b − α db

    可以看到,每次更新仅与当前梯度值相关,并不涉及之前的梯度。而动量梯度下降法则对各个mini-batch求得的梯度dW,db使用指数加权平均得到 VdW , Vdb。并使用新的参数更新之前的参数。

    例如,在100次梯度下降中求得的梯度序列为:

    { dW1 , dW2 , dW3 . . . . . . . . . dW99 , dW100 }

    则其对应的动量梯度分别为:

    VdW0 = 0

    VdW1 = βVdW0 + (1−β)dW1

    VdW2​​ = βVdW1​​+(1−β)dW2​

    . . . . . . . . .

    VdW100​​=βVdW99​​+(1−β)dW100​

    使用指数加权平均之后梯度代替原梯度进行参数更新。因为每个指数加权平均后的梯度含有之前梯度的信息,动量梯度下降法因此得名。

    用处:

    当本次梯度下降方向与上次更新量的方向相同时,上次的更新量能够对本次的搜索起到一个正向加速的作用。

    当本次梯度下降方向与上次更新量的方向相反时,上次的更新量能够对本次的搜索起到一个减速的作用。

    既减少震荡,又大方向不变(本次梯度下降方向),从而保证了效率和正确的收敛。

    展开全文
  • %例1 采用动量梯度下降算法训练 BP 网络。
  • 采用动量梯度下降算法训练 BP 网络 matlab代码
  • 动量梯度下降法详解

    千次阅读 2019-04-25 16:49:54
    对梯度下降法不熟悉的可以参考梯度下降法,理解梯度下降法是理解动量梯度下降法的前提,除此之外要搞懂动量梯度下降法需要知道原始方法在实际应用中的不足之处,动量梯度下降法怎样改善了原来方法的不足以...
  • 动量梯度下降法是对梯度下降法的一种优化算法,该方法学习率可以选择更大的值,函数的收敛速度也更快。 梯度下降法就像下面这张图,通过不断的更新 w与b,从而让函数移动到红点,但是要到达最优解,需要我们不断的...
  • 动量梯度下降法: Gradient Descent With Momentum 1.指数加权移动平均: 2.指数加权平均的偏差修正: 如图所示:紫色图为这些点集的加权平均,但很显然在刚开始的时候,加权平均不能很好估测数据。所以...
  • 2.2.3 动量梯度下降法

    千次阅读 2018-04-23 22:24:51
    动量梯度下降法 我们现在介绍一下Momentum梯度下降法,运行速度快于标准的梯度下降法。其基本思想就是计算梯度的指数加权平均数,并利用该梯度来更新权重。 如图所示,图中蓝色的代表batch或者mini-batch的梯度...
  • 2-5 动量梯度下降法

    2019-09-23 12:17:50
    还有一种算法叫做 Momentum,或者叫做动量梯度下降法,运行速度几乎总是快于标准的梯度下降算法,简而言之,基本的想法就是计算梯度的指数加权平均数,并利用该梯度更新你的权重。 如果你要优化成本函数,函数形状...
  • 动量梯度下降算法训练BP网络 使用的主要函数如下: NEWFF——生成一个新的前向神经网络 TRAIN——对BP神经网络进行训练 SIM——对BP神经网络进行仿真
  • 采用动量梯度下降算法训练 BP 网络。 训练样本定义如下: 输入矢量为 p =[-1 -2 3 1 -1 1 5 -3] 目标矢量为 t = [-1 -1 1 1] 有注释
  • 动量梯度下降法Momentum

    千次阅读 2019-03-01 16:26:36
    动量梯度下降法是对梯度下降法的一种优化算法,该方法学习率可以选择更大的值,函数的收敛速度也更快。梯度下降法就像下面这张图,通过不断的跟新w与b,从而让函数移动到红点,但是要到达最优解,需要我们不断的迭代...
  • 动量梯度下降法(Gradient descent with Momentum ) 动量梯度下降法(Gradient descent with Momentum )
  • Mini_batch梯度下降法,动量梯度下降法,RMSprop,以及Adam优化算法总结 (根据吴恩达老师深度学习课程笔记总结,如有不正确的地方,麻烦指出) 1.Mini_batch梯度下降法 1.1.定义的理解: 对于一个有500万个数据的...
  • Gradient descent with momentum 动量梯度下降算法 运用指数加权平均算法,计算梯度的指数加权平均,然后用这个梯度来更新权重。 当使用梯度下降时,下降路径可能会和上图蓝色路径相似,不断震荡;所以我们不...
  • momentum(动量梯度下降法

    千次阅读 2019-09-10 16:48:35
    momentum(动量梯度下降法) momentum是模拟物理里动量的概念,积累之前的动量来替代真正的梯度。公式如下: 然而网上更多的是另外一种版本,即去掉(1-β),相当于上一版本上本次梯度的影响权值*1/(1-β),...
  • 还有一种算法叫做Momentum,或者叫做动量梯度下降法,运行速度几乎总是快于标准的梯度下降算法,简而言之,基本的想法就是计算梯度的指数加权平均数,并利用该梯度更新你的权重,在本笔记中,我们要一起拆解单句描述...
  • 指数加权平均的偏差修正(bias correction)动量梯度下降法(Momentum gradient descent) 指数加权平均(Exponentially Weighted averages) 上图的vt就是加权平均数,11−β表示其代表多少天的加权平均数上图的v_{t}...
  • 如图: 对于蓝色的情况,由于梯度下降时来回摆动,导致收敛很慢 ...动量梯度下降法(Momentum) 此处用了指数加权平均的更新方法 因为纵轴有许多摆动,在求平均的时候都可以被抵消,最后...
  • 还有一种算法叫做Momentum,或者叫做动量梯度下降法,运行速度几乎总是快于标准的梯度下降算法,简而言之,基本的想法就是计算梯度的指数加权平均数,并利用该梯度更新你的权重,在本视频中,我们呢要一起拆解单句...
  • 2.6 动量梯度下降法

    2019-02-12 22:02:17
  • 梯度下降、随机梯度下降、小批量梯度下降、动量梯度下降、Nesterov加速梯度下降法前言梯度下降法(Gradient Descent / GD)单变量线性回归模型(Univariate Linear Regression)批梯度下降法(Batch Gradient ...
  • 如果你要优化成本函数,函数形状如图,红点代表最小值的位置,假设你从这里(蓝色点)开始梯度下降法,如果进行梯度下降法的一次迭代,无论是batch或mini-batch下降法,都要进行如图所示的波动,慢慢摆动到最小值,...
  • 优化算法-2:动量梯度下降法

    千次阅读 2018-03-29 14:42:57
    动量梯度下降法下降速度几乎总是优于标准梯度下降法,基本思想就是计算梯度指数加权平均,并利用该梯度更新你的权重。 当我们采用标准梯度下降法的时候,我们可以看到梯度的来回波动减少了梯度下降法的速度,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,091
精华内容 3,636
关键字:

动量梯度下降法