梯度优化方法:BGD,SGD,mini_batch, Momentum,AdaGrad,RMSProp,Adam
文章目录
- 目标函数
- 三种梯度下降优化框架
- 1、BGD、SGD、mini_batch
- 2、**优缺点对比:**
- 3、**问题与挑战:**
- 优化梯度下降法
- 1、动量梯度下降法(Momentum)
- 2、Nesterov Accelarated Gradient(NAG)
- 3、Adagrad
- 4、RMSprop
- 5、Adaptive momentum estimation(Adam)
目标函数
最优化:得到使目标函数J(θ)J(\theta)J(θ)最小的θ\thetaθ的值。
三种梯度下降优化框架
1、BGD、SGD、mini_batch
优化方法(特征维数高)
1)初始化θ\thetaθ
2)最优化方法求解使J(θ)J(\theta)J(θ)最小的θ\thetaθi. 批量梯度下降法(BGD)
每一次参数更新,使用所有样本
ii. 随机梯度下降法(SGD)
每一次参数更新,使用一个样本,可能会跳出局部最小值,效率高
iii. 1 二者综合(mini_batch)
每一次参数更新,使用样本中的一小部分
2、优缺点对比:
i. 批量梯度下降法(BGD)
可以确保每次向正确的方向前进,但时间慢;
ii. 随机梯度下降法(SGD)
随机梯度下降每次更新不一定会沿正确方向(不稳定),但更新快,且有可能会跳过局部最优;
iii. 1 二者综合(mini_batch)
更新相对较稳定,速度相对较快。
3、问题与挑战:
- 学习率的选择,α\alphaα过大,容易在极值点附近震荡;α\alphaα过小,收敛速度缓慢。
- 自动调整学习率,如退火(每次迭代衰减一个较小的阈值),也是需要固定设置阈值,无法实现自适应学习。
- 所有参数(θ1,...,θn\theta_1,...,\theta_nθ1,...,θn)的更新,都是采用同一个学习率,但是根据特征的稀疏度和不同的特征,应当选取不同的学习率。
- 对于非凸目标函数,容易陷入局部最优点。
优化梯度下降法
1、动量梯度下降法(Momentum)
梯度不仅与当前梯度有关还与之前的梯度有关,这样参数更新的方向会朝向更加有利于收敛的方向(有利于减小震荡),收敛速度更快。
上图红线为增加了动量的,黑线为SGD。
参数更新公式如下:
动量参数α<1\alpha<1α<1,一般≤0.9\leq0.9≤0.9
加上动量项就像从山顶滚下一个球,求往下滚的时候累积了前面的动量(动量不断增加),因此速度变得越来越快,直到到达终点。同理,在更新模型参数时,对于那些当前的梯度方向与上一次梯度方向相同的参数,那么进行加强,即这些方向上更快了;对于那些当前的梯度方向与上一次梯度方向不同的参数,那么进行削减,即这些方向上减慢了。因此可以获得更快的收敛速度与减少振荡。
2、Nesterov Accelarated Gradient(NAG)
是在Momentum的基础上改进得到的一个算法,不同之处在于m每次更新时加上梯度的不同,Momentum是加上当前位置θ\thetaθ的梯度,而NAG是加上当前位置之后一点点θ+βm\theta+\beta mθ+βm处的梯度。这样做会**使动量m指向更加正确的(局部)最优点的方向,加快收敛到极值点。NAG的参数更新公式如下:
下图为Momentum和NAG的对比图:
Momentum根据γm\gamma mγm和η∇1\eta\nabla_1η∇1计算m,而NAG根据γm\gamma mγm和η∇2\eta\nabla_2η∇2计算m,**NAG在接近极值的时候,如果超出了极值点,会把更新的方向往回拉,而不是继续往前,有利于减小震荡,加速收敛
3、Adagrad
4、RMSprop
*RMSProp算法不是像AdaGrad算法那样暴力直接的累加平方梯度,而是加了一个衰减系数来控制历史信息的获取多少。*
*在参数空间更为平缓的方向,会取得更大的进步(因为平缓,所以历史梯度平方和较小,对应学习下降的幅度较小),并且能够使得陡峭的方向变得平缓,从而加快训练速度。*
5、Adaptive momentum estimation(Adam)
优点 | 缺点 | 适用 | |
---|---|---|---|
BGD | 梯度总向正确方向前进 | 更新慢、实时性差、学习率难调整 | 小数据集 |
SGD | 更新快、可能可以跳出局部极小 | 震荡严重、学习率难调整 | |
mini-batch | 收敛更稳定、速度更快 | 学习率难调整;所有特征用同一种学习率,但如果是稀疏特征更希望以大一点的学习率;局部极小值处容易震荡 | |
momentum | 增加收敛稳定性,减小震荡,收敛速度更快 | 所有特征用同一种学习率,但如果是稀疏特征更希望以大一点的学习率; | |
rmsprop | 自动学习率调整 | 特征稀疏 | |
adam | 自动学习率调整 | 特征稀疏 |
参考:分享一个各种梯度下降的交互动画演示
梯度优化方法:BGD,SGD,mini_batch, Momentum,AdaGrad,RMSProp,Adam相关推荐
- 深度学习笔记:优化方法总结(BGD,SGD,Momentum,AdaGrad,RMSProp,Adam)
深度学习笔记(一):logistic分类 深度学习笔记(二):简单神经网络,后向传播算法及实现 深度学习笔记(三):激活函数和损失函数 深度学习笔记:优化方法总结 深度学习笔记(四):循环神经 ...
- 优化方法总结(BGD,SGD,Momentum,AdaGrad,RMSProp,Adam)
本文介绍常见的一阶数值优化算法,这些方法在现代神经网络框架(tensorflow, caffe, torch)中已经是标准配置. 问题 设系统参数为ω.对于样本i,其代价函数为Qi(ω).在n个样本组 ...
- 深度学习入门-ANN神经网络参数最优化问题(SGD,Momentum,AdaGrad,RMSprop,Adam)
这里写目录标题 1. 参数优化 1.1 随机梯度下降法(SGD) 1.2 Momentum 动量法 1.3 AdaGrad 1.4 RMSprop 1.5 Adam 1. 参数优化 本文总结一下ANN ...
- pytorch梯度下降函数_Pytorch中常用的四种优化器SGD、Momentum、RMSProp、Adam
来源:AINLPer微信公众号 编辑: ShuYini 校稿: ShuYini 时间: 2019-8-16 引言 很多人在使用pytorch的时候都会遇到优化器选择的问题,今天就给大家介绍对比 ...
- 花书+吴恩达深度学习(七)优化方法之基本算法(Momentum, Nesterov, AdaGrad, RMSProp, Adam)
目录 0. 前言 1. 指数加权平均(exponentially weighted averages) 2. Momentum 动量 3. Nesterov 动量 4. AdaGrad 5. RMSP ...
- 主流的深度学习优化方法(SGD,SGDM,Adagrad,RMSProp,Adam)
文章目录 0 前言 1 SGD 2 SGD with momentum(SGDM) 3 Adagrad 4 RMSProp(root mean square prop) 5 Adam 0 前言 介绍主 ...
- 深度学习中常用的优化算法(SGD, Nesterov,Adagrad,RMSProp,Adam)总结
深度学习中常用的优化算法(SGD, Nesterov,Adagrad,RMSProp,Adam)总结 1. 引言 在深度学习中我们定义了损失函数以后,会采取各种各样的方法来降低损失函数的数值,从而使模 ...
- 【深度学习基础】02梯度下降算法改进:SGD、Momentum、NAG、RMSProp、Adam等
目录 1. 优化算法背景 1.1 常见优化问题 1.1.1 梯度消失或梯度爆炸 1.1.2 局部最小值 1.2 常用解决办法 1.2.1 参数初始化策略 1.2.2 小批量梯度下降 1.2.3 梯度下 ...
- 【TensorFlow】优化方法optimizer总结(SGD,Adagrad,Adadelta,Adam,Adamax,Nadam)解析(十三)
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/brucewong0516/article/details/78838124 本文仅对一些常见的优化方 ...
最新文章
- java x00_有没有通过python反序列化java对象的方法
- 【C++ 语言】pthread_mutex_t 互斥锁
- linux命令的导入,[导入]Linux基本命令
- linux 核间通讯rpmsg架构分析
- html修改原生checkbox选中的颜色_[三分钟小文]前端性能优化-HTML、CSS、JS部分
- Linux下搭建FTP服务器笔记
- java file rename 失败_java重命名文件造成文件不可读写
- Guns 查询列表_入门试炼03
- C语言网络编程——基础
- Xms Xmx PermSize MaxPermSize 区别
- 华为云空间兑换码在哪里找_华为云空间在哪里找到
- ps中怎么调整字体间距
- [POI2012] 约会 Rendezvous
- vue的学习笔记(15)之Promise知识讲解
- latex制作幻灯片模板
- 球球大作战显示短信服务器出错,球球大作战常见问题汇总 新版本问题解决方法...
- 这款App连夜被下架!
- 2021届前端面试知识点(其他)
- Android10下wifi连接的两种方式:点对点连接和外网连接
- STM32学习记录——74HC595四位数码管显示
热门文章
- java initial_什么是来自独立Java客户端的Payara InitialContext的环境属性
- 1分钟学会 2 个复制文本到剪贴板的方法
- Linux开发板显示字库,linux追加中文字库,解决imagemagick 中文乱码的问题。
- Keepalived v1.3.5 高可用配置参数总结
- webpack loader配置全流程详解
- 全国英语等级考试计算机辅助口语考试,全国英语等级考试 计算机辅助高考口语考试练习软件文档.doc...
- JS判断服务端是win还是Linux,js 判断当前操作系统是ios还是android还是电脑端
- 我的世界服务器雪球回城无限雪球,我的世界如何用命令方块做回城雪球 | 手游网游页游攻略大全...
- java电子招标采购系统源码:营造全面规范安全的电子招投标环境,促进招投标市场健康可持续发展
- 高级ACL限制不同网段互访 拓扑与命令