动量梯度下降法(gradient descent with momentum)

news/2024/10/21 10:19:28/

简介

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

  • 小批量梯度下降法(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 参考资料

  • 吴恩达神经网络网易公开课

http://www.ppmy.cn/news/342649.html

相关文章

VUE+Layui 输入框、下拉选择框、复选框、开关、文本域 数据回显

一、说明二、效果三、代码四、如果失效了 一、说明 用了Layui的界面,加上vue的指令:v-model,v-bind,v-for 等 1、注意:开关按钮如果是关闭状态:status字段是不会在表单提交字段中的,打开了就是s…

【每天一个java设计模式(六)】 - 适配器模式

当某种业务功能已经实现,但它们与当前系统的接口不兼容,如果重新开发成本又很高,这时用适配器模式能很好地解决这些问题。 适配器模式是作为两个不兼容的接口之间的桥梁,属于结构型模式,它结合了两个独立接口的功能。…

HTML期末大作业 ~ 马尔代夫旅游网页设计作业成品 ~ HTML+CSS+JS网页设计期末课程大作业 ~ web前端开发技术 ~ web课程设计网页规划与设计

HTML期末大作业 ~ 大学生旅游官网网页设计作业成品 ~ HTMLCSSJS网页设计期末课程大作业 ~ web前端开发技术 ~ web课程设计网页规划与设计~ 临近期末, 你还在为HTML网页设计结课作业,老师的作业要求感到头大?HTML网页作业无从下手?网页要求的总数量太多&…

深度学习入门:一句话告诉你什么是神经网络(CNN,RNN,DNN)

神经网络技术起源于上世纪五、六十年代,当时叫感知机(perceptron),拥有输入层、输出层和一个隐含层。输入的特征向量通过隐含层变换达到输出层,在输出层得到分类结果。早期感知机的推动者是Rosenblatt。(扯…

乐phone C101、W100、 W101、 S1 刷机一站式解决

注意: 1.本教程刷机过程需要在Windows操作系统环境下进行。 2.本教程只针对乐phone C101、W100、 W101、 S1。 3.请确认自己的机型下载对应的刷机文件。 4.刷机有风险,务必要小心;因刷机造成的任何问题,本人不承担任何责任。 5.因…

SA实战 ·《SpringCloud Alibaba实战》第10章-服务容错:项目整合Sentinel实现限流与容错

作者:冰河 星球:http://m6z.cn/6aeFbs 博客:https://binghe.gitcode.host 文章汇总:https://binghe.gitcode.host/md/all/all.html 大家好,我是冰河~~ 一不小心《SpringCloud Alibaba实战》专栏都更新到第10章了,再不上车就跟不上了,小伙伴们快跟上啊! 注意:本项目完…

手机通话录音删除了怎么恢复

手机是我们日常生活中必不可少的工具。我们常常使用手机进行通话,因此手机通话录音功能也变得越来越重要。但是有时,由于诸如误操作、系统故障或其他问题,手机中的通话录音可能会被误删。那么,如果发生这种情况,我们该…

Mysql服务器断电,数据库表打不开解决方案

现象:服务器突然断电,数据库重启后现场服务启动报错,提示某某表找不到 doesn’t exist,命令行链接数据库后,使用show databases查看数据库存在,进一步use后,show tables所有的表也存在&#xff…