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

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

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

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

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

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

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

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

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

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

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

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

    即如下图红线所示

    这正好是我们想看到的结果,为什么会这样呢?下面来分析一下。观察上图中的蓝线,我们发现竖直方向的振动大致可以抵消,即每两次上下方向的振动长度大致相等,因此如果对其去平均值,结果就会很接近 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 梯度下降算法以及学习率衰减。

    展开全文
  • 动量梯度下降算法训练BP网络 使用的主要函数如下: NEWFF——生成一个新的前向神经网络 TRAIN——对BP神经网络进行训练 SIM——对BP神经网络进行仿真
  • 训练BP神经网络:采用动量梯度下降算法训练BP网络,训练样本,matlab源码
  • Animation of 5 gradient descent methods on a surface: gradient descent (cyan), momentum (magenta),在这篇文章中,由于有大量的资源可以解释梯度下降,我想在视觉上引导您了解每种方法的工作原理。 借助我构建...
    c077faca7329e5195ef284d85b6c7d42.gif

    > Animation of 5 gradient descent methods on a surface: gradient descent (cyan), momentum (magenta),

    在这篇文章中,由于有大量的资源可以解释梯度下降,我想在视觉上引导您了解每种方法的工作原理。 借助我构建的梯度下降可视化工具,希望我可以为您提供一些独特的见解,或者至少提供许多GIF。

    我假设对在机器学习中使用梯度下降的原因和方式有基本的了解(如果没有,我推荐3Blue1Brown推荐该视频)。 我在这里的重点是比较和对比这些方法。 如果您已经熟悉所有方法,则可以滚动至底部,观看一些有趣的"赛马"。

    普通梯度下降

    让我们快速复习一下。 在机器学习的上下文中,梯度下降的目标通常是使机器学习问题的损失函数最小化。 好的算法可以快速,可靠地找到最小值(即,它不会陷入局部最小值,鞍点或平稳区域,而会求出全局最小值)。

    基本的梯度下降算法遵循这样的思想,即梯度的相反方向指向下部区域的位置。 因此,它会沿梯度的相反方向迭代地采取步骤。 对于每个参数theta,它执行以下操作:

    增量=-学习率*梯度

    θ+ =增量

    Theta是您要优化的一些参数(例如,神经网络中神经元到神经元连接的权重,线性回归中特征的系数等)。 机器学习优化设置中可能有成千上万个这样的theta。 Delta是算法每次迭代后theta的变化量; 希望随着每个这样的变化,θ逐渐接近最佳值。

    310acd0c4921fa2b1ddc5e5e07f8cbe0.gif

    > Step-by-step illustration of gradient descent algorithm.

    由于人类的感知仅限于3维,因此在我所有的可视化中,假设我们只有两个参数(或theta)需要优化,它们由图中的x和y维表示。 表面是损失函数。 我们想找到位于表面最低点的(x,y)组合。 这个问题对我们来说微不足道,因为我们可以看到整个表面。 但是,球(下降算法)却没有; 它一次只能迈出一步,并探索周围的环境,就像只用手电筒在黑暗中行走一样。

    Vannilla梯度下降法是普通的,因为它仅对梯度起作用。 以下方法对梯度进行了一些其他处理,以使其更快,更好。

    动量

    ed891c61823df1fa0457df5ccadd19bb.gif

    > Momentum descent with decay_rate = 1.0 (no decay).

    动量算法(或简称为动量)的梯度下降借鉴了物理学的思想。 想象一下,将球滚动到无摩擦碗内。 累积的动量并没有停止在底部,而是将其向前推动,并且球不断来回滚动。

    我们可以将动量的概念应用于我们的香草梯度下降算法。 在每个步骤中,除了规则的渐变以外,它还增加了上一步的运动。 在数学上,它通常表示为:

    增量=-学习率梯度+上一个增量衰变率(eq.1)

    θ+ =增量(等式2)

    如果稍微按摩一下该方程式,然后跟踪(衰减的)累积梯度总和,我会发现它更直观。 当我们稍后介绍Adam算法时,这也将使事情变得更容易。

    sum_of_gradient =梯度+ previous_sum_of_gradient *衰减率(eq.3)

    delta = -learning_rate * sum_of_gradient(等式4)

    θ+ =增量(等式5)

    (我所做的是剔除-learning_rate。要查看数学上的等价关系,您可以在等式1中用-learning_rate * sum_of_gradient代替delta以得到等式3。)

    2acaeb0e130c4b316f7943d14536179e.png

    > Step-by-step illustration of momentum descent. Watch live animation in the app. For the rest of th

    让我们考虑两种极端情况,以便更好地了解此衰减率参数。 如果衰减率为0,则它与(香草)梯度下降完全相同。 如果衰减率为1,则它会像我们在开头提到的无摩擦碗类推一样不断地来回摇摆; 你不希望出现这种情况。 通常,衰减率大约在0.8-0.9之间选择-就像表面上有一点摩擦,因此它最终会减速并停止。

    c9f8fcd88c4a1d77affceba1a43cbf28.gif

    > Momentum (magenta) vs. Gradient Descent (cyan) on a surface with a global minimum (the left well)

    那么,动量在哪些方面比香草梯度下降更好? 在左侧的比较中,您可以看到两个优点:

    · 动量只是移动得更快(因为它累积了所有动量)

    · 动量有逃避局部最小值的作用(因为动量可能将其推离局部最小值)。 同样,正如我们稍后将看到的那样,它还将更好地通过高原地区。

    AdaGrad

    自适应梯度算法(或简称AdaGrad)不是跟踪动量之类的梯度总和,而是跟踪梯度平方的总和,并使用它来适应不同方向的梯度。 方程通常用张量表示。 在这里,我将避免张量来简化语言。 对于每个维度:

    sum_of_gradient_squared =上一个sum_of_gradient_squared +渐变²

    增量= -learning_rate *梯度/ sqrt(sum_of_gradient_squared)

    θ+ = 增量

    5bef68ececb120272b417fa2d43d45fb.png

    > Step-by-step illustration of AdaGrad descent. Watch live animation in the app.

    在ML优化中,某些功能非常稀疏。 稀疏特征的平均梯度通常很小,因此以慢得多的速度训练这些特征。 解决此问题的一种方法是为每个功能设置不同的学习率,但这会很快变得混乱。

    AdaGrad使用这种想法解决了这个问题:您更新的功能越多,将来更新的功能就越少,从而为其他功能(例如稀疏功能)提供了赶超的机会。 用视觉术语来说,您更新了此功能有多少表示您在此维度中已移动了多少,并且此概念是由梯度平方的累积和所捕获的。 请注意,在上面的逐步网格图示中,如果没有重新调整缩放比例(1b),球将大部分垂直向下移动; 通过调整(1d),它会沿对角线移动。

    b4f19dfb59731a091dacfe34d0eb70b8.gif

    > AdaGrad (white) vs. gradient descent (cyan) on a terrain with a saddle point. The learning rate of

    此属性使AdaGrad(以及其他类似的基于梯度平方的方法,如RMSProp和Adam)可以更好地逃避鞍点。 AdaGrad将走一条直线,而梯度下降(或相关的动量)则采取"让我先滑下陡坡,然后再担心慢速方向"的方法。 有时,香草梯度下降可能会在两个方向的梯度均为0且在此处完全满足的鞍点处停止。

    RMSProp

    但是,AdaGrad的问题在于它的运行速度非常慢。 这是因为梯度平方的总和只会增加而不会缩小。 RMSProp(用于均方根传播)通过添加衰减因子来解决此问题。

    sum_of_gradient_squared = previous_sum_of_gradient_squared * * decay_rate +梯度²*(1- delay_rate)

    增量= -learning_rate *梯度/ sqrt(sum_of_gradient_squared)

    θ+ =增量

    更精确地,梯度平方的和实际上是梯度平方的衰减的和。 衰减率仅表示最近的梯度²很重要,而很久以前的梯度基本上已被忘记。 附带说明一下,术语"衰减率"有点用词不当。 与我们在动量中看到的衰减率不同,除衰减外,此处的衰减率还具有缩放效果:它将整个项按比例缩小(1-delay_rate)。 换句话说,如果将delay_rate设置为0.99,则除了衰减外,梯度平方的总和将为AdaGrad的sqrt(1- 0.99)= 0.1,因此对于相同的步骤,该步长约为10倍。 学习率。

    82c1d2aab33c0bd69abd5213d6c0758a.gif

    > RMSProp (green) vs AdaGrad (white). The first run just shows the balls; the second run also shows

    为了了解衰减的影响,在这种直接对比中,AdaGrad white(白色)最初与RMSProp(绿色)保持一致,这与调整后的学习速率和衰减速率一样。 但是AdaGrad的平方平方和累积起来如此之快,以至于很快就变得庞大起来(由动画中的平方大小证明)。 他们付出了沉重的代价,最终AdaGrad实际上停止了前进。 另一方面,由于衰减率的原因,RMSProp始终将正方形保持在可管理的大小范围内。 这使得RMSProp比AdaGrad更快。

    Adam

    最后但并非最不重要的一点是,Adam(自适应矩估计的缩写)兼具动量和RMSProp的优点。 Adam在经验上表现良好,因此近年来,它通常是深度学习问题的首选。

    让我们看看它是如何工作的:

    sum_of_gradient = previous_sum_of_gradient * beta1 +渐变*(1-beta1)

    sum_of_gradient_squared = previous_sum_of_gradient_squared * beta2 +渐变²*(1- beta2)

    delta = -learning_rate * sum_of_gradient / sqrt(sum_of_gradient_squared)

    θ+ =增量

    Beta1是第一时刻的衰减率,即梯度(又称为动量)之和,通常设置为0.9。 Beta 2是第二个时刻的衰减率,是梯度平方的总和,通常设置为0.999。

    49e2b21d14b3289f9a42e116d75507c2.png

    > Step-by-step illustration of Adam descent. Watch live animation in the app.

    Adam从动量获得速度,并从RMSProp获得了在不同方向适应梯度的能力。 两者的结合使其功能强大。

    结束语

    既然我们已经讨论了所有方法,那么让我们来看一下到目前为止讨论的所有下降方法的竞赛! (不可避免地会挑剔一些参数。获得品味的最佳方法是在自己周围玩耍。)

    在这个地形上,有两个小山丘阻碍了通向全球最小值的道路。 亚当是唯一能够达到全球最低要求的人。 无论采用哪种方式调整参数,至少从此起始位置开始,其他方法都无法到达该位置。 这意味着动量和自适应梯度都无法解决问题。 这实际上是两者的结合:首先,动量使亚当超出了其他所有球停止运动的局部最小值。 然后,根据梯度平方和进行的调整将其拉到一边,因为它是较少探索的方向,从而导致了最终的胜利。

    这是另一场比赛。 在此地形中,有一个围绕全局最小值的平坦区域(高原)。 通过一些参数调整,Momentum和Adam(由于其动量分量)可以使其居中,而其他方法则不能。

    总之,梯度下降是一类算法,旨在通过遵循梯度来找到函数上的最小点。 香草梯度下降正好遵循梯度(由学习率定标)。 改善梯度下降的两个常用工具是梯度的总和(第一力矩)和梯度平方的总和(第二动量)。 动量法使用具有衰减率的第一时刻来获得速度。 AdaGrad使用第二个矩不衰减来处理稀疏特征。 RMSProp使用第二矩并以衰减率从AdaGrad加速。 亚当同时使用第一刻和第二刻,通常是最佳选择。 梯度下降算法还有其他一些变体,例如Nesterov加速梯度,AdaDelta等,在本文中未涉及。

    最后,我将让您保持这种势头下降而不会衰减的趋势。 它的路径构成了一个有趣的模式。 我还没有看到实际的用途,但只是为了娱乐而已。

    试一下本文中用于生成所有可视化的可视化工具,然后看看您发现了什么!

    参考资料和相关链接:

    [1] http://www.cs.toronto.edu/~tijmen/csc321/slides/lecture_slides_lec6.pdf

    [2] https://ruder.io/optimizing-gradient-descent

    [3] https://bl.ocks.org/EmilienDupont/aaf429be5705b219aaaf8d691e27ca87

    (本文翻译自Lili Jiang的文章《A Visual Explanation of Gradient Descent Methods (Momentum, AdaGrad, RMSProp, Adam)》,参考:https://towardsdatascience.com/a-visual-explanation-of-gradient-descent-methods-momentum-adagrad-rmsprop-adam-f898b102325c)

    展开全文
  • 采用动量梯度下降算法训练 BP 网络 matlab代码
  • 动量梯度下降(momentum)

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

    简介

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

    • 小批量梯度下降法(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 指数加权平均

    指数加权平均值又称指数加权移动平均值,局部平均值,移动平均值。加权平均这个概念都很熟悉,即根据各个元素所占权重计算平均值。指数加权平均中的指数表示各个元素所占权重呈指数分布。假设存在数列 Q 1 , Q 2 , Q 3 , Q 4 . . . . . . . . . . . {Q_1,Q_2,Q_3,Q_4...........} Q1,Q2,Q3,Q4...........
    令: V 0 = 0 V_0=0 V0=0
    V 1 = β V 0 + ( 1 − β ) Q 1 V_1=βV_0+(1−β)Q_1 V1=βV0+(1β)Q1
    V 2 = β V 1 + ( 1 − β ) Q 2 V_2=βV_1+(1−β)Q_2 V2=βV1+(1β)Q2
    V 3 = β V 2 + ( 1 − β ) Q 3 V_3=βV_2+(1−β)Q_3 V3=βV2+(1β)Q3

    其中的 V 1 , V 2 , V 3 V_1,V_2,V_3 V1,V2,V3便称为该数列的指数加权平均。为了更好地理解指数两个字,我们展开 V 100 V_{100} V100中的所有V(为了方便书写,令β=0.9,则1−β=0.1)得到: V 100 = 0.1 Q 100 + 0.1 ∗ 0.9 Q 99 + 0.1 ∗ 0.92 Q 98 + 0.1 ∗ 0.93 Q 97 + . . . . . . + 0.1 ∗ 0.999 Q 1 V_{100}=0.1Q_{100}+0.1∗0.9Q_{99}+0.1∗0.92Q_{98}+0.1∗0.93Q_{97}+......+0.1∗0.999Q_1 V100=0.1Q100+0.10.9Q99+0.10.92Q98+0.10.93Q97+......+0.10.999Q1
    ​观察各项前面的系数不难得到从 Q 1 Q_1 Q1 Q 100 Q_{100} Q100各数权重呈指数分布。其权重大小如下图:
    在这里插入图片描述
    可以看出指数加权平均是有记忆平均,每一个V都包含了之前所有数据的信息。

    3 动量梯度下降法

    使用指数加权平均之后梯度代替原梯度进行参数更新。因为每个指数加权平均后的梯度含有之前梯度的信息,动量梯度下降法因此得名。
    在这里插入图片描述
    如上图所示,黑色量和绿色量沿着上下方向的分量便可以部分抵消(我们想往右边的加号走),就能减小下一步的振荡幅度。

    4 参考资料

    展开全文
  • 采用动量梯度下降算法训练 BP 网络。 训练样本定义如下: 输入矢量为 p =[-1 -2 3 1 -1 1 5 -3] 目标矢量为 t = [-1 -1 1 1] 有注释
  • 动量梯度下降法(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 指数加权平均

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

    3 动量梯度下降法

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

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

    4 参考资料

    展开全文
  • 在这篇文章中,由于有大量的资源可以解释梯度下降,因此,我想在视觉上引导您了解每种方法的工作原理。借助我构建的梯度下降可视化工具,希望我可以为您提供一些独特的见解,或者至少提供许多GIF。 这里的重点是比较...
  • 动量梯度下降法Momentum

    千次阅读 2019-03-01 16:26:36
    动量梯度下降法是对梯度下降法的一种优化算法,该方法学习率可以选择更大的值,函数的收敛速度也更快。梯度下降法就像下面这张图,通过不断的跟新w与b,从而让函数移动到红点,但是要到达最优解,需要我们不断的迭代...
  • 动量梯度下降法详解

    千次阅读 2019-04-25 16:49:54
    对梯度下降法不熟悉的可以参考梯度下降法,理解梯度下降法是理解动量梯度下降法的前提,除此之外要搞懂动量梯度下降法需要知道原始方法在实际应用中的不足之处,动量梯度下降法怎样改善了原来方法的不足以...
  • Gradient descent with momentum 动量梯度下降算法 运用指数加权平均算法,计算梯度的指数加权平均,然后用这个梯度来更新权重。 当使用梯度下降时,下降路径可能会和上图蓝色路径相似,不断震荡;所以我们不...
  • 带有动量梯度下降的优势

    千次阅读 2018-07-13 14:13:23
    普通的梯度下降算法在寻找最优解的过程中会酱紫:可以看到是存在不断抖动的使用了带动量的梯度下降,由于梯度的计算使用了指数加权平均方法,使得本次梯度的计算和之前是有关联的,这样就能抵消比如梯度在上下摆动的...
  • ken发表于:博客园链接:http://www.cnblogs.com/cloud-ken/p/7728427.html 动量梯度下降法(Momentum)另一种成本函数优化算法,优化速度一般快于标准的梯度下降算法.基本思想:计算梯度的指数加权平均数并利用该梯度...
  • 如果你要优化成本函数,函数形状如图,红点代表最小值的位置,假设你从这里(蓝色点)开始梯度下降法,如果进行梯度下降法的一次迭代,无论是batch或mini-batch下降法,都要进行如图所示的波动,慢慢摆动到最小值,...
  • 简述动量Momentum梯度下降

    万次阅读 多人点赞 2017-09-12 13:53:17
    梯度下降是机器学习中用来使模型逼近真实分布的最小偏差的优化方法。 在普通的随机梯度下降和批梯度下降当中,参数的更新是按照如下公式进行的:W = W - αdW b = b - αdb其中α是学习率,dW、db是cost function...
  • 梯度下降、随机梯度下降、小批量梯度下降动量梯度下降、Nesterov加速梯度下降法前言梯度下降法(Gradient Descent / GD)单变量线性回归模型(Univariate Linear Regression)批梯度下降法(Batch Gradient ...
  • 动量梯度下降法 Momentum

    千次阅读 2019-09-14 21:33:11
    动量梯度下降法是对梯度下降法的一种优化算法,该方法学习率可以选择更大的值,函数的收敛速度也更快。 梯度下降法就像下面这张图,通过不断的更新 w与b,从而让函数移动到红点,但是要到达最优解,需要我们不断的...
  • 第八章 深度学习中的优化 ...随机梯度下降(SGD)及其变种很可能是一般机器学习中应用最多的优化算法,特别是在深度学习中。按照数据生成分布抽取m个小批量(独立同分布的)样本,通过计算它们梯度均值,我们可以得...
  • 动量的随机梯度下降算法中参数更新公式 设动量为 ,其动量更新公式: (是本次更新之前的动量,参考上面的指数加权平均) 动量v其实是负梯度梯度方向表示上升最快的方向,反方向则表示下降最快的方向)的指数加权...
  • 还有一种算法叫做Momentum,或者叫做动量梯度下降法,运行速度几乎总是快于标准的梯度下降算法,简而言之,基本的想法就是计算梯度的指数加权平均数,并利用该梯度更新你的权重,在本笔记中,我们要一起拆解单句描述...
  • 理解梯度下降法是理解动量梯度下降法的前提,除此之外要搞懂动量梯度下降法需要知道原始方法在实际应用中的不足之处,动量梯度下降法怎样改善了原来方法的不足以及其具体的实现算法。依次从以下几个方面进行说明: ...
  • 本文概括总结了梯度下降算法的内容,给出了详细的收敛性证明,复杂度分析以及随机梯度下降法,动量梯度下降法等经典的梯度下降算法,个人原创作品
  • 这三种算法都用于反向传播的优化损失函数算法。在每轮迭代中更新一次权重w,...1. 梯度下降算法: 主要优点:梯度更新准确 (1) 如果数据集比较小,完全可以采用全数据集(Full Batch Learning)的形式,采用全数据有...
  • 梯度下降方法总结 import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D from IPython.display import Image 深度学习中,我们最常用的优化算法就是基于梯度的方式了。...
  • 应该用梯度下降,随机梯度下降,还是Adam方法?这篇文章介绍了不同优化算法之间的主要区别,以及如何选择最佳的优化方法。优化算法的功能,是通过改善训练方式,来最小化(或最大化)损失函数E(x)。模型内部有些参数,...
  • 【IT168 评论】本节尝试独立于机器学习算法, 单纯地来讲梯度下降算法 [Gradient Descent, GD], 以使梯度下降更具一般性.开始之前, 先放 2 个基本概念, 带着这 2 个认识, 在几乎不具备机器学习知识的前提下, 应该也能...
  • 梯度下降是机器学习中用来使模型逼近真实分布的最小偏差的优化方法。 在普通的随机梯度下降和批梯度下降当中,参数的更新是按照如下公式进行的: W = W - αdW b = b - αdb 其中α是学习率,dW、db是cost ...
  • 优化算法2.1 动量梯度下降法2.1.1 动量梯度下降法的代码实现2.2 RMSprop2.2.1RMSprop的代码实现2.3 Adam优化算法2.3.1 Adam优化算法的代码实现 1. 算法之前的预备知识 1.1 指数加权平均 我们先通过吴恩达老师...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 10,507
精华内容 4,202
关键字:

动量梯度下降算法