SGD(随机梯度下降)详解

  • 名词解释
  • SGD vs BGD
    • 效率方面
    • 优化方面
      • SGD优势
      • SGD劣势

名词解释

名词 定义
original-loss 整个训练集上的loss
minibatch-loss 在一个mini batch上的loss
BGD 最原始的梯度下降算法,为了计算original-loss上的梯度,需要使用训练集全部数据
SGD (近似)计算original-loss梯度时,只使用一个mini batch,相当于用minibatch-loss上的梯度去近似original-loss梯度
奇点(只是为了方便说明而起的名字) local minimal和saddle point

SGD vs BGD

下面将通过BGD与SGD的对比,来对SGD进行深入理解。

效率方面

深度学习使用的训练集一般都比较大(几十万~几十亿)。而BGD算法,每走一步(更新模型参数),为了计算original-loss上的梯度,就需要遍历整个数据集,这显然是不现实的。而SGD算法,每次随机选择一个mini-batch去计算梯度,在minibatch-loss上的梯度显然是original-loss上的梯度的无偏估计,因此利用minibatch-loss上的梯度可以近似original-loss上的梯度,并且每走一步只需要遍历一个minibatch(一~几百)的数据。

优化方面

SGD优势

(a)BGD容易陷入original-loss的奇点,而SGD不容易陷入;
(b)SGD也不会陷入minibatch-loss的奇点。
解释:
(a)original-loss存在很多奇点,而BGD每次下降的方向就是original-loss的负梯度,因此BGD很容易陷入某个奇点,而无法达到global minimal(或者比较好的local minimal)。SGD一定程度上可以避免这个情况,这可以从2个角度来理解。
从引入randomness的角度来看,SGD中计算的梯度是对original-loss梯度的近似,相当于在original-loss梯度的基础上加了randomness,因此即使当前走到了original-loss的奇点,SGD计算的梯度因为引入了randomness,所以也不接近0,比较容易跳出奇点。
另一个角度,SGD计算的不是original-loss的梯度,而是minibatch-loss的梯度。显然original-loss和minibatch-loss的形状不同,奇点分布也不同,如果当前这个点在original-loss上是奇点,但这个点在minibatch-loss中并不是奇点,此时使用minibatch-loss的负梯度作为下降方向,自然就不会陷入这个点了。
(b)主要是因为每次迭代,都会使用不同的mini batch,而不同的minibatch-loss的形状不同。就算此时陷入了当前minibatch-loss的奇点,那么下一次迭代,这个点也不一定就是下一个minibatch-loss的奇点,如果不是的话,自然就跳出来了。

SGD劣势

SGD走的路径比较曲折(震荡),尤其是batch比较小的情况下。
解释:
为了方便说明,假设loss函数是凸函数(没有奇点,local minimal就是global minimal)。即使loss函数不是凸函数也是相同的道理。 需要记住,不管使用什么优化方法,待优化的目标都是original-loss,分析问题都要从这一点出发。
BGD每次走的方向是original-loss的负梯度方向,是original-loss在当前点上的最速下降方向。而SGD每次走的方向是minibatch-loss的负梯度方向(或者理解成original-loss的负梯度+randomness),显然这个方向和original-loss的负梯度方向不同,也就不是original-loss在当前位置的最快下降方向(如果这个mini batch的大部分数据点的target是错误的,甚至有可能是original-loss在当前位置的上升方向),所以使用SGD算法从当前点走到global minimal的路径会很曲折(震荡)。
为了减少震荡,一个方法是增大batch size,原因是minibatch-loss的梯度是对original-loss梯度的无偏估计(bias为0),并且variance随着batch size的变大而减小。当batch size足够大(比如接近训练集),此时SGD就退化成了BGD,就会带来上面说的那些问题。因此batch size需要选择合适大小,一般是几十到几百。
减少震荡的方法还包括动量、Rmsprop等,详情参考另一篇博客《Momentum Rmsprop Adam》。

SGD(随机梯度下降)详解相关推荐

  1. 线性回归之梯度下降详解

    在了解梯度下降(Gradient Descent)之前,我们先要知道有关线性回归的基本知识,这样可以进一步的加深对梯度下降的理解,当然梯度下降(Gradient Descent)并不单单只能进行回归预 ...

  2. 梯度下降详解(3)机器学习

    1 无约束最优化问题    为什么要学习梯度下降?,在我们日常生活中,并不是所有的预测曲线都符合正规方程,所以为了对各种各样的数据进行预测的话,需要使用其他的方法.这就是用梯度下降的方法来拟合原来的数 ...

  3. SGD(随机梯度下降)

    在深度学习领域, 该优化算法是使用最优化的算法, 利用它, 通过不断的估计objective function的梯度, 更新模型参数,不断迭代, 直至收敛或者达到我们early stoping 的条件 ...

  4. python实现线性回归之梯度下降法,梯度下降详解

    线性回归的有关概念已在笔者相关文章中进行介绍.本篇内容将介绍梯度下降(BGD)相关内容. 1.梯度下降 梯度下降常用于机器学习中求解符合最小损失函数的模型的参数值,梯度下降也是BP神经网络的核心,本文 ...

  5. GD(梯度下降)和SGD(随机梯度下降)

    GD:gradient descent SGD:Stochastic Gradient Descent 相同点 在GD和SGD中,都会在每次迭代中更新模型的参数,使得代价函数变小. 不同点 在GD中, ...

  6. 反向传播与梯度下降详解

    一,前向传播与反向传播 1.1,神经网络训练过程 神经网络训练过程是: 先通过随机参数"猜"一个结果(模型前向传播过程),这里称为预测结果 a a a: 然后计算 a a a 与样 ...

  7. 随机梯度下降(SGD)

    关于什么是梯度下降,请看我之前发的一个博文:http://blog.csdn.net/lilyth_lilyth/article/details/8973972 梯度下降能帮助我们找到局部最优值,取得 ...

  8. 神经网络优化算法:随机梯度下降

    什么是优化算法? 优化算法的功能,是通过改善训练方式,来最小化(或最大化)损失函数E(x). 损失函数E(x): 模型内部有些参数,是用来计算测试集中目标值Y的真实值和预测值的偏差程度的,基于这些参数 ...

  9. Stochastic Gradient Descent ( 随机梯度下降 )

    Stochastic Gradient Descent (SGD) ( 随机梯度下降( SGD ) ) 是一种简单但非常有效的方法,用于在诸如(线性)支持向量机和 逻辑回归 之类的凸损失函数下的线性分 ...

  10. 随机梯度下降与动量详解

    1. SGD图示 红色表示SGD的收敛路径,棕色表示梯度下降的收敛路径.普通的GD算法就是计算出每一时刻最陡的下降趋势(梯度),SGD在随机挑选某一分量的梯度方向进行收敛,详细解释可继续往下看. 2. ...

最新文章

  1. shell任务不受意外中断影响的常见方法
  2. 在项目中添加引用的意思
  3. 的注册表怎么才能删干净_白蚁怎么才能消灭干净?
  4. SVN中提交时提示副本被锁定,执行清理时也提示副本被锁定的解决办法
  5. 三星.android beam,三星S Beam取代Android Beam
  6. 相同的树Python解法
  7. python 动态调整控件大小_python PyQt5如何让窗口控件与窗口大小同步变化?
  8. Python爬虫编程实践 Task03
  9. python中for语句只有一种写法for in_pythonforin语句
  10. WebMvcConfigurerAdapter
  11. 到底什么是有限单元法?
  12. 计算机没鼠标怎么,电脑没鼠标怎么开启系统
  13. C# 关于winFrom控制网页的自动登录的问题(网页刷屏器的制作原理)
  14. 期货发展的几个重要时间点和事件
  15. 怎么看别人的qq空间怎么看加密的qq空间
  16. 41、财务总账科目余额表,三栏式总账,三栏式明细账 查询条件科目增加多选查询
  17. 布同:使用ghost备份或者还原的往事
  18. 深海油气开发利器——水下机器人
  19. Nodejs框架+uniapp前端微商个人相册多端小程序
  20. MFC 图标 icon 如何制作?

热门文章

  1. echars中国地图,省份名字居中
  2. 直播app源码,隐藏导航栏和状态栏
  3. css自己做条纹背景,用css实现条纹背景
  4. Java 日期格式化规则
  5. 常用通信协议——IIC详解(全网最全)
  6. python实现定位附近的_c#教程之使用GPS经纬度定位附近地点(某一点范围
  7. 华硕主板前置耳机插孔没有声音怎么办
  8. 手机12306买卧铺下铺技巧_12306订下铺有什么技巧?
  9. BUUCTF_Misc(后续更新....)
  10. 05-Echarts矢量地图实现、及常见效果