Coursera机器学习-第十周-Large Scale Machine Learning

Gradient Descent with Large Datasets

Learning With Large Datasets

我们已经知道,得到一个高效的机器学习系统的最好的方式之一是,用一个低偏差(low bias)的学习算法,然后用很多数据来训练它。 下面是一个区分混淆词组的例子:

但是,大数据存在一个问题,当样本容量m=1,000时还行,但是当m=100,000,000呢?请看一下梯度下降的更新公式:

计算一个θ值需要对1亿个数据进行求和,计算量显然太大,所以时间消耗肯定也就大了。

当然,这都是建立在低偏差(low bias)的问题上。如果问题本身不是低偏差,那么m取1,000与100,000,000并无多大区别。

简单回顾一下高偏差(低方差.underfit),高方差(低偏差)的问题:

我们发现,当学习曲线处于low bias(high variance)状态时,我们可以通过增加样本数量来提高准确度。

Stochastic Gradient Descent

先来看线性回归方程的梯度(有时称batch gradient descent,因为需要计算所有数据)求解:

那么在你运行梯度下降的过程中,多步迭代最终会将参数锁定到全局最小值,迭代的轨迹看起来非常快地收敛到全局最小(上图右侧),而梯度下降法的问题是当m值很大时,计算这个微分项的计算量就变得很大,因为需要对所有m个训练样本求和。

由此引入Stochastic Gradient Descent(随机梯度下降算法):

与上述梯度下降算法不同的是,随机梯度下降算法每次不必关注所有样本,而是对每个样本都进行梯度求解,换句话说,首先对第一组训练样本x(1),y(1),对它的代价函数计算一小步的梯度下降(即将参数θ稍微修改一点),使其对第一个训练样本的拟合变得好一点,然后再转向第二组训练样本,以此类推,直到完成m个样本。外部循环会多次遍历整个训练集。

与批量梯度下降算法不同的是,随机梯度算法的下降方向不像批量梯度下降算法那样径直向全局最小值走去,而是以一种比较随机、迂回的路径逼近全局最小值(实际上,随机梯度下降是在某个靠近全局最小值的区域内徘徊,而不是直接逼近全局最小值并停留在那点)。

通常情况下,外层循环会1-10次比较经典。

Mini-Batch Gradient Descent

三种梯度算法比较:

有没有方法兼顾批处理方法,与随机梯度下降方法的优势?就是Mini-batch Gradient Descent。基本思想是:不是批处理的每次处理所有样本,也不是随机方法每次单个样本,而是每次处理b个样本(1<b?m)

小批量梯度算法:

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

Stochastic Gradient Descent Convergence

  • 当你运行这个算法时,你如何确保调试过程已经完成并且能正常收敛呢?
  • 怎样调整随机梯度下降中学习速率α的值 ?

    确保算法收敛,一个标准的方法是画出最优化的代价函数关于迭代次数的变化

    对于Batch gradient descent而言,因为需要对所有样本进行处理,当样本容量m小时,尚且可以处理。但是,当m变为很大的时候,方法就行不通了。

    对于Stochastic gradient descent而言,因为只需要处理单个数据样本x(i),y(i),所以计算量上显然比批量梯度下降要少很多。

    当随机梯度下降法对训练集进行扫描时,在我们使用某个样本(x(i),y(i))来更新θ前。让我们来计算出这个假设对这个训练样本的表现(在更新θ前来完成这一步,原因是如果我们用这个样本更新θ以后,再让它在这个训练样本上预测,其表现就比实际上要更好了。

    最后,为了检查随机梯度下降的收敛性, 要做的就是每1000次迭代运算中,对最后1000个样本的cost值求平均然后画出来,通过观察这些画出来的图,我们就能检查出随机梯度下降是否在收敛。

    PS:随机梯度下降算法的第一步就是重新排列样本,所以不存在1000个样本都是一样的情况

以下是几种学习曲线的情况:

上左起第一幅图:

蓝色线已趋于平缓,说明算法已近收敛。红色线是将学习速率α变小之后的学习曲线,似乎变得更好了一些。

上左起第二幅图:

蓝色线已趋于平缓,说明算法已近收敛。红色线是将取1000的平均值变为取5000,学习曲线变得更为平缓。

下左起第一幅图:

蓝色线不断震荡(并没有明显下降趋势),似乎算法没有很好地学习。红色线同样将取的样本平均数变多,可能是由1000变为5000,学习曲线变得稍微平缓,并且有收敛的趋势。

下左起第二幅图:

蓝色线你会发现曲线是实际上是在上升,这是一个很明显的信号,告诉你算法正在发散,那么你要做的就是用一个更小一点的学习速率α

Stochastic gradient descent:

一般而言,学习速率α是一个定值,所以在随机梯度下降算法中,梯度下降的方向总会是迂回的:

如果将α改为一个随时间减少的值,例如:

那么会有助于算法得到全局最小值(注意梯度下降的方向):

但是,这个需要额外的工作量去确定一些常数值。

Advanced Topics

Online Learning

在线学习机制让我们可以模型化问题,在拥有连续一波数据或连续的数据流涌进来 而我们又需要 一个算法来从中学习的时候来模型化问题。

  1. 使用连续的数据流去建立模型
  2. 类似随机梯度下降算法,对每个样本进行梯度
  3. 自适应个体偏好(例如个体随着时间、经济环境等因素产生的偏好不同问题)

Map Reduce and Data Parallelism

将数据集进行划分,然后发送到每个任务节点,让它们各自执行,然后反馈给一个中央节点,让它对结果进行整合。

示意图:

关于mapreduce的通俗原理请见:http://server.zol.com.cn/329/3295529.html

注:mapreduce是hadoop的一个框架.

时间: 2024-10-27 01:34:21

Coursera机器学习-第十周-Large Scale Machine Learning的相关文章

Machine Learning - XVII. Large Scale Machine Learning大规模机器学习 (Week 10)

http://blog.csdn.net/pipisorry/article/details/44904649 机器学习Machine Learning - Andrew NG courses学习笔记 Large Scale Machine Learning大规模机器学习 Learning With Large Datasets大数据集学习 Stochastic Gradient Descent随机梯度下降 Mini-Batch Gradient Descent迷你批处理梯度下降 Stochas

(原创)Stanford Machine Learning (by Andrew NG) --- (week 10) Large Scale Machine Learning &amp; Application Example

本栏目来源于Andrew NG老师讲解的Machine Learning课程,主要介绍大规模机器学习以及其应用.包括随机梯度下降法.维批量梯度下降法.梯度下降法的收敛.在线学习.map reduce以及应用实例:photo OCR.课程地址为:https://www.coursera.org/course/ml (一)大规模机器学习 从前面的课程我们知道,如果我们的系统是high variance的,那么增加样本数会改善我们的系统,假设现在我们有100万个训练样本,可想而知,如果使用梯度下降法,

Week 10:Large Scale Machine Learning课后习题解答

大家好,我是Mac Jiang,今天和大家分享Coursera-Stanford University-Machine Learning-Week 10:Large Scale Machine Learning的课后习题解答.虽然我的答案通过了系统测试,但是我的分析不一定是正确的,如果各位博友发现错误或有更好的想法,请留言联系,谢谢.希望我的博客对您的学习有所帮助! 这单元,吴恩达老师主要讲了五个方面的内容: 1.随机梯度下降(Stochastic Gradient Descent),比较了随机

Lessons learned developing a practical large scale machine learning system

原文:http://googleresearch.blogspot.jp/2010/04/lessons-learned-developing-practical.html Lessons learned developing a practical large scale machine learning system Tuesday, April 06, 2010 Posted by Simon Tong, Google Research When faced with a hard pre

Coursera在线学习---第十节.大规模机器学习(Large Scale Machine Learning)

一.如何学习大规模数据集? 在训练样本集很大的情况下,我们可以先取一小部分样本学习模型,比如m=1000,然后画出对应的学习曲线.如果根据学习曲线发现模型属于高偏差,则应在现有样本上继续调整模型,具体调整策略参见第六节的高偏差时模型如何调整:如果发现模型属于高方差,则可以增加训练样本集. 二.随机梯度下降法(Stochastic Gradient Descent) 之前在讲到优化代价函数的时候,采取的都是"批量梯度下降法"Batch Gradient,这种方法在每次迭代的时候,都需要计

斯坦福第十七课:大规模机器学习(Large Scale Machine Learning)

17.1  大型数据集的学习 17.2  随机梯度下降法 17.3  微型批量梯度下降 17.4  随机梯度下降收敛 17.5  在线学习 17.6  映射化简和数据并行 17.1  大型数据集的学习 17.2  随机梯度下降法 17.3  微型批量梯度下降 17.4  随机梯度下降收敛 17.5  在线学习 17.6  映射化简和数据并行

Ng第十七课:大规模机器学习(Large Scale Machine Learning)

17.1  大型数据集的学习 17.2  随机梯度下降法 17.3  微型批量梯度下降 17.4  随机梯度下降收敛 17.5  在线学习 17.6  映射化简和数据并行 17.1  大型数据集的学习 17.2  随机梯度下降法 17.3  微型批量梯度下降 17.4  随机梯度下降收敛 17.5  在线学习 17.6  映射化简和数据并行

Coursera机器学习-第六周-Advice for Applying Machine Learning

Evaluating a Learning Algorithm Desciding What to Try Next 先来看一个有正则的线性回归例子: 当在预测时,有很大的误差,该如何处理? 1.得到更多的训练样本 2.选取少量的特征 3.得到更多的特征项 4.加入特征多项式 5.减少正则项系数λ 6.增加正则项系数λ 很多人,在遇到预测结果并不理想的时候,会凭着感觉在上面的6个方案中选取一个进行,但是往往花费了大量时间却得不到改进. 于是引入了机器学习诊断,在后面会详细阐述, Evaluati

机器学习笔记1 - Hello World In Machine Learning

前言 Alpha Go在16年以4:1的战绩打败了李世石,17年又以3:0的战绩战胜了中国围棋天才柯洁,这真是科技界振奋人心的进步.伴随着媒体的大量宣传,此事变成了妇孺皆知的大事件.大家又开始激烈的讨论机器人什么时候会取代人类统治世界的问题. 其实人工智能在上世纪5.60年代就开始进入了理论研究阶段,人们在不断探索人工智能技术的同时,也担忧起机器人会不会替代人类.然而现实比理想残酷的多,由于当时各种条件的限制(理论基础.技术基础.数据基础.硬件性能等),人工智能相关的项目进度缓慢,也缺少实际成效