在机器学习领域中,梯度下降的方式有三种,分别是:批量梯度下降法BGD、随机梯度下降法SGD、小批量梯度下降法MBGD,并且都有不同的优缺点。

下面我们以线性回归算法(也可以是别的算法,只是损失函数(目标函数)不同而已,它们的导数的不同,做法是一模一样的)为例子来对三种梯度下降法进行比较。

1. 线性回归

假设 特征 和 结果 都满足线性。即不大于一次方。这个是针对 收集的数据而言。
收集的数据中,每一个分量,就可以看做一个特征数据。每个特征至少对应一个未知的参数。这样就形成了一个线性模型函数,向量表示形式:

这个就是一个组合问题,已知一些数据,如何求里面的未知参数,给出一个最优解。 一个线性矩阵方程,直接求解,很可能无法直接求解。有唯一解的数据集,微乎其微。

基本上都是解不存在的超定方程组。因此,需要退一步,将参数求解问题,转化为求最小误差问题,求出一个最接近的解,这就是一个松弛求解。

求一个最接近解,直观上,就能想到,误差最小的表达形式。仍然是一个含未知参数的线性模型,一堆观测数据,其模型与数据的误差最小的形式,模型与数据差的平方和最小:

2. 参数更新

对目标函数进行求导,导数如下:

利用梯度下降跟新参数,参数更新方式如下:

                                                                                                                                                                           (1)

3. 批量梯度下降法(Batch Gradient Descent,简称BGD)是梯度下降法最原始的形式,它的具体思路是在更新每一参数时都使用所有的样本来进行更新,也就是方程(1)中的m表示样本的所有个数。

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

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

4. 随机梯度下降法:它的具体思路是在更新每一参数时都使用一个样本来进行更新,也就是方程(1)中的m等于1。每一次跟新参数都用一个样本,更新很多次。如果样本量很大的情况(例如几十万),那么可能只用其中几万条或者几千条的样本,就已经将theta迭代到最优解了,对比上面的批量梯度下降,迭代一次需要用到十几万训练样本,一次迭代不可能最优,如果迭代10次的话就需要遍历训练样本10次,这种跟新方式计算复杂度太高。

但是,SGD伴随的一个问题是噪音较BGD要多,使得SGD并不是每次迭代都向着整体最优化方向。

优点:训练速度快;

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

从迭代的次数上来看,SGD迭代的次数较多,在解空间的搜索过程看起来很盲目。

5.小批量梯度下降法(Mini-batch Gradient Descent,简称MBGD):它的具体思路是在更新每一参数时都使用一部分样本来进行更新,也就是方程(1)中的m的值大于1小于所有样本的数量。为了克服上面两种方法的缺点,又同时兼顾两种方法的有点。

6.三种方法使用的情况:

如果样本量比较小,采用批量梯度下降算法。如果样本太大,或者在线算法,使用随机梯度下降算法。在实际的一般情况下,采用小批量梯度下降算法。

参考:

http://blog.csdn.net/viewcode/article/details/8794401

http://mp.weixin.qq.com/s/fXlbB7KmiX0iIv6xwSxNIA

常见优化算法批量梯度下降、小批量梯度下降、随机梯度下降的对比相关推荐

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

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

  2. 3. 机器学习中为什么需要梯度下降?梯度下降算法缺点?_浅谈随机梯度下降amp;小批量梯度下降...

    机器学习三要素 上次的报告中,我们介绍了一种用于求解模型参数的迭代算法--梯度下降法.首先需要明确一点,即"梯度下降算法"在一个完整的统计学习流程中,属于什么?根据<统计学习 ...

  3. 梯度下降(BGD)、随机梯度下降(SGD)、Mini-batch Gradient Descent、带Mini-batch的SGD

    原文:http://blog.csdn.net/llx1990rl/article/details/44001921 梯度下降(BGD).随机梯度下降(SGD).Mini-batch Gradient ...

  4. 机器学习之梯度下降法(GD)、随机梯度下降法(SGD)和随机平均梯度下降法(SAGD)

    目录 基本原理 梯度下降法(Gradient Descent) 随机梯度下降法(Stochastic Gradient Descent,SGD)

  5. 梯度下降法的三种形式BGD(批量梯度下降)、SGD(随机梯度下降)以及MBGD(小批量梯度下降)

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

  6. 梯度下降法和随机梯度下降,批量梯度下降法,小批量梯度下降(SGD,MGD,BMGD)

    梯度下降法 其有着三种不同的形式: 批量梯度下降(Batch Gradient Descent). 随机梯度下降(Stochastic Gradient Descent) 以及小批量梯度下降(Mini ...

  7. 批量梯度下降法(BGD)、随机梯度下降法(SGD)和小批量梯度下降法(MBGD)

    在机器学习中,对于很多监督学习模型,需要对原始的模型构建损失函数,接下来便是通过优化算法对损失函数进行优化,以便找到最优的参数. 梯度下降法作为机器学习中较常使用的优化算法,在其求解过程中,只需要求解 ...

  8. 详解批量梯度下降法(BGD)、随机梯度下降法(SGD)和小批量梯度下降法(MBGD)

    在应用机器学习算法时,我们常采用梯度下降法来对才用的算法进行训练.梯度下降法有三种不同的形式:批量梯度下降(Batch Gradient Descent).随机梯度下降(Stochastic Grad ...

  9. 机器学习(四):批量梯度下降法(BGD)、随机梯度下降法(SGD)和小批量梯度下降法(MBGD)

    本文基于吴恩达老师的机器学习课程.看了吴恩达老师的机器学习课程,收获很多,想把课上学做的笔记结合自己的理解以及找到的一些资料综合起来做一个总结.大家感兴趣也可以自己去看一看吴恩达老师的课,这套课程,被 ...

最新文章

  1. form action可以变量么_在 Laravel 中优雅处理 Form 表单
  2. 计算机软件申请专利的困难,对于一个软件系统,在中国现在可以申请专利吗?...
  3. python 遍历数组根据规律拆分,python 实现以相同规律打乱多组数据
  4. npm 全局安装node module并查看安装路径
  5. Node.js的require()的工作原理
  6. SpringBoot 核心源码解读
  7. JAVA映射文件到内存,java之内存映射文件
  8. 手把手教大家搭建微信公众号查题
  9. 网秦安全盾 原理分析
  10. GPC规范--安全域基础概念
  11. 2048小游戏(原生js基础代码篇)
  12. 怎么将静图变动图?用这个网站就够了
  13. 横扫13项中文NLP记录,中文字型深度学习模型Glyce问世!
  14. 按键控制输出占空比可调的PWM波
  15. 1.PSTN与VoIP基础
  16. 无需转动魔方即可判断魔方拼装错误的完整方法
  17. MATLAB设计FIR数字滤波器GUI界面
  18. 阿里云推荐码 9折优惠 vx89to
  19. 11.8-11.13
  20. 手把手实现andriod应用增量升级

热门文章

  1. 满分最优解法:1007 素数对猜想 (20分)
  2. 数据库原理与应用(SQL Server)笔记 第十章 用户定义函数
  3. Java文本框只有一行数据,Java只允许输入数目字的文本框
  4. php实战 案例教程,php实战案例
  5. Redis数据库(一)——介绍、配置与优化
  6. linux耳机检测,Audio Jack 的耳机检测和按键检测
  7. java登录注册升级代码_【升级版】Java 登录,注册,传数据到后台小案例
  8. impala元数据放到mysql_impala系列: 同步Hive元数据和收集统计信息
  9. php php5,初探 PHP5 (一)_PHP
  10. python数据可视化的特点_Python数据可视化 pyecharts实现各种统计图表过程详解