文章目录

  • 1.什么是梯度
  • 2.什么是梯度下降算法
  • 3.什么是随机梯度下降算法

1.什么是梯度

首先给出高数课程中梯度的定义:

如果对上面的定义没有理解也没有关系,用通俗的语言来说,梯度实际上就是一个向量,向量中的各个元素表示多元函数在某一个点对于其中一个自变量的偏导数。

例如,给出一个函数:f(x)=ln(x²+y²+z²),求出该函数在点(1,2,-2)处的梯度,计算过程如下:

  1. 计算在该点处函数f(x)对于变量x、y、z的偏导数。计算出的结果分别为2/9,4/9和-4/9。
  2. 对偏导数进行拼接,所以该函数在该点的梯度为(2/9,4/9,-4/9)。

2.什么是梯度下降算法

梯度下降算法是一种对损失函数进行优化来得到使得损失函数值最小的机器学习模型的一种算法。也就是说,梯度下降算法是一种用来在机器学习中求解最佳模型的算法。

这么说可能还不是特别好理解,我们从简单的开始,先介绍梯度下降算法的退化版“斜率下降算法”。

假设一个函数的图像如下图所示,在无法直接到达最低点的情况下,如何计算出函数的最小值?

首先需要考虑前进的方向。

假设这样一种情形。当你在一次爬山过程中突然起了大雾,此时想下山的你已经看不清下山的路应该往什么方向走,只能看清眼前很近距离内的路,你应该怎么办才能尽可能地走到山脚?

这时你可以采取这样一种措施:观察眼前的路,如果是下坡路就顺着向下走,走一段距离后再进行一次相同的判断。这样循环往复,你最有可能顺着下坡路成功下山。如果走到一个地方后没有下坡路而是平路了,那么此时你就可以认为自己已经到山脚了。

如果你能够理解上面下山的过程,那么你就明白了梯度下降算法的本质原理。损失函数相当于一座山,而损失函数的最小值相当于山脚,也就是山高度最低的地方,求出损失函数的最小值的过程就相当于从山上的某个地方开始找到下山的路。

假设我们的起点在上图中绿色点标记处,为了能向下走,我们需要判断下坡的方向。而在函数图像中,可以通过斜率判断下坡的方向,因为斜率为负数的方向函数值会减小,也就是我们要走的方向,所以本题中首先需要确定:为了找到最小值,我们需要向右走,也就是增大b值。

我们确定了前进的方向之后,那就得判断再下一次判断之前,我们要在这个方向走多远。

同样可以这么考虑:下坡路越陡,我们越有把握认为这条路可以走到山脚,因此可以一次性沿着这条路走得更远;相对应的,如果下坡路很平缓,我们就会对这条路是否是通往山脚产生一定的怀疑,因此在下一次判断之前,并不会沿着这条路走太远。

在函数上也是这样体现:如果该点下降方向的斜率绝对值大,那么我们一次就会移动得多一点;如果该点下降方向的斜率绝对值小,那么我们一次就会移动少一点。

为了方便控制下坡的速度,我们还需要引入学习率这个变量

学习率可以这样理解:学习率大,相当于我们是大跨步下山的;学习率小,相当于我们是一步一步挪下山的。

学习率不是一个自动生成的值,需要手动进行设置。类似于下山的人需要自行决定是大步走还是小步走。

通过上面的分析,我们可以得出更新坐标b的公式

对上面的公式进行几点解释:

  • 普适性:无论当前点斜率是正数还是负数,上面的公式都成立。
  • 步长控制:步长由当前点的斜率和学习率共同确定。

上面的算法过程,就可以认为是梯度下降算法的退化版“斜率下降算法”。梯度下降算法的过程与“斜率下降算法”完全类似,只不过对于每一个维度(也就是函数中的每一个自变量)都进行一次上面的过程。

相当于下山的过程中,你不仅要考虑向前还是向后是下坡路,同时还要考虑向左还是向右是下坡路,因为最后你走的方向可能是左前方、右后方等而不是直接向着一个单一方向。

上述所述的情况都是针对一个样本点而言对其损失函数进行梯度下降求解,但是实际应用中并非使用损失函数,而是求解使得损失函数在各个样本点的梯度平均值函数值最小的模型参数。损失函数在各个样本点的梯度平均值函数被称为风险函数。

3.什么是随机梯度下降算法

上面我们已经说过,传统梯度下降算法(也称为批量梯度下降算法)中每一次进行判断时都需要计算损失函数在各个样本点的梯度平均值,由此可以得出:

当样本点个数很多时,梯度下降算法逐一的计算过程会耗费大量时间。

同时,这么多的计算结果,如果需要全部保存下来,那么占用的存储空间也是很大的。

因此,对批量梯度下降算法进行改进就得到了随机梯度下降算法。

随机梯度下降算法和批量梯度下降算法的区别在于:随机梯度算法每次只使用少数几个样本点(每次不重复)的梯度的平均值就更新一次模型;而批量梯度下降算法需要使用所有样本点的梯度的平均值更新模型。

因此,随机梯度下降算法的效率明显提高,目前已经得到了广泛应用。

随机梯度下降算法 入门介绍(最通俗易懂)相关推荐

  1. 监督学习——随机梯度下降算法(sgd)和批梯度下降算法(bgd)

    线性回归 首先要明白什么是回归.回归的目的是通过几个已知数据来预测另一个数值型数据的目标值. 假设特征和结果满足线性关系,即满足一个计算公式h(x),这个公式的自变量就是已知的数据x,函数值h(x)就 ...

  2. 【深度学习】梯度下降算法和随机梯度下降算法

    导语 梯度是神经网络中最为核心的概念,在介绍梯度之前我们要先知道数学中的导数以及偏微分的理论概念.导数 这里套用维基百科上的介绍,导数描述了函数在某一点附件的变化率,导数的本质是通过极限对函数进行局部 ...

  3. 梯度下降:全梯度下降算法(FG)、随机梯度下降算法(SG)、小批量梯度下降算法(mini-batch)、随机平均梯度下降算法(SAG)。梯度下降法算法比较和进一步优化。

    日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) 2.2 梯度下降(Gradient Descent) 2.2. ...

  4. python sklearn 梯度下降法_科学网—Python_机器学习_总结4:随机梯度下降算法 - 李军的博文...

    =============================================================== 总结如下: 1.随机梯度下降算法可以看成是梯度下降算法的近似,但通常它能 ...

  5. tensorflow随机梯度下降算法使用滑动平均模型

    在采用随机梯度下降算法训练神经网络时,使用滑动平均模型可以提高最终模型在测试集数据上的表现.在Tensflow中提供了tf.train.ExponentialMovingAverage来实现滑动平均模 ...

  6. 随机梯度下降算法SGD(Stochastic gradient descent)

    SGD是什么 SGD是Stochastic Gradient Descent(随机梯度下降)的缩写,是深度学习中常用的优化算法之一.SGD是一种基于梯度的优化算法,用于更新深度神经网络的参数.它的基本 ...

  7. PyTorch深度学习——梯度下降算法、随机梯度下降算法及实例(B站刘二大人P3学习笔记)

    梯度下降算法 以模型 为例,梯度下降算法就是一种训练参数  到最佳值的一种算法, 每次变化的趋势由 (学习率:一种超参数,由人手动设置调节),以及 的导数来决定,具体公式如下: 注: 此时函数是指所有 ...

  8. 全梯度下降算法、随机梯度下降算法、小批量梯度下降算法、随机平均梯度下降算法、梯度下降算法总结

    一.常见梯度下降算法 全梯度下降算法(Full gradient descent,FGD) 随机梯度下降算法(Stochastic gradient descent,SGD) 随机平均梯度下降算法(S ...

  9. 梯度下降算法与随机梯度下降算法:实现波士顿房价问题

    梯度下降算法: import random import numpy as npk1 = random.random() k2 = random.random() k0 = random.random ...

最新文章

  1. 《疯狂Java讲义》学习笔记(十)异常处理
  2. 结合Flink,国内自研,大规模实时动态认知图谱平台——AbutionGraph |博文精选
  3. AMNO.6 给出一个不多于5位的整数,要求 1、求出它是几位数 2、分别输出每一位数字 3、按逆序输出各位数字,例如原数为321,应输出123 输入 一个不大于5位的数字
  4. Python 爬取图片链接并且解析
  5. Javascript 面向对象编程中的‘new’
  6. C之memset、memcpy、strcpy、strncpy区别
  7. 计组之数据运算:9、浮点数的表示
  8. 最新android proguard下载
  9. 1.22 OSS旧IP下线公告
  10. 安卓蓝牙键盘切换输入法_超薄无线蓝牙双模罗技K580键盘,自由切换享受打字快乐...
  11. linux软raid 系统坏了,LINUX下软RAID的制造及如何查看坏盘?
  12. 软考项目管理师考试随笔
  13. anaconda怎么打开python3.7,使用anaconda更新到python 3.7
  14. AnyLogic 教程JobShop—Prcess Modeling Library
  15. 条形码编码规则及标准
  16. android 静默暗转_Android 7.0 静默安装
  17. IPone 接口压力测试
  18. win系统下打印机服务器在哪里设置密码,win10 32位系统怎么设置共享打印机密码...
  19. 电磁辐射安全标准及检测方法
  20. intellij idea 管理module和project,以及git管理项目

热门文章

  1. 随笔随想-2022-06-07
  2. Oracle 11g用exp无法导出空表的处理方法
  3. 域名注册_申请证书\SSL证书\tls证书
  4. 虚拟机中无ens33文件的解决办法
  5. 谈谈我对零售云在云原生总结与思考
  6. 每日一录20220816—01
  7. 如何让3ds Max 2016导入smd文件
  8. 【Vue基础】前端工程化Vue项目
  9. TI高精度实验室-运算放大器-第十六节-全差分放大器
  10. 公司注销又有新变化! 财务人要知道的公司注销新规定