Machine Learning第十周笔记:大规模机器学习
博客已经迁移到Marcovaldo’s blog (http://marcovaldong.github.io/)
刚刚完毕了Andrew Ng在Cousera上的Machine Learning的第十周课程,这周主要介绍的是大规模机器学习。现将笔记整理在以下。
Gradient Descent with Large Datasets
Learning With Large Datasets
在前面介绍bias-variance的时候。我们曾提到一个比較各种算法孰优孰劣的实验,结论是”it’s not who has the best algorithm that wins, it’s who has the most data.”但处理大规模的数据库时往往面临着计算问题。假设有一个数据量m=100,000,000的数据库。那么在做Gradient descent时。对于每个θj都有
当中的求和要进行m=100,000,000次,假设模型中有n=1000个特征,进行一次迭代的计算量将是O(1011),整个算法的训练将耗费大量的时间。如今我们使用training set的一个非常小的子集去训练模型。看看这样是否会收到好的效果。下图中给出了Jtrain(θ)和Jcv(θ)随m取值变化的图像,假设在小的子集上训练得来的Jcv(θ)比Jtrain(θ)还大得多。那增大training set会继续改善模型;假设在小的子集上得来的Jcv(θ)和Jtrain(θ)已经基本相当,那我们就没有必要再去增大training set了。
(详细原因可查看第六周的bias-variance)

Stochastic Gradient Descent
以线性回归的梯度下降过程为例来介绍随机梯度下降(stochastic gradient descent)。
下图给出了线性回归的hypothesis、损失函数和梯度下降过程:

如今面临的问题是。m值得特别大导致θj的每一次更新须要花费高昂的计算开销和内存开销,并且往往须要递归非常多次才干得到一个好的hypothesis。比如。m=300,000,000(美国人口的数量),计算一次θj就须要300,000,000次的加减运算。
我们将这种原始梯度下降法称为批量梯度下降(batch gradient descent)。
在随机梯度下降中,我们定义模型在数据点(x(i),y(i))的损失为
那么模型在training set上的损失函数变为
下图中给出了随机梯度下降的步骤。第一步要做的就是随机重排序你的training set。第二步就是迭代,迭代的内容是依次在每个个数据点上改进參数θ。注意。此处与批量梯度下降的不同在于。批量梯度下降的參数θ的每次改进都是在全部的数据点上,而随机梯度下降的參数θ的每次改进则是在一个数据点上的。区别在于,批量梯度下降的每次改进都是基于整个training set做的,因此每次改进都是奔着全局最优去的,但计算开销太大;而随机梯度下降的每次改进是基于某个数据点做的。计算开销小,不能保证每次改进都是奔着全局最优去的,但整体方向仍然是全局最优。下图右側图中有两种方式的迭代路线示意,批量梯度下降是红色所看到的(大半被遮住了)。直奔全局最优;而随机梯度下降是粉色所看到的,可能要经过非常多次參数改进(没关系。每次更新代价小,事实上更快)才干达到最优。
整体来讲。随机梯度下降比較快,且精度不比批量梯度下降差。

Mini-Batch Gradient Descent
前面我们提到。批量梯度下降对參数θ的每次改进都是基于整个training set做的,而随机梯度下降对參数的改进都是基于某一个数据点做的。那么,我们为什么不能够做一个折中呢?这就引出了mini-batch gradient descent。其对θ的改进是在b(b=2~100)个数据点上做的,这样既保证每次改进基本上都是向着全局最优的方向,又有了比較快的速度。下图给出了在一个m=1000的training set上做mini-btach gradient descent的过程:

Stochastic Gradient Descent Convergence
折一小节我们来介绍推断随机梯度下降是否收敛的技巧。
前面我们说用cost(θ,(x(i),y(i)))来表示hypothesis在数据点(x(i),y(i))处的损失,如今我们计算随机梯度下降每改进θ1000次(用到了1000个数据点),hypothesis在这1000个数据点上平均损失,然后观察其变化情况。下图给出了这个平均损失随迭代次数的变化情况。左上的图像中蓝色线和红色线分别表示一个大的learning rate和一个小的learning rate对这个θ每改进1000次的平均损失变化的影响。
右上的图像中蓝色线和红色线分别表示θ每改进1000次计算一次平均损失和θ每改进5000次计算一次平均损失的区别(5000的相应的图像更平滑)。
左下图像的蓝色线表示θ每改进1000次计算一次的平均损失随迭代次数的变化情况,此时我们发现算法好像不收敛,改成θ每改进5000次计算一次平均损失,再绘制图像(图中红色线)可能就会发现。算法在慢慢收敛。若发现更改后图像如图中粉色线所看到的,那说明这个算法应该不适用,我们须要考虑其它的算法了。
假设图像如右下所看到的。呢就应该换一个小的learning rate。

另外,在随机梯度下降的过程中,我们能够使用一个变化的learning rate。计算公式例如以下:
当中const1和const2是固定值。iterationNumber是迭代次数(也就是θ的改进次数)。一个好的收敛过程应该是相似于下图这种:

Advanced Topics
最后两小节正在整理中,稍后上传
Online Learning
Map Reduce and Data Paralism
Machine Learning第十周笔记:大规模机器学习的更多相关文章
- Machine Learning第十一周笔记:photo OCR
博客已经迁移至Marcovaldo's blog (http://marcovaldong.github.io/) 刚刚完毕了Cousera上Machine Learning的最后一周课程.这周介绍了 ...
- Coursera 机器学习 第6章(下) Machine Learning System Design 学习笔记
Machine Learning System Design下面会讨论机器学习系统的设计.分析在设计复杂机器学习系统时将会遇到的主要问题,给出如何巧妙构造一个复杂的机器学习系统的建议.6.4 Buil ...
- 《Machine Learning Yearing》读书笔记
——深度学习的建模.调参思路整合. 写在前面 最近偶尔从师兄那里获取到了吴恩达教授的新书<Machine Learning Yearing>(手稿),该书主要分享了神经网络建模.训练.调节 ...
- [Machine Learning] 国外程序员整理的机器学习资源大全
本文汇编了一些机器学习领域的框架.库以及软件(按编程语言排序). 1. C++ 1.1 计算机视觉 CCV —基于C语言/提供缓存/核心的机器视觉库,新颖的机器视觉库 OpenCV—它提供C++, C ...
- Machine Learning - 第6周(Advice for Applying Machine Learning、Machine Learning System Design)
In Week 6, you will be learning about systematically improving your learning algorithm. The videos f ...
- Machine Learning - 第3周(Logistic Regression、Regularization)
Logistic regression is a method for classifying data into discrete outcomes. For example, we might u ...
- Machine Learning – 第2周(Linear Regression with Multiple Variables、Octave/Matlab Tutorial)
Machine Learning – Coursera Octave for Microsoft Windows GNU Octave官网 GNU Octave帮助文档 (有900页的pdf版本) O ...
- 斯坦福大学公开课机器学习:advice for applying machine learning | diagnosing bias vs. variance(机器学习:诊断偏差和方差问题)
当我们运行一个学习算法时,如果这个算法的表现不理想,那么有两种原因导致:要么偏差比较大.要么方差比较大.换句话说,要么是欠拟合.要么是过拟合.那么这两种情况,哪个和偏差有关.哪个和方差有关,或者是不是 ...
- 《Structuring Machine Learning Projects》课堂笔记
Lesson 3 Structuring Machine Learning Projects 这篇文章其实是 Coursera 上吴恩达老师的深度学习专业课程的第三门课程的课程笔记. 参考了其他人的笔 ...
随机推荐
- RDD编程 上(Spark自学三)
弹性分布式数据集(简称RDD)是Spark对数据的核心抽象.RDD其实就是分布式的元素集合.在Spark中,对数据的操作不外乎创建RDD.转化已有RDD以及调用RDD操作进行求值.而在这一切背后,Sp ...
- mongodb配置与使用
mongodb.dll文件下载地址 http://pecl.php.net/package/mongodb/ 或者 https://windows.php.net/downloads/pecl/rel ...
- nginx出现的403错误
参考这篇文章: http://www.server110.com/nginx/201309/1792.html 我是这样解决的: 为了保证文件能正确执行,nginx既需要文件的读权限,又需要文件所有父 ...
- 云计算之路-阿里云上-十字路口:阿里云SLB故障
2013年7月24日,18:20~18:50左右,处于阿里云云服务最前沿的SLB(负载均衡)出现故障,造成了网站不能正常访问(由于是最前沿,这次连502也看不到了). 在大家对昨日RDS故障带来的麻烦 ...
- HTTP——代理协议 HTTP/1.1的CONNECT方法
我们平时使用HTTP协议无非就是GET.POST这些方法,但是HTTP的内容远不止那些.今天就来说说HTTP代理使用的CONNECT.这个不是在网页开发上用的,如果没兴趣就跳过吧. APACHE只是作 ...
- 【BIEE】13_BIEE组件介绍(补充)
Oracle BI Server 该组件主要是管理RPD的,如果该组件不正常,那么Admin Tool将无法联机打开 Oracle交互式信息板 这个组件控制BIEE仪表盘,我们已经建立好的分析.提示等 ...
- android:id="@android:id/tabhost" 、android:id="@+id/llRoot" 、android:id="@id/llRoot" 之间的区别
由于快要放暑假了,所以最近这俩周把Android方面的知识复习一下,准备找个实习工作. 顺便把自己的总结更大家分享一下,共同进步,谢谢.... 一. android:id="@android ...
- VS中 无法创建虚拟目录 本地IIS IIS Express 外部主机
从前就有个疑问了,为什么我拉取别人写好的代码后就可以在IIS里面生成一个网站呢? 这里所谓的生成网站,是指包含了所有源代码文件的网站:相对地,发布网站,就是指包含被编译的源文件所得到的DLL文件的网站 ...
- 【CODEFORCES】 C. Table Decorations
C. Table Decorations time limit per test 1 second memory limit per test 256 megabytes input standard ...
- Rabbitmq消息队列(二) Hello World! 模拟简单发送接收
1.简介 RabbitMQ是消息代理:它接受和转发消息.你可以把它当作一个邮局:当你把你要邮寄的邮件放在信箱里时,你可以肯定Postman先生最终会把邮件送到你的收件人那里.在这个比喻中,Rabbit ...