深度学习训练之optimizer优化器(BGD、SGD、MBGD、SGDM、NAG、AdaGrad、AdaDelta、Adam)的最全系统详解
文章目录
- 1、BGD(批量梯度下降)
- 2、SGD(随机梯度下降)
- 2.1、SGD导致的Zigzag现象
- 3、MBGD(小批量梯度下降)
- 3.1 BGD、SGD、MBGD的比较
- 4、SGDM
- 5、NAG
- 6、AdaGrad(Adaptive Gradient)
- 7、AdaDelta/RMSProp
- 8、Adam(Adaptive Moments Estimation)
1、BGD(批量梯度下降)
定义:批量梯度下降法(Batch Gradient Descent,BGD)是最原始的形式,它是指在每一次
迭代时使用所有样本来进行梯度的更新。
优点:一次迭代是对所有样本进行计算,此时利用矩阵进行操作,实现了并行。由全数据集确定的方向能够更好地代表样本总体,从而更准确地朝向极值所在的方向。当目标函数为凸函数时,BGD一定能够得到全局最优。
缺点:当样本数目 m 很大时,每迭代一步都需要对所有样本计算,训练过程会很慢。
2、SGD(随机梯度下降)
定义:一次只对一个样本进行梯度下降,进行参数更新;
优点:由于不是在全部训练数据上的损失函数,而是在每轮迭代中,随机优化某一条训练数据上的损失函数,这样每一轮参数的更新速度大大加快;
缺点:准确度下降。由于即使在目标函数为强凸函数的情况下,SGD仍旧无法做到线性收敛;可能会收敛到局部最优,由于单个样本并不能代表全体样本的趋势;不易于并行实现;
2.1、SGD导致的Zigzag现象
由于是随机梯度下降,下图左上角的同心圆是单样本的loss等值线图,右下角也是和左上角一样都是单样本的等值线图,可以看到如果是SGD的话,梯度下降的方向会出现不稳定,不能线性收敛,即Zigzag现象。
3、MBGD(小批量梯度下降)
定义:小批量梯度下降(Mini-Batch Gradient Descent, MBGD)是对批量梯度下降以及随
机梯度下降的一个折中办法。其思想是:每次迭代 使用指定个(batch_size)样本来对
参数进行更新。
优点:通过矩阵运算,每次在一个batch上优化神经网络参数并不会比单个数据慢太多。每次使用一个batch可以大大减小收敛所需要的迭代次数,同时可以使收敛到的结果更加接近梯度下降的效果。
缺点:batch_size的不当选择可能会带来一些问题。
3.1 BGD、SGD、MBGD的比较
4、SGDM
全称是: Stochastic Gradient Descent with Momentum,动量随机梯度下降。
为什么提出?
因为使用SGD容易出现Zigzag现象,为了避免出现Zigzag现象,所以有了SGDM方法。
过程:
mt=β1⋅mt−1+(1−β1)⋅gtm_t=\beta_1\cdot m_{t-1}+(1-\beta_1)\cdot g_tmt=β1⋅mt−1+(1−β1)⋅gt
ηt=α⋅mt\eta_t=\alpha \cdot m_tηt=α⋅mt
ωt+1=ωt−ηt\omega_{t+1}=\omega_{t}-\eta_tωt+1=ωt−ηt
其中:
gt=∇f(ωt)g_t=\nabla f(\omega_t)gt=∇f(ωt)
先对mtm_tmt的前三项进行展开,
每一项的mtm_tmt都包含前面的所有的gig_igi,使梯度下降的方向的趋于BGD的方向,从而也趋近于我们优化的方向。
下面是关于SGDM为什么是趋近于BGD优化方向的图解,希望能看得懂,
5、NAG
全称为:Nesterov Accelerated Gradient (SGD with Nesterov Acceleration)
这个方法用的比较少,我也没有看懂,就贴一下这个方法的过程吧;
6、AdaGrad(Adaptive Gradient)
定义:自适应梯度下降,每次梯度下降时会除以前面梯度计算总和的平方再开方;
优点:避免前期梯度下降的梯度爆炸和弥散;
缺点:后期有可能会停止训练
7、AdaDelta/RMSProp
全称:Root Mean Square Propogation / Adaptive Delta
目的:解决AdaGrad过早收敛的问题;
8、Adam(Adaptive Moments Estimation)
结合了SGDM和AdaDelta
深度学习训练之optimizer优化器(BGD、SGD、MBGD、SGDM、NAG、AdaGrad、AdaDelta、Adam)的最全系统详解相关推荐
- 深度学习之神经网络的优化器篇
神经网络的优化器 文章目录 神经网络的优化器 GD 梯度下降算法 重球法 SGD随机梯度下降 Momentum动量梯度 NAG(Nesterov accelerated gradient) AdaGr ...
- PyTorch 实现批训练和 Optimizer 优化器
批训练 import torch import torch.utils.data as DataBATCH_SIZE = 5x = torch.linspace(1, 10, 10) # this i ...
- (十) 深度学习笔记 | 关于优化器Adam
一.关于优化器 深度学习的目标是通过不断改变网络参数,使得参数能够对输入做各种非线性变换拟合输出,本质上就是一个函数去寻找最优解,所以如何去更新参数是深度学习研究的重点. 通常将更新参数的算法称为优化 ...
- 深度学习中所有的优化器的详细介绍与列表化对比分析
目录 1. 逐个介绍优化器: 2. 不同优化器方法的宏观对比分析 2.1 在分析中的参数命名 2.2 不同优化器的列表对比分析 2.3 不同优化器的可视化对比分析 之前对各个优化器理解的不是特 ...
- 主流的深度学习优化方法(SGD,SGDM,Adagrad,RMSProp,Adam)
文章目录 0 前言 1 SGD 2 SGD with momentum(SGDM) 3 Adagrad 4 RMSProp(root mean square prop) 5 Adam 0 前言 介绍主 ...
- Mysql 优化器内部JOIN算法hash join Nestloopjoin及classic hash join CHJ过程详解
Mysql hash join之classic hash join CHJ过程详解 hash join的历史 优化器里的hash join算法在SQL Server.Oracle.postgress等 ...
- python性能训练_让大规模深度学习训练线性加速、性能无损,基于BMUF的Adam优化器并行化实践...
编者按: 深度学习领域经典的 Adam 算法在大规模并行训练的情况下会导致模型性能损失.为了解决这一问题,微软亚洲研究院采用 BMUF 框架对 Adam 算法进行了并行化,并在微软大规模 OCR 和语 ...
- 让大规模深度学习训练线性加速、性能无损,基于BMUF的Adam优化器并行化实践...
导语:深度学习领域经典的 Adam 算法在大规模并行训练的情况下会导致模型性能损失.为了解决这一问题,微软亚洲研究院采用 BMUF 框架对 Adam 算法进行了并行化,并在微软大规模 OCR 和语音产 ...
- 基于NVIDIA GPUs的深度学习训练新优化
基于NVIDIA GPUs的深度学习训练新优化 New Optimizations To Accelerate Deep Learning Training on NVIDIA GPUs 不同行业采用 ...
最新文章
- Infragistics NetAdvantage 2006 Volume 2 CLR 2.0曲折安装
- JAVA中console方法怎么用_Java中Console对象实例代码
- 5G NGC — AF 与 NEF 网络能力开放
- GitHub率先消灭了cookies:与烦人的用户条款说再见
- UML和模式应用学习笔记-1(面向对象分析和设计)
- vs下 string输出中文 打印中文
- html video 设置进度条不可拖动_PHP大文件切割上传并带上进度条功能,不妨一试...
- c语文编程提取郑码的单字码表
- c++ udp通信_Web 通信协议,你还需要知道:SPDY 和 QUIC
- HTMLCSS--使用CSS完成页面布局及排版(附案例代码)
- twitter finagle java_java搭建finagle(2)
- 前端:JS/25/DOM官方定义,DOM分类,HTML节点树(节点关系,节点类型,),核心DOM中公共的属性和方法(节点访问,查找DOM节点,节点属性,节点的创建,追加和删除)
- 浮动元素横排居中显示及浏览器兼容性处理
- Express-js无法获取我的静态文件,为什么?
- java值的传递_Java 8可选–基于值的类使用指南
- NWT失败反思:公司都死了,还怕得罪人
- Linux 串口termios.h分析
- 网页上的时间显示设置
- qt自定义控件-柱状刻度尺
- linux安装过程进入终端,怎么安装国产Linux中标麒麟操作系统?安装全过程分享...
热门文章
- 如何检查NAS硬盘有坏没有
- matlab画出拟合的曲线,matlab画出拟合曲线
- 官方完整HL7 ECG-XML例子及注释翻译(1)
- 《趣弹幕-滚动LED显示屏-隐私协议》
- python爬取指定分辨率模特壁纸
- 《天池精准医疗大赛-人工智能辅助糖尿病遗传风险预测》模型复现和数据挖掘-论文_企业
- 提高素质,讲文明树新风
- matlab级数求和阶乘,(阶乘)数列求和 - 数学 - 小木虫 - 学术 科研 互动社区
- 将字符串“123”转换为十六进制0x123或者十进制123
- 数字IC设计工程师成长之路