阅读目录

  • 1. 批量梯度下降法BGD
  • 2. 随机梯度下降法SGD
  • 3. 小批量梯度下降法MBGD
  • 4. 总结

  在应用机器学习算法时,我们通常采用梯度下降法来对采用的算法进行训练。其实,常用的梯度下降法还具体包含有三种不同的形式,它们也各自有着不同的优缺点。

  下面我们以线性回归算法来对三种梯度下降法进行比较。

  一般线性回归函数的假设函数为:

  对应的能量函数(损失函数)形式为:

  下图为一个二维参数(和)组对应能量函数的可视化图:

回到顶部

1. 批量梯度下降法BGD

  批量梯度下降法(Batch Gradient Descent,简称BGD)是梯度下降法最原始的形式,它的具体思路是在更新每一参数时都使用所有的样本来进行更新,其数学形式如下:

  (1) 对上述的能量函数求偏导:

  (2) 由于是最小化风险函数,所以按照每个参数的梯度负方向来更新每个:

  具体的伪代码形式为:

  repeat{    

      

        (for every j=0, ... , n)

  }

  从上面公式可以注意到,它得到的是一个全局最优解,但是每迭代一步,都要用到训练集所有的数据,如果样本数目很大,那么可想而知这种方法的迭代速度!所以,这就引入了另外一种方法,随机梯度下降。

  优点:全局最优解;易于并行实现;

  缺点:当样本数目很多时,训练过程会很慢。

  从迭代的次数上来看,BGD迭代的次数相对较少。其迭代的收敛曲线示意图可以表示如下:

回到顶部

2. 随机梯度下降法SGD

  由于批量梯度下降法在更新每一个参数时,都需要所有的训练样本,所以训练过程会随着样本数量的加大而变得异常的缓慢。随机梯度下降法(Stochastic Gradient Descent,简称SGD)正是为了解决批量梯度下降法这一弊端而提出的。

  将上面的能量函数写为如下形式:

  利用每个样本的损失函数对求偏导得到对应的梯度,来更新:

  具体的伪代码形式为:

  1. Randomly shuffle dataset;

  2. repeat{

    for i=1, ... , {

      

      (for j=0, ... , )

    }

  }

  随机梯度下降是通过每个样本来迭代更新一次,如果样本量很大的情况(例如几十万),那么可能只用其中几万条或者几千条的样本,就已经将theta迭代到最优解了,对比上面的批量梯度下降,迭代一次需要用到十几万训练样本,一次迭代不可能最优,如果迭代10次的话就需要遍历训练样本10次。但是,SGD伴随的一个问题是噪音较BGD要多,使得SGD并不是每次迭代都向着整体最优化方向。

  优点:训练速度快;

  缺点:准确度下降,并不是全局最优;不易于并行实现。

  从迭代的次数上来看,SGD迭代的次数较多,在解空间的搜索过程看起来很盲目。其迭代的收敛曲线示意图可以表示如下:

回到顶部

3. 小批量梯度下降法MBGD

  有上述的两种梯度下降法可以看出,其各自均有优缺点,那么能不能在两种方法的性能之间取得一个折衷呢?即,算法的训练过程比较快,而且也要保证最终参数训练的准确率,而这正是小批量梯度下降法(Mini-batch Gradient Descent,简称MBGD)的初衷。

  MBGD在每次更新参数时使用b个样本(b一般为10),其具体的伪代码形式为:

  Say b=10, m=1000.

  Repeat{

    for i=1, 11, 21, 31, ... , 991{

    

    (for every j=0, ... , )

    }

  }

4.具体实现描述

(1)线性回归的定义

(2)单变量线性回归

(3)cost function:评价线性回归是否拟合训练集的方法

(4)梯度下降:解决线性回归的方法之一

(5)feature scaling:加快梯度下降执行速度的方法

(6)多变量线性回归

Linear Regression

注意一句话:多变量线性回归之前必须要Feature Scaling!

方法:线性回归属于监督学习,因此方法和监督学习应该是一样的,先给定一个训练集,根据这个训练集学习出一个线性函数,然后测试这个函数训练的好不好(即此函数是否足够拟合训练集数据),挑选出最好的函数(cost function最小)即可;

注意:

(1)因为是线性回归,所以学习到的函数为线性函数,即直线函数;

(2)因为是单变量,因此只有一个x;

我们能够给出单变量线性回归的模型:

我们常称x为feature,h(x)为hypothesis;

从上面“方法”中,我们肯定有一个疑问,怎么样能够看出线性函数拟合的好不好呢?

我们需要使用到Cost Function(代价函数),代价函数越小,说明线性回归地越好(和训练集拟合地越好),当然最小就是0,即完全拟合;

举个实际的例子:

我们想要根据房子的大小,预测房子的价格,给定如下数据集:

根据以上的数据集画在图上,如下图所示:

我们需要根据这些点拟合出一条直线,使得cost Function最小;

虽然我们现在还不知道Cost Function内部到底是什么样的,但是我们的目标是:给定输入向量x,输出向量y,theta向量,输出Cost值;

以上我们对单变量线性回归的大致过程进行了描述;

Cost Function

Cost Function的用途:对假设的函数进行评价,cost function越小的函数,说明拟合训练数据拟合的越好;

下图详细说明了当cost function为黑盒的时候,cost function 的作用;

但是我们肯定想知道cost Function的内部构造是什么?因此我们下面给出公式:

其中:

表示向量x中的第i个元素;

表示向量y中的第i个元素;

表示已知的假设函数;

m为训练集的数量;

比如给定数据集(1,1)、(2,2)、(3,3)
则x = [1;2;3],y = [1;2;3]     (此处的语法为Octave语言的语法,表示3*1的矩阵)
如果我们预测theta0 = 0,theta1 = 1,则h(x) = x,则cost function:
J(0,1) = 1/(2*3) * [(h(1)-1)^2+(h(2)-2)^2+(h(3)-3)^2] = 0;
如果我们预测theta0 = 0,theta1 = 0.5,则h(x) = 0.5x,则cost function:
J(0,0.5) = 1/(2*3) * [(h(1)-1)^2+(h(2)-2)^2+(h(3)-3)^2] = 0.58;

如果theta0 一直为 0, 则theta1与J的函数为:

如果有theta0与theta1都不固定,则theta0、theta1、J 的函数为:

当然我们也能够用二维的图来表示,即等高线图;

注意:如果是线性回归,则costfunctionJ与的函数一定是碗状的,即只有一个最小点;

以上我们讲解了cost function 的定义、公式;

Gradient Descent(梯度下降)

但是又一个问题引出了,虽然给定一个函数,我们能够根据cost function知道这个函数拟合的好不好,但是毕竟函数有这么多,总不可能一个一个试吧?

因此我们引出了梯度下降:能够找出cost function函数的最小值;

梯度下降原理:将函数比作一座山,我们站在某个山坡上,往四周看,从哪个方向向下走一小步,能够下降的最快;

当然解决问题的方法有很多,梯度下降只是其中一个,还有一种方法叫Normal Equation;

方法:

(1)先确定向下一步的步伐大小,我们称为Learning rate;

(2)任意给定一个初始值:

(3)确定一个向下的方向,并向下走预先规定的步伐,并更新

(4)当下降的高度小于某个定义的值,则停止下降;

算法:

特点:

(1)初始点不同,获得的最小值也不同,因此梯度下降求得的只是局部最小值;

(2)越接近最小值时,下降速度越慢;

问题:如果初始值就在local minimum的位置,则会如何变化?

答:因为已经在local minimum位置,所以derivative 肯定是0,因此不会变化;

如果取到一个正确的值,则cost function应该越来越小;

问题:怎么取值?

答:随时观察值,如果cost function变小了,则ok,反之,则再取一个更小的值;

下图就详细的说明了梯度下降的过程:

从上面的图可以看出:初始点不同,获得的最小值也不同,因此梯度下降求得的只是局部最小值;

注意:下降的步伐大小非常重要,因为如果太小,则找到函数最小值的速度就很慢,如果太大,则可能会出现overshoot the minimum的现象;

下图就是overshoot minimum现象:

如果Learning rate取值后发现J function 增长了,则需要减小Learning rate的值;

Integrating with Gradient Descent & Linear Regression

梯度下降能够求出一个函数的最小值;

线性回归需要求出,使得cost function的最小;

因此我们能够对cost function运用梯度下降,即将梯度下降和线性回归进行整合,如下图所示:

梯度下降是通过不停的迭代,而我们比较关注迭代的次数,因为这关系到梯度下降的执行速度,为了减少迭代次数,因此引入了Feature Scaling;

Feature Scaling

此种方法应用于梯度下降,为了加快梯度下降的执行速度;

思想:将各个feature的值标准化,使得取值范围大致都在-1<=x<=1之间;

常用的方法是Mean Normalization,即

或者:

[X-mean(X)]/std(X);

举个实际的例子,

有两个Feature:

(1)size,取值范围0~2000;

(2)#bedroom,取值范围0~5;

则通过feature scaling后,

    

练习题

我们想要通过期中开始成绩预测期末考试成绩,我们希望得到的方程为:

给定以下训练集:

midterm exam (midterm exam) final exam
89 7921 96
72 5184 74
94 8836 87
69 4761 78

我们想对(midterm exam)^2进行feature scaling,则经过feature scaling后的值为多少?

max = 8836,min=4761,mean=6675.5,则x=(4761-6675.5)/(8836-4761) = -0.47;

多变量线性回归

前面我们只介绍了单变量的线性回归,即只有一个输入变量,现实世界不可能这么简单,因此此处我们要介绍多变量的线性回归;

举个例子:

房价其实由很多因素决定,比如size、number of bedrooms、number of floors、age of home等,这里我们假设房价由4个因素决定,如下图所示:

我们前面定义过单变量线性回归的模型:

这里我们可以定义出多变量线性回归的模型:

Cost function如下:

如果我们要用梯度下降解决多变量的线性回归,则我们还是可以用传统的梯度下降算法进行计算:

总练习题:

1.我们想要根据一个学生第一年的成绩预测第二年的成绩,x为第一年得到A的数量,y为第二年得到A的数量,给定以下数据集:

x y
3 4
2 1
4 3
0 1

(1)训练集的个数是多少?  4个;

(2)J(0,1)的结果是多少?

J(0,1) = 1/(2*4)*[(3-4)^2+(2-1)^2+(4-3)^2+(0-1)^2] = 1/8*(1+1+1+1) = 1/2 = 0.5;

我们也可以通过vectorization的方法快速算出J(0,1):

梯度下降及具体计算方式相关推荐

  1. 梯度下降计实例计算(二维)

    梯度下降计实例计算(二维) 文章目录 内容简介 示例说明 绘制曲线 进一步讨论 参考资料 内容简介 梯度下降是在机器学习中重要的计算内容.本文就一个具体的示例,展示如何在梯度下降中. 示例说明 设损失 ...

  2. 梯度下降法和牛顿法计算开根号

    梯度下降法和牛顿法计算开根号 本文将介绍如何不调包,只能使用加减乘除法实现对根号x的求解.主要介绍梯度下降和牛顿法者两种方法,并给出 C++ 实现. 梯度下降法 思路/步骤 转化问题,将 x \sqr ...

  3. 【数据挖掘】神经网络 后向传播算法 ( 梯度下降过程 | 梯度方向说明 | 梯度下降原理 | 损失函数 | 损失函数求导 | 批量梯度下降法 | 随机梯度下降法 | 小批量梯度下降法 )

    文章目录 I . 梯度下降 Gradient Descent 简介 ( 梯度下降过程 | 梯度下降方向 ) II . 梯度下降 示例说明 ( 单个参数 ) III . 梯度下降 示例说明 ( 多个参数 ...

  4. Lesson 4.34.4 梯度下降(Gradient Descent)基本原理与手动实现随机梯度下降与小批量梯度下降

    Lesson 4.3 梯度下降(Gradient Descent)基本原理与手动实现 在上一小节中,我们已经成功的构建了逻辑回归的损失函数,但由于逻辑回归模型本身的特殊性,我们在构造损失函数时无法采用 ...

  5. 大白话5分钟带你走进人工智能-第七节梯度下降之梯度概念和梯度迭代过程(2)

    第七节梯度下降之梯度概念和梯度迭代过程(2) 上一节中针对一元函数,找到了一个看起来还不错的一种寻求数值上的最小值的这种方式.大致是这么一个流程,F(w)和F'(w),上来先瞎蒙出来一组w,然后带到这 ...

  6. 梯度下降的超参数大于等于2什么意思_大白话5分钟带你走进人工智能-第七节梯度概念和梯度迭代过程(2)...

    第七节梯度下降之梯度概念和梯度迭代过程(2) 上一节中针对一元函数,找到了一个看起来还不错的一种寻求数值上的最小值的这种方式.大致是这么一个流程,F(w)和F`(w),上来先瞎蒙出来一组w,然后带到这 ...

  7. 大白话5分钟带你走进人工智能-第七节梯度下降之梯度概念和梯度迭代过程(2)...

    第七节梯度下降之梯度概念和梯度迭代过程(2) 上一节中针对一元函数,找到了一个看起来还不错的一种寻求数值上的最小值的这种方式.大致是这么一个流程,F(w)和F`(w),上来先瞎蒙出来一组w,然后带到这 ...

  8. 前向传播、反向传播(后向传播)、梯度下降、导数、链式法则

    日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) 2.4 神经网络最优化过程 2.4.1 最优化(Optimiz ...

  9. 大白话5分钟带你走进人工智能-第九节梯度下降之函数最优化算法和梯度下降代码过程解析(4)

        第九节梯度下降之函数最优化算法(4) 上一节中我们介绍了梯度下降的两种方式,批量梯度下降和随机梯度下降的两种方式,介绍了其具体的梯度下降的方式.本节的话,我们介绍一种函数最优化的算法.以后一听 ...

最新文章

  1. kerberos 身份认证 简介
  2. tcl中的string trim使用时需要注意substring是一个集合
  3. Python 之字典常用方法
  4. GNU C - 关于8086的内存访问机制以及内存对齐(memory alignment)
  5. 有了JSON.stringify(),处理json将变得更简单!!
  6. python转cpp_python转c工具
  7. 2021年中国健康险行业创新研究报告
  8. mysql5.7设置root密码无效_mysql 5.7 设置root密码方法
  9. 802.11无线信道详解
  10. Hibernate使用的一些细节注意事项
  11. Android入门:EditText
  12. JSTL 学习、应用记录
  13. matlab衰减指数的程序是,如何用MATLAB仿真单指数衰减振荡波
  14. Ubuntu 安装包安装搜狗输入法
  15. MacOS罗技鼠标定义的功能键经常失灵
  16. 常用USB芯片介绍(转串口、SPI 、单片机读写U盘)
  17. 组装笔记本计算机,老笔记本DIY 不到100元就可改装一体机
  18. 中国室内定位系统LBS市场现状研究分析与发展前景预测报告(2022)
  19. 百度地图android兼容,支持离线地图 百度地图Android版上线
  20. Unirech腾讯云国际站代充-云服务器系统盘使用问题

热门文章

  1. Android屏幕常亮防息屏
  2. 【UEFI实战】HII之配置
  3. 谁教会老公出轨外面养情人
  4. Android软件安装工具-APK安装器
  5. 滚动轴承损伤、偏翘、电蚀、跑外圈特征分析及信号特征提取
  6. 如何理解国产操作系统,现状又是如何?
  7. 大数据技术之Spark(三) SparkStreaming
  8. 乐鑫Esp32学习之旅 23 安信可 esp32-a1s 音频开发板移植最新 esp-adf 音频框架,小试牛刀如何实现在线文字转语音播放。
  9. React之ref的高阶用法
  10. 12306抢票系统的NB解析