SGD随机梯度下降_随机梯度法

SGD随机梯度下降_随机梯度法BGDvsSGDBGDvsSGD名词解释功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML图表FLowchart流程图导出与导入导出导入BGDvsSGD…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

名词解释

名词 定义
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》

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/195201.html原文链接:https://javaforall.net

(0)
上一篇 2025年10月21日 下午10:01
下一篇 2025年10月21日 下午10:43


相关推荐

  • 【电容】关于电容,这篇说得太详细了

    【电容】关于电容,这篇说得太详细了转载自 http emakerzone com article 229 关键字 薄膜电容 电解电容 陶瓷电容 铝电解电容 钽电容 安规电容之前的文章中 介绍了电感的一些知识 本文将谈谈电容 介绍电容的知识和如何选型 一 电容的基本原理电容 和电感 电阻一起 是电子学三大基本无源器件 电容的功能就是以电场能的形式储存电能量 以平行板电容器为例 简单介绍下电容的基本原理如

    2026年3月17日
    2
  • JSP实现成语接龙「建议收藏」

    JSP实现成语接龙「建议收藏」首页:<%–CreatedbyIntelliJIDEA.User:zddDate:2019/11/18Time:10:15TochangethistemplateuseFile|Settings|FileTemplates.–%><%@pagecontentType=”text/html;chars…

    2022年7月14日
    19
  • 谷歌收购摩托罗拉移动

    谷歌收购摩托罗拉移动明眼人都看得出来 谷歌这是要借助摩托罗拉在手机上的大量专利来震慑某一些竞争对手 警告其不要轻举妄动 起到保护尚在成长当中的 android 系统的目的 谷歌做出这样的举动并不令人吃惊 吃惊的是摩托罗拉做出这样的决策 摩托目前在 android 市场上虽然不是最红火的 但也已经是挺过了最艰难的时刻了 正是收获的季节了 突然这么简单就放手了 确实很有魄力 摩托豪赌 android 系统 当然不希望其这么快被打败

    2026年3月20日
    2
  • 绝对值不等式的常见形式及解法

    绝对值不等式的常见形式及解法绝对值不等式解法的基本思路是:去掉绝对值符号,把它转化为一般的不等式求解,转化的方法一般有:(1)绝对值定义法;(2)平方法;(3)零点区域法。常见的形式有以下几种。  1. 形如不等式:利用绝对值的定义得不等式的解集为:。在数轴上的表示如图1。  2. 形如不等式:它的解集为:。在数轴上的表示如图2。  3. 形如不等式它的解法是:先化为不等式组:,再利用不等

    2022年5月22日
    48
  • internal server error是什么意思?

    internal server error是什么意思?internalservererror错误通常发生在用户访问网页的时候发生,该错误的意思是因特网服务错误。能够引起internalservererror报错的原因有多个,如果你是网站主的话,可以对下列情形进行一一排查。  1.服务器资源超载。如果网站文件没有做过修改,最有可能的是同服务器的资源超载:即同一时间内处理器有太多的进程需要处理的时候,会出现500错误。借助SSH,可以在命令行中输入以下命令查看:psfauxpsfaux|grepusername如果你查到某个进程消耗过多资源,

    2022年7月12日
    49
  • TI C66x DSP 系统events及其应用 – 5.1(QM accumulator的配置)

    TI C66x DSP 系统events及其应用 – 5.1(QM accumulator的配置)

    2021年12月1日
    53

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号