首先来看一个最简单的例子,即线性回归。

与之前一样,我们从代价函数(cost function)开始。

1_CSocAhQwk1xuncdV7aRdmA

线性回归复习完毕。

所以,梯度下降算法是什么?

1_7EFYKfICK48B5jCxgYHVLQ

上面算法的意思是说,为了执行梯度下降,我们就要计算代价函数 J 的梯度。为了计算代价函数的梯度,我们要对所有样本的代价进行求和(黄色圆圈)。也就是说,如果有300万个样本,我们每计算一次梯度就要循环计算300万次。

下面是Python代码:

1def gradientDescent(X, y, theta, alpha, num_iters):
2    """
3       执行梯度下降
4    """
5    m = y.size # 训练样本的数量
6    for i in range(num_iters):
7        y_hat = np.dot(X, theta)
8        theta = theta - alpha * (1.0/m) * np.dot(X.T, y_hat-y)
9    return theta

看到上面的 np.dot(X.T, y_hat-y) 了吗?这是 “循环(求和)300万个样本” 的矢量化版本。

等等….这只是向最小化迈进了一步,我们真的要每计算一次代价就要计算300万次吗?

是的,如果使用梯度下降的话。

但如果使用随机梯度(Stochastic Gradient Descent, SGD)下降,就没有必要计算这么多次!

1_7LbtloKtsBZW1P0DmR4UDA

基本上,在SGD中,我们在每次迭代时只使用 1 个样本的梯度,用它来代替所有样本的梯度之和。

 1def SGD(f, theta0, alpha, num_iters):2    """ 3       参数:4       f  - 要优化的函数,它需要一个参数5            并产生两个输出,一个代价和相对于参数的梯度6       theta0 - 开始 SGD 的初始值7       num_iters  - SGD 的总迭代次数8       返回:9       theta  -  SGD 结束后的参数值
10    """
11    start_iter = 0
12    theta= theta0
13    for iter in xrange(start_iter + 1, num_iters + 1):
14        _, grad = f(theta)
15        theta = theta - (alpha * grad) # 没有使用点积
16    return theta

这是一个非常简单的算法!

有几点注意事项:

  1. 在SGD中,在循环之前,您需要随机更改训练样本。

  2. 在SGD中,因为它一次只使用一个样本,所以它的最小值路径比批量梯度的路径更嘈杂(更随机)。但是没关系,因为我们对路径漠不关心,只要它给我们最小的值和更短的训练时间。

  3. 小批量梯度下降在每次迭代时使用n个样本点(而不是SGD中的1个样本)。

原文:https://towardsdatascience.com/difference-between-batch-gradient-descent-and-stochastic-gradient-descent-1187f1291aa1

批量梯度下降与随机梯度下降之间的关系相关推荐

  1. 批量梯度下降,随机梯度下降和小批量梯度下降的区别

    批量梯度下降,随机梯度下降和小批量梯度下降的区别主要体现在用于计算梯度的样本的数量: 批量梯度下降:在每次迭代时,用整个数据集的所有样本上的梯度计算更新. 随机梯度下降:在每次迭代时,用单个样本上的梯 ...

  2. 『ML笔记』梯度下降法和随机梯度下降法和小批量梯度对比

    目录 1. 梯度下降法(gradient descent) 2. 随机梯度下降(Stochastic gradient descent) 3. 小批量梯度下降(Mini-Batch gradient ...

  3. 梯度下降算法_批梯度下降法,Minibatch梯度下降法和随机梯度下降法之间的区别...

    什么是梯度下降法? 梯度下降法是一种机器学习中常用的优化算法,用来找到一个函数(f)的参数(系数)的值,使成本函数(cost)最小. 当参数不能解析计算时(如使用线性代数),并且必须通过优化算法搜索时 ...

  4. 随机梯度下降法matlab程序,批量梯度下降和随机梯度下降

    1.概念 (1)批量梯度下降---最小化所有训练样本的损失函数,使得最终求解的是全局的最优解,即求解的参数是使得风险函数最小. (2)随机梯度下降---最小化每条样本的损失函数,虽然不是每次迭代得到的 ...

  5. 大白话5分钟带你走进人工智能-第十一节梯度下降之手动实现梯度下降和随机梯度下降的代码(6)...

                                第十一节梯度下降之手动实现梯度下降和随机梯度下降的代码(6) 我们回忆一下,之前咱们讲什么了?梯度下降,那么梯度下降是一种什么算法呢?函数最优化 ...

  6. 梯度下降与随机梯度下降

    梯度下降法先随机给出参数的一组值,然后更新参数,使每次更新后的结构都能够让损失函数变小,最终达到最小即可.在梯度下降法中,目标函数其实可以看做是参数的函数,因为给出了样本输入和输出值后,目标函数就只剩 ...

  7. 最优化方法:梯度下降(批梯度下降和随机梯度下降)

    http://blog.csdn.net/pipisorry/article/details/23692455 梯度下降法(Gradient Descent) 梯度下降法是一个一阶最优化算法,通常也称 ...

  8. 梯度、梯度下降,随机梯度下降

    一.梯度gradient http://zh.wikipedia.org/wiki/%E6%A2%AF%E5%BA%A6 在标量场f中的一点处存在一个矢量G,该矢量方向为f在该点处变化率最大的方向,其 ...

  9. 梯度下降法和随机梯度下降法

    1. 梯度 在微积分里面,对多元函数的参数求∂偏导数,把求得的各个参数的偏导数以向量的形式写出来,就是梯度.比如函数f(x,y), 分别对x,y求偏导数,求得的梯度向量就是(∂f/∂x, ∂f/∂y) ...

  10. pytorch学习笔记(三十三):梯度下降和随机梯度下降

    文章目录 前言 1. 一维梯度下降 2. 学习率 3. 多维梯度下降 4. 随机梯度下降 小结 前言 在本节中,我们将介绍梯度下降(gradient descent)的工作原理.虽然梯度下降在深度学习 ...

最新文章

  1. Apache优化:修改最大并发连接数
  2. Java反射以及应用
  3. flask-WTF和sqlalchemy结合使用并实现管理员表和用户表之间的关联关系(结合前端页面实现管理员和用户选择登录)
  4. ajax使用json下拉框,ajax请求后台得到json数据后动态生成树形下拉框的方法
  5. mysql聚集索引和二级索引_mysql8 参考手册--聚集索引和二级索引
  6. 服务器上有图片但是app不显示不出来,网络app图片显示不出来的
  7. 【职场】什么才是程序员摸鱼的最高境界?
  8. 如何配置代码自动校验功能
  9. php正则如何使用 1,PHP正则表达式使用详解(1)
  10. 关于EL表达式中requestScope和param区别
  11. 三菱modbusRTU通讯实例_PLC编程入门梯形图实例讲解
  12. Python 猜数字小游戏 (带闯关关卡)
  13. iPad入手必备手册——iPad Mini 使用手册(适用于iOS 6软件 )
  14. php服务器代维,服务器维护
  15. syswow64删除文件_什么是SysWow64文件夹 SysWow64文件夹可以删除吗
  16. 在word中填充背景颜色的方法
  17. 拒酒词,社交必备!!!
  18. 通达信手机版分时图指标大全_通达信精选指标——主力潜伏中优化版
  19. 动态效果网页HTML+CSS+JS
  20. 线性时不变系统——信号系统学习笔记

热门文章

  1. 量子计算机基地边缘,成都提前布局6G、量子计算、边缘计算等前沿技术
  2. redis篇-基础与应用篇(上)
  3. C语言考前复习(仅供参考)
  4. 打印log4j日志 : 超过一定大小新建日志文件 每天新建一个日志文件
  5. 【Arduino基础教程】LCD 1602显示屏
  6. LC谐振电路应用太难了?其实这一步至关重要
  7. 内网服务器设置NAT123端口映射,方便外网连接;如何测试端口连通情况。
  8. HP M130NW打印机换了路由器连接WIFI打印方法
  9. HTML5常用新特性
  10. Python上下文管理器的魔力