Andrew Ng 机器学习笔记 15 :大数据集梯度下降

原创 2018年04月15日 21:50:55

随机梯度下降

对于线性回归、逻辑回归、神经网络等等很多机器学习算法,其实现都是通过得出某个代价函数或者某个最优化的目标来实现的,然后使用梯度下降这样的方法来求得代价函数的最小值。

而梯度下降在大量数据的情况下,每一次的梯度下降的计算量就变得非常大,因为需要对所有的训练样本求和。因此,这种在每次迭代中对所有数据都进行计算的梯度下降算法也被称为批量梯度下降(batch gradient descent)

随机梯度下降原理

随机梯度下降的代价函数如下:

cost(θ,(x(i),y(i)))=12(hθ(x(i))y(i))2Jtrain(θ)=1mi=1mcost(θ,(x(i),y(i)))

随机梯度下降算法中,我们的步骤如下:

  1. 将所有数据打乱。
  2. 重复执行梯度下降计算,注意,这里每一次计算θj不是遍历全部的训练集m,而是从m个训练集里取出1个样本来计算。所以每次梯度下降的计算只需要一个样本代入计算。这一点是和批量梯度下降最大的不同。

随机梯度下降过程中,相比于批量梯度下降,会更曲折一些,但每一次的迭代都会更快,因为我们不需要对所有样本求和,每一次只需要保证拟合一个样本即可。

实际上,运行随机梯度下降和批量梯度下降这两种算法的收敛形式是不同的,你会发现随机梯度下降最终会在靠近全局最小值的区域内徘徊,而不是直接逼近全局最小值并停留在那里。但实际上这并没有太大问题,只要参数最终移动到某个非常靠近全局最小值的区域内,这也会得到一个较为不错的假设。

由于随机梯度下降每一次的梯度下降计算只需要计算单个样本,而不是像批量梯度下降那样每次计算全部样本,所以随机梯度下降的下降过程会很快。

最后还有一个细节点,在随机梯度下降的过程中,我们定义了一个外层循环,那么这个外层循环应该定义为多少次呢?这取决于你样本的数量。一般情况下一次就够了,最多10次是比较典型的。所以我们通常循环执行1到10次。

小批量梯度下降

在批量梯度下降中每次迭代我们都要用所有的m个样本;然而在随机梯度下降中每次迭代我们只用一个样本;小批量梯度下降的做法介于它们之间。准确地说在这种方法中我们每次迭代使用b个样本,b是一个叫做“小批量规模”的参数。

小批量梯度下降vs随机梯度下降

那么小批量梯度下降算法和随机梯度下降算法相比,有什么优势呢?

答案是向量化。具体来说,小批量梯度下降算法比随机梯度下降算法更好的原因在于前者每次梯度下降过程中,批量处理的数据可以用一种更向量化的方法来实现,允许你部分并行计算10个样本的和,而随机梯度下降算法每次只去计算一个样本,没有太多的并行计算。

小批量梯度下降算法相比随机梯度下降算法的一个缺点,是有额外的参数b。因此你需要一些时间来调试小批量b的大小。但是如果你有一个好的向量化实现,这种方式会比随机梯度下降更快一些。

随机梯度下降的收敛

随机梯度下降过程中,在每一次梯度下降的迭代执行前,我们都去用当前的随机样本(x(i),y(i))来计算当前的关于θ的cost函数:

cost(θ,(x(i),y(i)))=12(hθ(x(i))y(i))2

在每次迭代之后都去更新θ,每个样本迭代一次。

最后为了检查随机梯度下降的收敛性,我们要做的是每1000次迭代,我们可以画出前一步中计算出的cost函数。

我们把这些cost函数画出来,并对算法处理的最后1000个样本的cost值求平均值。如果你这样做的话它会很有效地帮你估计出你的算法在最后1000个样本上的表现。所以,我们不需要时不时地计算Jtrain,那样的话需要所有的训练样本。

LINUX is obsolete Linux的技术过时了 Date: 29 Jan 92 12:12:50 GMT

*** EOOH *** 来自Newsgroup的论争From: ast@cs.vu.nl (Andy Tanenbaum)Newsgroups: comp.os.minixSubject: LINU...
  • Virtual
  • Virtual
  • 2001-01-05 09:03:00
  • 1155

监督学习之梯度下降——Andrew Ng机器学习笔记(一)

写在前面的话一直对机器学习非常感兴趣,现在终于脚踏式的开始了。自己感觉很开心,而且也是看着Andrew Ng老师的视频自学。想用博客记录下自己学习机器学习的点滴。 Andrew Ng老师,中文名:吴...
  • A_cainiao_A
  • A_cainiao_A
  • 2015-12-21 14:48:05
  • 5750

Andrew Ng机器学习课程笔记--week3

Logistic Regression一、内容概要 Classification and Representation Classification Hypothesis Representatio...
  • marsggbo
  • marsggbo
  • 2017-08-03 11:55:45
  • 539

Andrew Ng 机器学习 第一课 监督学习应用.梯度下降 笔记

简介:监督学习应用——自主推导,ALVINN系统,线性回归,梯度下降,组梯度下降,随机梯度下降,标准方程推导。...
  • guotong1988
  • guotong1988
  • 2015-10-30 10:46:24
  • 705

Coursera上的Andrew Ng《机器学习》学习笔记Week1

Coursera上的Andrew Ng《机器学习》学习笔记Week1 作者:雨水/家辉,日期:2017-01-17,CSDN博客:http://blog.csdn.net/gobitan 注:本课...
  • gobitan
  • gobitan
  • 2017-01-17 17:27:53
  • 993

监督学习之生成学习算法——Andrew Ng机器学习笔记(四)

内容提要这篇博客的主要讲生成学习算法,主要包括两个算法: - 高斯判别分析(Gaussian Discriminant Analysis) - 朴素贝叶斯(Naive Bayes)now let’...
  • A_cainiao_A
  • A_cainiao_A
  • 2015-12-25 22:35:21
  • 2940

监督学习之Logistic regression——Andrew Ng机器学习笔记(二)

内容提要这篇博客的主要内容有: - 介绍欠拟合和过拟合的概念 - 从概率的角度解释上一篇博客中评价函数J(θ)J(\theta)为什么用最小二乘法 - 局部加权线性回归(Locally Weig...
  • A_cainiao_A
  • A_cainiao_A
  • 2015-12-22 22:37:17
  • 1884

Andrew NG 机器学习 笔记-week5-神经网络的学习(Neural Networks:Learning)

一、代价函数(Cost Function)首先引入一些便于稍后讨论的新标记方法:假设神经网络的训练样本有 m 个,每个包含一组输入 x 和一组输出信号 y L =神经网络总层数 sls_l = ll...
  • zxm1306192988
  • zxm1306192988
  • 2017-09-30 09:18:15
  • 431

Andrew Ng机器学习笔记(一)

第一篇博客,很有纪念意义,献给让人激动人心的ML,也感谢吴恩达老师的精彩讲解。1.机器学习的定义 假设用P来评估计算机程序在某任务类T上的性能,若一个程序通过利用经验E在T中任务上获得了性能改善,...
  • YUNFEIYAHG
  • YUNFEIYAHG
  • 2017-09-02 12:31:12
  • 697

Andrew Ng 机器学习笔记(二)

监督学习的应用:梯度下降 梯度下降算法思想: 先选取一个初始点,他可能是0向量,也可能是个随机点。在这里选择图中这个+点吧。 然后请想象一下:如果把这个三位图当成一个小山公园,而你整站在这个+...
  • chixujohnny
  • chixujohnny
  • 2016-03-09 16:27:14
  • 744
收藏助手
不良信息举报
您举报文章:Andrew Ng 机器学习笔记 15 :大数据集梯度下降
举报原因:
原因补充:

(最多只允许输入30个字)