梯度下降法和随机梯度下降法的区别_梯度下降法的优缺点

梯度下降法和随机梯度下降法的区别_梯度下降法的优缺点1.梯度  在微积分里面,对多元函数的参数求∂偏导数,把求得的各个参数的偏导数以向量的形式写出来,就是梯度。比如函数f(x,y),分别对x,y求偏导数,求得的梯度向量就是(∂f/∂x,∂f/∂y)T,简称gradf(x,y)或者▽f(x,y)。对于在点(x0,y0)的具体梯度向量就是(∂f/∂x0,∂f/∂y0)T.或者▽f(x0,y0),如果是3个参数的向量梯度,就是(∂f/∂x,…

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

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

1. 梯度

  在微积分里面,对多元函数的参数求∂偏导数,把求得的各个参数的偏导数以向量的形式写出来,就是梯度。比如函数f(x,y), 分别对x,y求偏导数,求得的梯度向量就是(∂f/∂x, ∂f/∂y)T,简称grad f(x,y)或者▽f(x,y)。对于在点(x0,y0)的具体梯度向量就是(∂f/∂x0, ∂f/∂y0)T.或者▽f(x0,y0),如果是3个参数的向量梯度,就是(∂f/∂x, ∂f/∂y,∂f/∂z)T,以此类推。

  那么这个梯度向量求出来有什么意义呢?他的意义从几何意义上讲,就是函数变化增加最快的地方。具体来说,对于函数f(x,y),在点(x0,y0),沿着梯度向量的方向就是(∂f/∂x0, ∂f/∂y0)T的方向是f(x,y)增加最快的地方。或者说,沿着梯度向量的方向,更加容易找到函数的最大值。反过来说,沿着梯度向量相反的方向,也就是 -(∂f/∂x0, ∂f/∂y0)T的方向,梯度减少最快,也就是更加容易找到函数的最小值。

2.梯度下降法

       什么是梯度下降法呢/

举个例子,我们在下山的时候,如果山中浓雾太大,而且我们有不清楚路线,那我们可以以当前的所处的位置为基准,寻找这个位置最陡峭的地方,然后朝着山的高度下降的地方走,同理,如果我们的目标是上山,也就是爬到山顶,那么此时应该是朝着最陡峭的方向往上走。然后每走一段距离,都反复采用同一个方法,最后就能成功的抵达山谷。

梯度下降法和随机梯度下降法的区别_梯度下降法的优缺点

梯度下降法的过程与这个例子很相似,一个函数可微分。这个函数就代表着一座山。我们的目标就是找到这个函数的最小值,也就是山底。根据之前的场景假设,最快的下山的方式就是找到当前位置最陡峭的方向,然后沿着此方向向下走,对应到函数中,就是找到给定点的梯度 ,然后朝着梯度相反的方向,就能让函数值下降的最快!因为梯度的方向就是函数之变化最快的方向,所以,我们重复利用这个方法,反复求取梯度,最后就能到达局部的最小值,这就类似于我们下山的过程。

什么是梯度:

        一个多元函数的梯度方向是该函数值增大最陡的方向。具体化到1元函数中时,梯度方向首先是沿着曲线的切线的,然后取切线向上增长的方向为梯度方向,2元或者多元函数中,梯度向量为函数值f对每个变量的导数,该向量的方向就是梯度的方向,当然向量的大小也就是梯度的大小。

梯度下降法和随机梯度下降法的区别_梯度下降法的优缺点

 

梯度下降法详解:

       对于一个多元函数j(x),在x点处做线性逼近(求一阶导数)

        j(x+x0)=j(x)+Δ'(x)*øj(x0)+o(无穷小),其中øj(x0)为j(x0)的倒数;

对于一个函数做了线性逼近,可以判断在x这个点的增加方向和减小方向;虽然做线线逼近不能告诉我们这个函数的极值点在什么地方,但能告诉我们极值点在什么方向,因此我们可以根据这个方向(即下山的方向)选取一个较小的步长(学习率)来沿着这个方向走下去,找到极值点。

梯度下降法和随机梯度下降法的区别_梯度下降法的优缺点

      J是关于x的一个函数,我们当前所处的位置为x0点,要从这个点走到J的最小值点,也就是山底。首先我们先确定前进的方向,也就是梯度的反向,然后走一段距离的步长,也就是α,走完这个段步长,就到达了x1这个点!

为什么要加一个负号, 
     梯度前加一个负号,就意味着朝着梯度相反的方向前进!我们在前文提到,梯度的方向实际就是函数在此点上升最快的方向!而我们需要朝着下降最快的方向走,自然就是负的梯度的方向,所以此处需要加上负号
梯度下降法的难点:
     (1)梯度的计算
在机器学习中目标函数经常是求和函数的形式,因此求和函数的求导很费时(样本数量多)
      (2)学习率的选择
学习率过大,会出现震荡不收敛(找不到极值点),过小,收敛速度较慢。
梯度下降法和随机梯度下降法的区别_梯度下降法的优缺点

梯度下降法和随机梯度下降法的区别_梯度下降法的优缺点

几种梯度下降法介绍

批量梯度下降法(Batch Gradient Descent)

    批量梯度下降法,是梯度下降法最常用的形式,具体做法也就是在更新参数时使用所有的样本来进行更新,这个方法对应于前面3.3.1的线性回归的梯度下降算法,也就是说3.3.1的梯度下降算法就是批量梯度下降法。  

梯度下降法和随机梯度下降法的区别_梯度下降法的优缺点

 

    由于我们有m个样本,这里求梯度的时候就用了所有m个样本的梯度数据。

随机梯度下降法(Stochastic Gradient Descent)

    随机梯度下降法,其实和批量梯度下降法原理类似,区别在与求梯度时没有用所有的m个样本的数据,而是仅仅选取一个样本j来求梯度。对应的更新公式是:

   

梯度下降法和随机梯度下降法的区别_梯度下降法的优缺点

 

    随机梯度下降法,和4.1的批量梯度下降法是两个极端,一个采用所有数据来梯度下降,一个用一个样本来梯度下降。自然各自的优缺点都非常突出。对于训练速度来说,随机梯度下降法由于每次仅仅采用一个样本来迭代,训练速度很快,而批量梯度下降法在样本量很大的时候,训练速度不能让人满意。对于准确度来说,随机梯度下降法用于仅仅用一个样本决定梯度方向,导致解很有可能不是最优。对于收敛速度来说,由于随机梯度下降法一次迭代一个样本,导致迭代方向变化很大,不能很快的收敛到局部最优解。

    那么,有没有一个中庸的办法能够结合两种方法的优点呢?有!这就是4.3的小批量梯度下降法。

小批量梯度下降法(Mini-batch Gradient Descent)

  小批量梯度下降法是批量梯度下降法和随机梯度下降法的折衷,也就是对于m个样本,我们采用x个样子来迭代,1<x<m。一般可以取x=10,当然根据样本的数据,可以调整这个x的值。对应的更新公式是:

   梯度下降法和随机梯度下降法的区别_梯度下降法的优缺点

下面谈谈随机梯度下降法;

        这种方法主要是解决梯度计算的问题,上面谈到梯度计算很困难就是因为样本大那随机梯度下降法只计算一个样本;

梯度下降法和随机梯度下降法的区别_梯度下降法的优缺点

梯度下降法和随机梯度下降法的区别_梯度下降法的优缺点

简要谈一谈鞍点,如图

梯度下降法和随机梯度下降法的区别_梯度下降法的优缺点

 

鞍点(saddle point)这个词来自 z=x^2-y^2的图形,在x轴方向向上曲,在y轴方向向下曲,像马鞍,鞍点为(0,0)。

拥有两个以上参数的函数。它的曲面在鞍点好像一个马鞍,在某些方向往上曲,在其他方向往下曲。在一幅等高线图里,一般来说,当两个等高线圈圈相交叉的地点,就是鞍点。

由于只是初学,简要了解一下什么是梯度下降法;以后在有机会再深入探讨;

本文参考:

1.  鞍点参考原文:https://blog.csdn.net/baidu_27643275/article/details/79250537 

2.梯度下降参考原文:https://www.cnblogs.com/pinard/p/5970503.html

转载于:https://www.cnblogs.com/fcfc940503/p/10959775.html

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

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

(0)
上一篇 2025年10月18日 上午9:22
下一篇 2025年10月18日 上午10:01


相关推荐

  • 国产AI又出王炸,碾压Manus?实测天工超级智能体6大实用场景,居然还能这么玩!

    国产AI又出王炸,碾压Manus?实测天工超级智能体6大实用场景,居然还能这么玩!

    2026年3月15日
    2
  • MAC OSX 的pycharm 突然双击打不开,重新安装也没用

    MAC OSX 的pycharm 突然双击打不开,重新安装也没用全局搜索一个叫 pycharm vmoptions 的文件 server Xms1024M Xmx1024M XX ReservedCode 1024M XX UseConcMarkS XX SoftRefLRUPo 50 ea Dsun io useCanonCach false Djava net preferIPv4St

    2026年3月27日
    2
  • kubernetes简介

    kubernetes简介Kubernetes简介初识KubernetesKubernetes(K8s)是一个用于自动化部署、扩展和管理容器化应用程序的开源系统2014年6月7日Google推出了Borg的开源版本2

    2022年7月3日
    55
  • 漂亮的复制零_一张图片有很多小图片组成

    漂亮的复制零_一张图片有很多小图片组成前言磁盘可以说是计算机系统最慢的硬件之一,读写速度相差内存10倍以上,所以针对优化磁盘的技术非常的多,比如零拷贝、直接I/O、异步I/O等等,这些优化的目的就是为了提高系统的吞吐量,另外操作系统内核中的磁盘高速缓存区,可以有效的减少磁盘的访问次数。这次,我们就以「文件传输」作为切入点,来分析I/O工作方式,以及如何优化传输文件的性能。正文为什么要有DMA技术?在没有DMA技术前,I/O的过程是这样的:CPU发出对应的指令给磁盘控制器,然后返回;磁盘控制器收到..

    2026年2月10日
    7
  • 如何比较两种方法的灵敏度和特异度

    如何比较两种方法的灵敏度和特异度如何比较两种方法的灵敏度和特异度转载自 https www mediecogroup com method topic article detail 152 ty methods https www mediecogroup com method topic article detail 152 ty methods 转载自 https www mediecogroup com

    2026年3月18日
    2
  • Redis入门_redis菜鸟教程

    Redis入门_redis菜鸟教程Redis文章目录Redis一、Redis概述二、Redis应用场景三、Redis的下载和安装四、Redis服务的启动五、Redis命令行工具六、Redis基础知识七、Redis数据类型1.key(键)2.String(字符串)3.List(列表)4.Set(集合)5.Zset(有序集合)6.Hash(哈希)八、实践案例九、Redis常用查询指令十、Jedis的使用十一、Redis可视化工具十二、持久化概念十三、RDB十四、AOF十五、AOF重写十六、RDB与AOF的选择一、Re

    2025年11月20日
    4

发表回复

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

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