精华内容
下载资源
问答
  • 在人工智能算法中,最终的目标都是找到一个最优的模型,而如何找到这个最优模型的参数一般有两种方法:第一就是...其中最有名和最普遍的有批量梯度下降法(BGD),随机梯度下降法(SGD),小批量梯度下降法。 上面三种梯度...

    在人工智能算法中,最终的目标都是找到一个最优的模型,而如何找到这个最优模型的参数一般有两种方法:第一就是等式求解,这个只对一部分简单的模型有效果,当模型的复杂度上升和参数变多时,求解将会变的极其困难,甚至不存在等式解。所以那么这里也就有第二种方法:梯度求解,这是一种利用梯度来一步步接近最优解。其中最有名和最普遍的有批量梯度下降法(BGD),随机梯度下降法(SGD),小批量梯度下降法。

    上面三种梯度下降我就不再细讲,本质都是一样的,只不过每次更新利用的数据数量不一样,批量梯度下降每次优化时,使用的都是全部的数据集,所以计算量大,所以当数据量太大时,算法收敛的速度会很慢,但是他可以保证每次都朝着最优点的方向下降,不易受噪声的干扰。随机梯度下降则是每一次都使用一个数据来进行下降,所以他的下降过程震荡会很明显,但是收敛速度会很快,而且经实验证明他会朝着最优点收敛。小批量随机梯度下降则是结合了前两个算法的优点,收敛速度快且受噪声的影响较小。

    1. List item

    动量下降法(Momentum)
    这里重点介绍一下动量下降法,他的更新公式:
    ut = γut−1 + ηgt
    wt+1 =wt −ut.
    上面的两个公式,如果γ=0,那么这就是一个SGD,当γ>0,那么他就是动量下降法,他有以下的优点:

    • 他可以通过局部的障碍,比如局部极小点,这个原理很简单,观察上面的公式可知,当梯度方法发生改变时,由于前面动量的存在γut−1,整体更新的梯度的方向不会发生变化,还将继续朝原来的梯度方向更新,也就会跳过局部极小点。
    • 而当梯度变化的不是很大,那么ut−1约等于ut ,所以第一个公式,就将变成在这里插入图片描述从而加大了原来的梯度,从而加快收敛。
    • 还有就是他将更加平稳的通过窄小的山谷,这个可以通过平均值角度来解读,由于上下震荡,那么就会有上下的梯度分量,由于我们公式里使用到了加权平均前后的梯度,所以上下的梯度会出现抵消的状况,从而在上下震荡的情况得到极大抑制。如下图
      在这里插入图片描述

    2.Adam下降法
    他的更新公式为:
    在这里插入图片描述
    上面的1式,就是动量下降法的第一个式子,优点那就是跟前面的一样,那么这里Adam的优点就是,这里的3式和4式了,这里用到了梯度的平方,然后根据第5式,这个是对学习率的一个更新,根据3式可知,在学习过程中,随着梯度的累加,vt 将会增加,那么学习率也将逐渐的变小,从而减轻在最优点附近震荡。这和我们的直觉也是一致的,当离得最优点较远的时候,学习率应当大一些从而加快学习,而当离最优点较近时,则学习率应当更小一些,从而更好的找到最优点。在这里插入图片描述

    展开全文
  • 动量梯度下降

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

     

     

     

     

     

     

     

     

     

     

     

     

     

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

     

     

     

    展开全文
  • 动量梯度下降法是对梯度下降法的一种优化算法,该方法学习率可以选择更大的值,函数的收敛速度也更快。 梯度下降法就像下面这张图,通过不断的更新 w与b,从而让函数移动到红点,但是要到达最优解,需要我们不断的...

    动量梯度下降法是对梯度下降法的一种优化算法,该方法学习率可以选择更大的值,函数的收敛速度也更快。
    梯度下降法就像下面这张图,通过不断的更新 w与b,从而让函数移动到红点,但是要到达最优解,需要我们不断的迭代或者调整学习率来达到最后到达最优解的目的。
    但是调大学习率会导致每一次迭代的步长过大,也就是摆动过大,误差较大。调小学利率会让迭代次数增加。而增加迭代次数则明显的增加了训练时间。
    动量梯度下降法不但能使用较大的学习率,其迭代次数也较少
    在这里插入图片描述

    一、指数加权和

    在理解动量梯度下降法之前,我们首先要了解指数加权平均数,这是动量梯度下降法的核心。

    那么,什么是指数加权平均数呢,我们这里举例说明。

    下面是一个同学的某一科的考试成绩: 平时测验 80, 期中 90, 期末 95 学校规定的科目成绩的计算方式是: 平时测验占 20%; 期中成绩占 30%; 期末成绩占 50%; 这里,每个成绩所占的比重叫做权数或权重。
    那么, 加权平均值 = 80 * 20% + 90 * 30% + 95 * 50% = 90.5 ,算数平均值 = (80 + 90 + 95)/3 = 88.3

    我们再看一个例子,这是一个城市每天的温度
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    接下来我们详细讲解下这个公式,首先,我们把公式展开:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    那么,我们为什么要使用加权平均数呢?

    其实,在训练过程中,数据量是很大的,假设训练样本有100w,即使mini_batch取100,其计算平均值消耗的内存和时间需要的代价都很大,而对于加权平均数,如果β取值0.9那么只需要计算10个数即可计算其平均值,大大节约了内存,计算效率也极大的提高了。

    二、动量梯度下降法

    普通的梯度下降法在更新参数时

    W = W−αdW
    b = b − αdb
    α :学习率
    dW:损失函数对 W 的偏导数
    db:损失函数对 b 的偏导数
    

    动量梯度下降的参数更新公式
    在这里插入图片描述
    我们可以看出,在这个公式中,并不是直接减去 αdW和αdb,而是计算出了一个vdW和vdb。这又是什么呢?

    这就用到了指数加权平均的知识点。也就是上图中的前两行公式。
    使用这个公式,可以将之前的 dW 和 db 都联系起来,不再是每一次梯度都是独立的情况
    其中 β 是可以自行设置的超参数,一般情况下默认为0.9(也可以设置为其他数值)。
    β代表了现在的 vdW 和 vdb 与之前的1 / (1 - β)个 vdW 和 vdb 有关。
    0.9就是现在的 vdW 和 vdb 是平均了之前10天的 vdW 和 vdb 的结果。

    此时的梯度不再只是我现在的数据的梯度,而是有一定权重的之前的梯度

    那么,为什么乘加权平均数就可以加快收敛的速度呢,我们再看下这张图

    在这里插入图片描述
    正常情况下(图中蓝色线段),函数会在纵轴上不停的波动,但实际上纵轴上的这些波动的平均值是接近于0的,我们更希望其波动较小,在横轴上能快速前进。
    动量梯度就是通过计算其加权平均值,把这些在纵轴上多余的波动去除,从而让函数尽可能快的朝着横轴移动,因此其收敛的速度也会很快

    举个例子,如果你站在一个地方不动,让你立刻向后转齐步走,你可以迅速向后转然后就向相反的方向走了起来,批梯度下降和随机梯度下降就是这样,某一时刻的梯度只与这一时刻有关,改变方向可以做到立刻就变。
    而如果你正在按照某个速度向前跑,再让你立刻向后转,可以想象得到吧,此时你无法立刻将速度降为0然后改变方向,你由于之前的速度的作用,有可能会慢慢减速然后转一个弯。

    动量梯度下降是同理的,每一次梯度下降都会有一个之前的速度的作用,如果我这次的方向与之前相同,则会因为之前的速度继续加速;如果这次的方向与之前相反,则会由于之前存在速度的作用不会产生一个急转弯,而且将减速的过程尽可能地缩小了

    这就解决了文中上图的那个在普通梯度下降中存在的下降路线折来折去浪费时间的问题。

    与Momentum的机制类似的,还有一种叫做RMSprop的算法,他们俩的效果也是类似,都解决了相同的问题,使梯度下降时的折返情况减轻,从而加快训练速度。因为下降的路线更接近同一个方向,因此也可以将学习率增大来加快训练速度。

    Momentum和RMSprop的结合,产生了一种权威算法叫做Adam,Adam结合了前两者的计算方式形成自己的优化方法,基本适用于所有的模型和网络结构。

    参考:
    【1】https://terrifyzhao.github.io/2018/02/16/动量梯度下降法Momentum.html
    【2】https://blog.csdn.net/yinruiyang94/article/details/77944338

    展开全文
  • 动量梯度下降法(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 参考资料

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

    千次阅读 2019-04-25 16:49:54
    对梯度下降法不熟悉的可以参考梯度下降法,理解梯度下降法是理解动量梯度下降法的前提,除此之外要搞懂动量梯度下降法需要知道原始方法在实际应用中的不足之处,动量梯度下降法怎样改善了原来方法的不足以...
  • 动量梯度下降算法

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

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

    千次阅读 2020-08-15 12:01:56
    对梯度下降法不熟悉的可以参考梯度下降法,理解梯度下降法是理解动量梯度下降法的前提,除此之外要搞懂动量梯度下降法需要知道原始方法在实际应用中的不足之处,动量梯度下降法怎样改善了原来方法的不足以及其具体的...
  • %例1 采用动量梯度下降算法训练 BP 网络。
  • 对梯度下降法不熟悉的可以参考梯度下降法,理解梯度下降法是理解动量梯度下降法的前提,除此之外要搞懂动量梯度下降法需要知道原始方法在实际应用中的不足之处,动量梯度下降法怎样改善了原来方法的不足以及其具体的...
  • 梯度下降、随机梯度下降、小批量梯度下降动量梯度下降、Nesterov加速梯度下降法前言梯度下降法(Gradient Descent / GD)单变量线性回归模型(Univariate Linear Regression)批梯度下降法(Batch Gradient ...
  • 简述动量梯度下降

    2018-11-25 12:36:11
    梯度下降是机器学习中用来使模型逼近真实分布...在普通的随机梯度下降和批梯度下降当中,参数的更新是按照如下公式进行的: W = W - αdW  b = b - αdb 其中α是学习率,dW、db是cost function对w和b的偏导数。...
  • 基于动量的梯度下降算法 基于动量的梯度下降算法,较于传统的梯度下降算法速度更快,可以实现加速收敛的效果。
  • 动量梯度下降法Momentum

    千次阅读 2019-03-01 16:26:36
    动量梯度下降法是对梯度下降法的一种优化算法,该方法学习率可以选择更大的值,函数的收敛速度也更快。梯度下降法就像下面这张图,通过不断的跟新w与b,从而让函数移动到红点,但是要到达最优解,需要我们不断的迭代...
  • 动量梯度下降法: Gradient Descent With Momentum 1.指数加权移动平均: 2.指数加权平均的偏差修正: 如图所示:紫色图为这些点集的加权平均,但很显然在刚开始的时候,加权平均不能很好估测数据。所以...
  • 采用动量梯度下降算法训练 BP 网络 matlab代码
  • 2-5 动量梯度下降

    2019-09-23 12:17:50
    动量梯度下降法(Gradient descent with Momentum) 还有一种算法叫做 Momentum,或者叫做动量梯度下降法,运行速度几乎总是快于标准的梯度下降算法,简而言之,基本的想法就是计算梯度的指数加权平均数,并利用该...
  • 【翻译自 : Gradient Descent With Nesterov Momentum From Scratch】 【说明:Jason BrownleePhD大神的文章个人很喜欢,所以闲暇时间里会做一点翻译和学习实践的工作,这里是相应工作的实践记录,希望...动量是...
  • 动量Momentum梯度下降

    2019-08-09 12:09:30
    梯度下降是机器学习中用来使模型逼近真实分布的最小偏差的优化方法。 在普通的随机梯度下降和批梯度下降当中,参数的更新是按照如下公式进行的: W = W - αdW b = b - αdb 其中α是学习率,dW、db是cost ...
  • BP 神经网络基础数学模型
  • 动量梯度下降法(Gradient descent with Momentum ) 动量梯度下降法(Gradient descent with Momentum )
  • momentum(动量梯度下降法)

    千次阅读 2019-09-10 16:48:35
    momentum(动量梯度下降法) momentum是模拟物理里动量的概念,积累之前的动量来替代真正的梯度。公式如下: 然而网上更多的是另外一种版本,即去掉(1-β),相当于上一版本上本次梯度的影响权值*1/(1-β),...
  • 应该用梯度下降,随机梯度下降,还是Adam方法?这篇文章介绍了不同优化算法之间的主要区别,以及如何选择最佳的优化方法。优化算法的功能,是通过改善训练方式,来最小化(或最大化)损失函数E(x)。模型内部有些参数,...
  • 动量梯度下降算法训练BP网络 使用的主要函数如下: NEWFF——生成一个新的前向神经网络 TRAIN——对BP神经网络进行训练 SIM——对BP神经网络进行仿真
  •  动量梯度下降也是一种神经网络的优化方法,我们知道在梯度下降的过程中,虽然损失的整体趋势是越来越接近0,但过程往往是非常曲折的,如下图所示:  特别是在使用mini-batch后,由于单次参与训练的图片少了...
  • 2.6 动量梯度下降

    2019-02-12 22:02:17

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 11,886
精华内容 4,754
关键字:

动量下降