原创 【零基础】神经网络优化之动量梯度下降

2019-10-29 11:25 2283 33 2 分类: 机器人/ AI 文集: AI

一、序言

  动量梯度下降也是一种神经网络的优化方法,我们知道在梯度下降的过程中,虽然损失的整体趋势是越来越接近0,但过程往往是非常曲折的,如下图所示:

 

   特别是在使用mini-batch后,由于单次参与训练的图片少了,这种“曲折”被放大了好几倍。前面我们介绍过L2和dropout,它们要解决的也是“曲折”的问题,不过这种曲折指的是求得的W和b过于拟合训练数据,导致求解曲线很曲折。动量梯度下降所解决的曲折指的是求得的dw、db偏离正常值导致成本时高时低,求得最优W和b的过程变慢。

二、指数加权平均

  动量梯度下降是相较于普通的梯度下降而言,这里所谓的动量其实说的是动量效应,最早是在经济学领域提出的:

  “指股票的收益率有延续原来的运动方向的趋势”

  其实换个名字叫“惯性效应”更好理解,即事物的发展趋势是有惯性的。

  那应用到神经网络的优化中,就是在计算dw、db时参考下之前的计算结果,具体操作起来的方法就叫“指数加权平均”,示例如下:

  dw0 = 1

  dw1 = 1.2,指数加权平均后:dw1 = 0.9*dw0 + 0.1*dw1 = 1.05

  dw2 = 1.5,指数加权平均后:dw2 = 0.9*dw1 + 0.1*dw2 = 1.095

  dw3 = 1.8,指数加权平均后:dw3 = 0.9*dw2 + 0.1*dw3 = 1.1655

  上面的示例就是指数加权平均,看起来似乎只是将dw变化的幅度减小了,下面我们模拟一次曲折

  dw4 = -1,指数加权平均后:dw4 = 0.9*dw3 + 0.1*dw4 = 0.94895

  在dw4的优化中,原本w应该是减去1的,但现在是加上了0.94895,即w还是沿着前面dw0至3的路径在优化,有效地降低了dw4的影响。这种使用指数加权平均计算dw并更新w的方式就是动量梯度下降。

三、动量梯度下降的实现

  我们可以用一个公式来描述指数加权平均:

  vDW1 = beta*vDW0 + (1-beta)*dw1

  vDb1 = beta*vDb0 + (1-beta)*db1

  我们使用vDW和vDb来记录指数加权平均值,beta值由我们设定,一般是0.9(这个数值代表了历史数据对当前值的影响,可以自己调整看看效果不一定就一定要0.9)。计算出指数加权平均值后,我们再将这个值应用到梯度下降中即是所谓的“动量梯度下降”了。

  W = W - learning_rate*vDw

  b = b - learning_rate*vDb

四、回顾

  本节就简单说了下动量梯度下降,可以对比看下应用前和应用后的效果:

应用前

应用后:

  可以看到使用动量梯度下降后,损失是有一点收窄的效果,虽然最终预测准确率不一定就边得更好了。具体实现代码请关注公众号“零基础爱学习”回复AI12获取。

作者: 布兰姥爷, 来源:面包板社区

链接: https://mbb.eet-china.com/blog/uid-me-3887969.html

版权声明:本文为博主原创,未经本人允许,禁止转载!

文章评论1条评论)

登录后参与讨论

curton 2019-10-31 19:09

学习了
相关推荐阅读
布兰姥爷 2023-04-21 23:07
跟姥爷深度学习4 从数学计算看神经网络
一、前言我们前面简单的做了一个气温预测,经过反复调试,效果还不错。实际上在这个方向上我们还可以更进一步优化,但因为我们是学习嘛,主要还是看广度而不是深度。考虑到后面要开始学习卷积网络,我们必须把更基础...
布兰姥爷 2023-04-21 23:04
跟姥爷深度学习3 神经网络的调试实操
一、前言前面我们做了一次天气预测的模型,训练的结果都还好,网络好歹是“拟合”了,但预测数据不合预期让我一直耿耿于怀。所以我又花了很长时间来研究为什么,我的理论依据明明没有问题(今日平均温度与近一周平均...
布兰姥爷 2023-04-21 23:02
跟姥爷深度学习2 TensorFlow的基本用法
一、前言前面我们浅用TensorFlow做了个天气预测,虽然效果不咋样,但算是将整个流程跑通了。这一篇我们在之前基础上对TensorFlow的一些参数进行简单介绍,在接口文件的基础上了解各参数的简单含...
布兰姥爷 2023-04-11 22:22
跟姥爷深度学习1,浅用tensorflow做个天气预测
一、前言最近人工智能、深度学习又火了,我感觉还是有必要研究一下。三年前浅学了一下原理没深入研究框架,三年后感觉各种框架都成熟了,现成的教程也丰富了,所以我继续边学边写。原教程链接:https://ww...
布兰姥爷 2023-03-29 12:41
AI为啥要用显卡
一、前言GPT的发布让AI再次热了起来,与上次阿尔法狗不同的是,现在人人都可以跟聊上几句,给它出出难题,还能调戏下。同期英伟达发布了针对AI领域的全新GPU H100,有的童鞋会疑惑,这个英伟达不是做...
布兰姥爷 2019-11-04 21:09
【零基础】使用Tensorflow实现神经网络
一、序言  前面已经逐步从单神经元慢慢“爬”到了神经网络并把常见的优化都逐个解析了,再往前走就是一些实际应用问题,所以在开始实际应用之前还得把“框架”翻出来,因为后面要做的工作需要我们将精力集中在业务...
我要评论
1
33
关闭 站长推荐上一条 /2 下一条