梯度下降法(GD,gradient descent)是一种优化方法,比如对某个损失函数进行最小化的优化。
其共有三种:

  1. BGD,batch gradient descent:批量梯度下降
  2. SGD,stochastic gradient descent:随机梯度下降
  3. mini-batch GD,mini-batch gradient descent:小批量梯度下降

BGD

  假设有损失函数:
f ( α 0 , α 1 , . . . , α n , ) = 1 m ∑ m j = 0 ( y ^ − y ) 2 f(\alpha_{0},\alpha_{1},...,\alpha_{n},)=\frac{1}{m}\sum_{m}^{j=0}(\hat{y}-y)^{2} f(α0​,α1​,...,αn​,)=m1​m∑j=0​(y^​−y)2
   y ^ \hat{y} y^​是预测值, y y y是真实值,共有 m m m个预测值。
  若要最小化损失函数,需要对每个参数 α 0 , α 1 , . . . , α n \alpha_{0},\alpha_{1},...,\alpha_{n} α0​,α1​,...,αn​求梯度,但是对BGD通常是取所有训练样本损失函数的平均作为损失函数,假设有 β \beta β个样本,则
F ( α 0 , α 1 , . . . , α n ) = 1 β ∑ β i = 0 f i ( α 0 , α 1 , . . . , α n ) F(\alpha_{0},\alpha_{1},...,\alpha_{n})=\frac{1}{\beta}\sum_{\beta}^{i=0}f_{i}(\alpha_{0},\alpha_{1},...,\alpha_{n}) F(α0​,α1​,...,αn​)=β1​β∑i=0​fi​(α0​,α1​,...,αn​)
  所以有梯度更新:
α i = α i − l ⋅ ∂ F ( α 0 , α 1 , . . . , α n ) ∂ α i \alpha_{i}=\alpha_{i}-l\cdot\frac{\partial F(\alpha_{0},\alpha_{1},...,\alpha_{n})}{\partial \alpha_{i}} αi​=αi​−l⋅∂αi​∂F(α0​,α1​,...,αn​)​
   ∂ F ( α 0 , α 1 , . . . , α n ) ∂ α i \frac{\partial F(\alpha_{0},\alpha_{1},...,\alpha_{n})}{\partial \alpha_{i}} ∂αi​∂F(α0​,α1​,...,αn​)​是损失函数对参数 α i \alpha_{i} αi​的偏导数, l l l为学习率,即步长,是一个经验值,过大容易找不到相对最优解,过小会使得优化速度过慢,见到一个这样的形容:学习率如人走路,步伐小要急死,步伐大容易扯着蛋hahaha

SGD

  如果使用BGD会有一个问题,就是每次迭代过程中都要对几个样本进行求梯度,所以开销非常大,随机梯度下降的思想就是随机采样一个样本来更新参数,注意只是一个样本,大大的降低了计算开销。

mini-batch GD

  SGD虽然提高了计算效率,降低了计算开销,但由于每次迭代只随机选择一个样本,因此随机性比较大,所以下降过程中非常曲折,效率也相应降低,所以mini-batch GD采取了一个折中的方法,每次选取一定数目(mini-batch)的样本组成一个小批量样本,然后用这个小批量来更新梯度,这样不仅可以减少计算成本,还可以提高算法稳定性。

  对这三者的关系进行一个比喻就是:
          

个人网站链接

GD(gradient descent):梯度下降法(BGD,SGD,mini-batch GD)相关推荐

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

    排版也是醉了见原文:http://www.cnblogs.com/maybe2030/p/5089753.html 在应用机器学习算法时,我们通常采用梯度下降法来对采用的算法进行训练.其实,常用的梯度 ...

  2. 机器学习小组知识点45:批量梯度下降法(BGD)和随机梯度下降法(SGD)的代码实现Matlab版1

    原 机器学习小组知识点4&5:批量梯度下降法(BGD)和随机梯度下降法(SGD)的代码实现Matlab版 2016年10月19日 10:17:28 Eric2016_Lv 阅读数:3379 这 ...

  3. DistBelief 框架下的并行随机梯度下降法 - Downpour SGD

    本文是读完 Jeffrey Dean, Greg S. Corrado 等人的文章 Large Scale Distributed Deep Networks (2012) 后的一则读书笔记,重点介绍 ...

  4. 局部最优、梯度消失、鞍点、海森矩阵(Hessian Matric)、批梯度下降算法(btach批梯度下降法BGD、小批量梯度下降法Mini-Batch GD、随机梯度下降法SGD)

    日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) BATCH_SIZE大小设置对训练耗时的影响:1.如果当设置B ...

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

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

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

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

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

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

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

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

  9. 最优化方法:梯度下降法、SGD

    前言: 机器学习从目标函数到模型构建到特征提取,需要模型依据目标函数约束,根据回归方式进行调整数学模型,最基本最常用的一种方法是梯度下降法,以梯度下降为指导准则,优化目标函数到最优解.  原文地址:再 ...

最新文章

  1. 20道常见初级Java面试题
  2. 某程序员感叹:本是家族边缘人,但亲戚得知自己年入二百万后,都上来巴结!...
  3. Kaggle知识点:数据分析EDA
  4. Django Abstract Models使用下划线设置related_name
  5. 《Microsoft Sql server 2008 Internals》读书笔记--第十一章DBCC Internals(11)
  6. XML--XML作用
  7. [性能测试] LoadRunner结果分析 – TPS
  8. docker login Error response from daemon: Get http://ip:port/v2/: net/http: request canceled
  9. 非线性方程求解 matlab,MATLAB应用 求解非线性方程
  10. Web前端常用IDE快捷键记忆(WebSorm、VSCode)
  11. 第八章 软件项目团队管理
  12. Java整型变量举例_java 整型常量和整型变量的问题
  13. 平板电脑的尺寸是怎么算出来的
  14. 如何使用计算机建模,计算机模拟在数学建模中的应用
  15. 十几年稳坐“大哥”位,搞Java的程序员就是这么“牛x”!
  16. enjoy 问候相关
  17. WMS系统关于退料的几种方式
  18. 168.Vue.js智能扫码点餐系统(二)【搭建Vue开发环境】2019.03.18
  19. 将open目录及子目录和文件删除
  20. 微信开发者工具为什么一直显示:加载中?

热门文章

  1. emul11是鸿蒙吗,EMUI11什么时候更新-EMUI11有什么新功能
  2. 企业邮箱 如何设置邮件列表与正文的排版?
  3. PHP就业前景好不好一看便知,转行选择需谨慎!
  4. 吃鸡手游竟然是Python写的?
  5. socket编程流程及函数详解
  6. Ubuntu网卡消失解决方法
  7. GB28181结束Invite请求
  8. python实现Theil-Sen Median斜率估计和Mann-Kendall趋势分析
  9. Java 并发工具包(concurrent)详解
  10. jupyter import包失败