文章目录

  • 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)的最全系统详解相关推荐

  1. 深度学习之神经网络的优化器篇

    神经网络的优化器 文章目录 神经网络的优化器 GD 梯度下降算法 重球法 SGD随机梯度下降 Momentum动量梯度 NAG(Nesterov accelerated gradient) AdaGr ...

  2. PyTorch 实现批训练和 Optimizer 优化器

    批训练 import torch import torch.utils.data as DataBATCH_SIZE = 5x = torch.linspace(1, 10, 10) # this i ...

  3. (十) 深度学习笔记 | 关于优化器Adam

    一.关于优化器 深度学习的目标是通过不断改变网络参数,使得参数能够对输入做各种非线性变换拟合输出,本质上就是一个函数去寻找最优解,所以如何去更新参数是深度学习研究的重点. 通常将更新参数的算法称为优化 ...

  4. 深度学习中所有的优化器的详细介绍与列表化对比分析

    目录 1. 逐个介绍优化器: ​ 2. 不同优化器方法的宏观对比分析 2.1 在分析中的参数命名 ​ 2.2 不同优化器的列表对比分析 2.3 不同优化器的可视化对比分析 之前对各个优化器理解的不是特 ...

  5. 主流的深度学习优化方法(SGD,SGDM,Adagrad,RMSProp,Adam)

    文章目录 0 前言 1 SGD 2 SGD with momentum(SGDM) 3 Adagrad 4 RMSProp(root mean square prop) 5 Adam 0 前言 介绍主 ...

  6. Mysql 优化器内部JOIN算法hash join Nestloopjoin及classic hash join CHJ过程详解

    Mysql hash join之classic hash join CHJ过程详解 hash join的历史 优化器里的hash join算法在SQL Server.Oracle.postgress等 ...

  7. python性能训练_让大规模深度学习训练线性加速、性能无损,基于BMUF的Adam优化器并行化实践...

    编者按: 深度学习领域经典的 Adam 算法在大规模并行训练的情况下会导致模型性能损失.为了解决这一问题,微软亚洲研究院采用 BMUF 框架对 Adam 算法进行了并行化,并在微软大规模 OCR 和语 ...

  8. 让大规模深度学习训练线性加速、性能无损,基于BMUF的Adam优化器并行化实践...

    导语:深度学习领域经典的 Adam 算法在大规模并行训练的情况下会导致模型性能损失.为了解决这一问题,微软亚洲研究院采用 BMUF 框架对 Adam 算法进行了并行化,并在微软大规模 OCR 和语音产 ...

  9. 基于NVIDIA GPUs的深度学习训练新优化

    基于NVIDIA GPUs的深度学习训练新优化 New Optimizations To Accelerate Deep Learning Training on NVIDIA GPUs 不同行业采用 ...

最新文章

  1. Infragistics NetAdvantage 2006 Volume 2 CLR 2.0曲折安装
  2. JAVA中console方法怎么用_Java中Console对象实例代码
  3. 5G NGC — AF 与 NEF 网络能力开放
  4. GitHub率先消灭了cookies:与烦人的用户条款说再见
  5. UML和模式应用学习笔记-1(面向对象分析和设计)
  6. vs下 string输出中文 打印中文
  7. html video 设置进度条不可拖动_PHP大文件切割上传并带上进度条功能,不妨一试...
  8. c语文编程提取郑码的单字码表
  9. c++ udp通信_Web 通信协议,你还需要知道:SPDY 和 QUIC
  10. HTMLCSS--使用CSS完成页面布局及排版(附案例代码)
  11. twitter finagle java_java搭建finagle(2)
  12. 前端:JS/25/DOM官方定义,DOM分类,HTML节点树(节点关系,节点类型,),核心DOM中公共的属性和方法(节点访问,查找DOM节点,节点属性,节点的创建,追加和删除)
  13. 浮动元素横排居中显示及浏览器兼容性处理
  14. Express-js无法获取我的静态文件,为什么?
  15. java值的传递_Java 8可选–基于值的类使用指南
  16. NWT失败反思:公司都死了,还怕得罪人
  17. Linux 串口termios.h分析
  18. 网页上的时间显示设置
  19. qt自定义控件-柱状刻度尺
  20. linux安装过程进入终端,怎么安装国产Linux中标麒麟操作系统?安装全过程分享...

热门文章

  1. 如何检查NAS硬盘有坏没有
  2. matlab画出拟合的曲线,matlab画出拟合曲线
  3. 官方完整HL7 ECG-XML例子及注释翻译(1)
  4. 《趣弹幕-滚动LED显示屏-隐私协议》
  5. python爬取指定分辨率模特壁纸
  6. 《天池精准医疗大赛-人工智能辅助糖尿病遗传风险预测》模型复现和数据挖掘-论文_企业
  7. 提高素质,讲文明树新风
  8. matlab级数求和阶乘,(阶乘)数列求和 - 数学 - 小木虫 - 学术 科研 互动社区
  9. 将字符串“123”转换为十六进制0x123或者十进制123
  10. 数字IC设计工程师成长之路