先整理下概念:
梯度下降={BGD(批量梯度下降)SGD(随机梯度下降)MBGD(小批量梯度下降)梯度下降=\left\{ \begin{aligned} BGD (批量梯度下降) \\ SGD(随机梯度下降)\\ MBGD(小批量梯度下降) \end{aligned} \right.梯度下降=⎩⎪⎨⎪⎧​BGD(批量梯度下降)SGD(随机梯度下降)MBGD(小批量梯度下降)​

接下来逐步展开
######################梯度下降(开始)######################################
梯度下降的作用:求函数的极值

一、首先是BGD(Batch Gradient Descent)
##########################################################################

一般线性回归函数的假设函数为:
hw=∑j=0nwjxjh_w=\sum_{j=0}^{n}w_{j}x_{j}hw​=j=0∑n​wj​xj​
损失函数:
Jtrain(w)=12m∑i=1m(hw(x(i))−y(i))2J_{train}(w)=\frac{1}{2m}\sum_{i=1}^{m}(h_{w}(x^{(i)})-y^{(i)})^{2}Jtrain​(w)=2m1​i=1∑m​(hw​(x(i))−y(i))2

下图为一个二维参数
θ0(也就是w0)\theta_{0}(也就是w_0)θ0​(也就是w0​)

θ1(也就是w1)\theta_{1}(也就是w_1)θ1​(也就是w1​)
誤差函數的可视化图:

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

(1) 对上述的损失函数求偏导:
∂J(w)∂wj=−1m∑i=1m(yi−hw(xi))xji\frac{\partial J(w)}{\partial w_j}=-\frac{1}{m}\sum_{i=1}^m(y^i-h_{w}(x^i))x_j^i∂wj​∂J(w)​=−m1​i=1∑m​(yi−hw​(xi))xji​
(2) 由于是最小化风险函数,所以按照每个参数θ的梯度负方向来更新每个www:
wj′=wj−η1m∑i=1m(yi−hw(xi))xjiw_j^{'}=w_j-\eta \frac{1}{m}\sum_{i=1}^m(y^i-h_{w}(x^i))x_j^iwj′​=wj​−ηm1​i=1∑m​(yi−hw​(xi))xji​
  
iii是样本编号下标,jjj是样本维数下标,mmm为样例数目,nnn为特征数目。所以更新一个wjw_jwj​需要遍历整个样本集.僞代碼如下:

Repeat until convergence{
wj:=wj−η⋅1m∑i=1m(y(i)−hw(xi))xjiw_j:=w_j-\eta·\frac{1}{m}\sum_{i=1}^m(y^{(i)}-h_{w}(x^{i}))x_j^{i}wj​:=wj​−η⋅m1​i=1∑m​(y(i)−hw​(xi))xji​(for every j=0, … , n)
}
其中η\etaη是學習率
每次更新权重都要使用所有的数据来计算一遍

优点:易于并行实现,抗噪聲能力強;
缺点:当样本数目很多时,训练过程会很慢。

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

wikipedia上面的介绍:
https://en.wikipedia.org/wiki/Gradient_descent

####################梯度下降(結束)##########################################
####################隨機梯度下降(開始)##########################################
根据Who invented stochastic gradient descent?
SGD的发明来自下面的三篇论文:

Herbert Robbins and Sutton Monro A Stochastic Approximation Method The Annals of Mathematical Statistics, Vol. 22, No. 3. (Sep., 1951), pp. 400-407.J. Kiefer and J. Wolfowitz Stochastic Estimation of the Maximum of a Regression Function Ann. Math. Statist. Volume 23, Number 3 (1952), 462-466Leon Bottou and Frank E. Curtis and Jorge Nocedal Optimization Methods for Large-Scale Machine Learning, Technical Report, arXiv:1606.04838

SGD的伪代码如下(Stochastic gradient descent):
Choose an initial vector of parameters www and learning rate η\etaη .
Repeat until an approximate minimum is obtained:
Randomly shuffle examples in the training set.
For {iii=1,2,…,n} {iii=1,2,…,n}, do:
{www:=www-η\etaη ∇\nabla∇ Qi(w)Q_{i}(w)Qi​(w).}

根据Stochastic gradient descent:

The key difference compared to standard (Batch) Gradient Descent is that
only one piece of data from the dataset is used to calculate the step,
and the piece of data is picked randomly at each step.

所以伪代码中的For后面的意思是,每个step都要打乱所有数据然后随机抽一条来进行权重的更新,
而不是进行O(n)O(n)O(n)复杂度的for循环的意思.

####################隨機梯度下降(结束)##########################################

最后,所谓的Mini-BGD(也被称为MBGD),就是更新权重的时候,既不使用所有数据,也不仅仅使用一条数据,而是使用一小批(Mini-Batch)数据.

####################################################################
总结

Batch gradient descent: Use all examples in each iteration;

Stochastic gradient descent: Use 1 example in each iteration;

Mini-batch gradient descent: Use b examples in each iteration.
随机的意思就是随机抽取一部分数据用来更新权重,
更新权重的依据就是误差函数的值越来越小(或者说接近极值)
停止更新权重的依据是更新前后权重www的数值相差不大.

梯度下降原理汇总(转载+整理)相关推荐

  1. [深度学习概念]·梯度下降原理讲解

    目录 梯度下降的场景假设 梯度下降 微分 梯度 梯度下降算法的数学解释 梯度下降算法的实例 单变量函数的梯度下降 多变量函数的梯度下降 梯度下降算法的实现 coding time 小结 Further ...

  2. 梯度下降原理及线性回归代码实现(python/java/c++)

    "梯度下降"顾名思义通过一步一步迭代逼近理想结果,当达到一定的精度或者超过迭代次数才退出,所以所获得的结果是一个近似值.在其他博客上面基本都有一个通俗的比喻:从山顶一步步下山.下面 ...

  3. 梯度下降原理及Python实现

    梯度下降算法是一个很基本的算法,在机器学习和优化中有着非常重要的作用,本文首先介绍了梯度下降的基本概念,然后使用python实现了一个基本的梯度下降算法.梯度下降有很多的变种,本文只介绍最基础的梯度下 ...

  4. 机器学习 | 梯度下降原理及Python实现

    文章目录 1. 梯度下降 1.1 批量梯度下降(BGD) 1.1.1 学习率的设置 1.1.2 Python 实现 BGD 1.2 随机梯度下降(SGD) 1.2.1 Python 实现 SGD 1. ...

  5. 梯度下降原理(SGD,Adam,BGD,momentum,Adagrad,NAG)

    近年来,AI大潮汹涌澎湃,包括机器学习,深度学习,计算机视觉,自然语言处理在内的许多领域都在迅速发展,并取得了显著的成果.每年都会有很多优秀经典的算法提出来,适用于不同的场景.However,现在网络 ...

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

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

  7. 梯度下降原理及在线性回归、逻辑回归中的应用

    1 基本概念 1)定义 梯度下降法,就是利用负梯度方向来决定每次迭代的新的搜索方向,使得每次迭代能使待优化的目标函数逐步减小. 梯度下降法是2范数下的最速下降法. 最速下降法的一种简单形式是:x(k+ ...

  8. 【机器学习】自己手写实现线性回归,梯度下降 原理

    导包 import numpy as npimport matplotlib.pyplot as plt %matplotlib inlinefrom sklearn.linear_model imp ...

  9. 【机器学习】梯度下降原理

    import numpy as np import matplotlib.pyplot as plt %matplotlib inlinef = lambda x :(x-3)**2+2.5*x-7. ...

最新文章

  1. 佐治亚理工学院计算科学与工程系博士生招生!
  2. 程序员,想要彻底弄懂Redis,这15点你一定要明白~(纯干货)
  3. WebFetch 是无依赖极简网页爬取组件
  4. 文献记录(part49)--极大熵聚类算法的收敛性定理证明
  5. Vue.js 3.0 响应式 API 比 2.x 好在哪儿?
  6. 无插件,无com组件,利用EXCEL、WORD模板做数据导出(一)
  7. BugkuCTF-Crypto题杰斐逊
  8. 类模板的分离式编译错误解决
  9. Python学习day02_数字类型 与 布尔类型 短路逻辑和运算符优先级
  10. apache启用gzip压缩方法
  11. 决策树的简单实现与可视化
  12. About_CSDN
  13. PHP后端美化,基于Thinkphp5.5表白墙源码,已美化后端
  14. 工艺过程卡片,工序卡片,工艺卡,刀具卡区别
  15. 元器件中关于晶体二极管的小小知识 2021-09-07
  16. 普渡大学电子计算机专业,普渡大学计算机系统研究生专业排名真是得留神去看...
  17. 基于javaweb的文具学习用品商城系统(java+ssm+jsp+jquery+mysql)
  18. kicad最小布线宽度默认是多少_常见停车场管理系统项目的安装布线及注意事项...
  19. java线程报时代码_什么?一个核同时执行两个线程?
  20. 百万互动出圈爆品复盘,小红书品牌如何高效打造爆品?

热门文章

  1. JS原生 实现图片懒加载
  2. android 启动器开发,Android启动器(Launcher)开发详解
  3. aerials标准测试图像_Python 图像读写谁最快?不信就比一比
  4. linux复制文件夹 实例,linux复制文件夹与文件实例介绍linux操作系统 -电脑资料
  5. 微信小程序wx.request中post请求时data中参数不能传到后台
  6. 解决Chrome调用IE弹出cmd黑窗口的问题
  7. ubuntuKylin17.04重装KDE
  8. C++ Rand()各种实现
  9. 大气辐射示意简单图_手绘地理 | 分步骤图解大气受热过程及应用
  10. 39、自定义控件(四)-- View源码分析