随机梯度下降法_动量梯度下降法(gradient descent with momentum)
简介
动量梯度下降法是对梯度下降法的改良版本,通常来说优化效果好于梯度下降法。对梯度下降法不熟悉的可以参考梯度下降法,理解梯度下降法是理解动量梯度下降法的前提,除此之外要搞懂动量梯度下降法需要知道原始方法在实际应用中的不足之处,动量梯度下降法怎样改善了原来方法的不足以及其具体的实现算法。依次从以下几个方面进行说明:
- 小批量梯度下降法(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进行训练,除此之外和梯度下降法没有任何区别。
- 直观体验
区别
由于mini-batch每次仅使用数据集中的一部分进行梯度下降,所以每次下降并不是严格按照朝最小方向下降,但是总体下降趋势是朝着最小方向,上图可以明显看出两者之间的区别。
对右边的图来说,动量梯度下降法并没有什么用处。梯度批量下降法主要是针对mini-batch梯度下降法进行优化,优化之后左右的摆动减小,从而提高效率。优化前后的对比如下图,可见动量梯度下降法的摆动明显减弱。
指数加权平均
指数加权平均值又称指数加权移动平均值,局部平均值,移动平均值。加权平均这个概念都很熟悉,即根据各个元素所占权重计算平均值。指数加权平均中的指数表示各个元素所占权重呈指数分布。
假设存在数列{ 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各数权重呈指数分布。其权重大小如下图:
可以看出指数加权平均是有记忆平均,每一个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
使用指数加权平均之后梯度代替原梯度进行参数更新。因为每个指数加权平均后的梯度含有之前梯度的信息,动量梯度下降法因此得名。
用处:
当本次梯度下降方向与上次更新量的方向相同时,上次的更新量能够对本次的搜索起到一个正向加速的作用。
当本次梯度下降方向与上次更新量的方向相反时,上次的更新量能够对本次的搜索起到一个减速的作用。
既减少震荡,又大方向不变(本次梯度下降方向),从而保证了效率和正确的收敛。
随机梯度下降法_动量梯度下降法(gradient descent with momentum)相关推荐
- 几种梯度下降方法对比(Batch gradient descent、Mini-batch gradient descent 和 stochastic gradient descent)
几种梯度下降方法对比(Batch gradient descent.Mini-batch gradient descent 和 stochastic gradient descent) 我们在训练神经 ...
- 几种梯度下降方法简介(Batch gradient descent、Mini-batch gradient descent 和 stochastic gradient descent)
我们在训练神经网络模型时,最常用的就是梯度下降,这篇博客主要介绍下几种梯度下降的变种(mini-batch gradient descent和stochastic gradient descent), ...
- 入门神经网络优化算法(一):Gradient Descent,Momentum,Nesterov accelerated gradient
入门神经网络优化算法(一):Gradient Descent,Momentum,Nesterov accelerated gradient 入门神经网络优化算法(二):Adaptive Optimiz ...
- 梯度下降算法_批梯度下降法,Minibatch梯度下降法和随机梯度下降法之间的区别...
什么是梯度下降法? 梯度下降法是一种机器学习中常用的优化算法,用来找到一个函数(f)的参数(系数)的值,使成本函数(cost)最小. 当参数不能解析计算时(如使用线性代数),并且必须通过优化算法搜索时 ...
- 梯度下降算法_神经网络梯度下降算法
神经网络梯度下降算法 2018, SEPT 13 梯度下降(Gradient Descent) 是神经网络比较重要的部分,因为我们通常利用梯度来利用Cost function(成本函数) 进行back ...
- 梯度消失和梯度爆炸_出现梯度消失与梯度爆炸的原因以及解决方案
在学习李宏毅老师机器学习的相关视频时,课下做了一个有关神经网络的小Demo,但是运行效果总是不尽人意,上网查询资料,才发现是梯度爆炸和梯度消失惹的祸.今天就让我们一起来学习一下梯度消失与梯度爆炸的概念 ...
- 图像梯度增强_使用梯度增强机在R中进行分类
图像梯度增强 背景 (Background) Purpose of analysis: 分析目的: Understand the factors driving student success so ...
- 2.6 动量梯度下降法-深度学习第二课《改善深层神经网络》-Stanford吴恩达教授
←上一篇 ↓↑ 下一篇→ 2.5 指数加权平均的偏差修正 回到目录 2.7 RMSprop 动量梯度下降法 (Gradient Descent with Momentum) 还有一种算法叫做Momen ...
- 指数加权平均、动量梯度下降法、RMSprop、Adam优化算法
目录 1.指数加权平均(exponentially weighted averages) 这里有一年的温度数据. 如果想计算温度的趋势,也就是局部平均值(local average),或者说移动平均值 ...
最新文章
- “华为云杯”2020深圳开放数据应用创新大赛线上推介会成功举办,让深圳大数据在全球“跑”起来...
- 【数据】短视频识别,都有那些行业标准?
- 嵌入式Linux中I2C设备驱动程序的研究与实现
- elementui el-dialog 离顶部的位置_驻马店建筑物避雷带的安装位置,本月报价
- netstat查询端口被占用
- 编程语言:8086汇编中int 16h接收alt+方向键
- 考研英语近义词与反义词·四
- 名人名言页面的效果图HTML,名人名言书签制作方法图片
- 数据库应用系统的四个层次划分
- netty报错 io.netty.util.IllegalReferenceCountException: refCnt: 0, decrement: 1
- php 验证手机号码格式
- PTA:输出较大或较小值(c++,函数模板)
- python自学第七天之字典的增删改查
- android TextView 中划线、下划线 跑马灯
- 园区网络—中小型企业网络工程项目实践(思科模拟器)
- no default constructor found either
- 几大科技公司的组织结构图
- Oracle数据库配置二
- 从技术角度看“星闪“技术
- DDoS 受控攻击源地域分布
热门文章
- java trove_[XMLer的生活]可使用基本类型作为键值的Java集合类-Trove 集合类
- ThinkPHP 5.0常用助手函数
- MATLAB计算排列组合
- 精品微信小程序源码丨基于微信小程序的美容预约+后台管理系统|前后分离VUE[包运行成功]
- 淘口令解析api接口/淘口令解密还原api接口/淘口令短链接搜索商品详情接口,API接口获取方案
- 三星S95Z / S90Z OLED 电视 评测
- web学生网页设计作业源码 HTML5+CSS大作业——三八女人节主题设计(1页)
- SDP PPS SPS分析(spsparser)
- 什么是深度学习,深度学习和机器学习之间,主要有什么区别
- 打造卓越的 Android 游戏体验