Andrew Ng-ML-第十八章-大规模机器学习
1.学习大数据集

图1.学习大数据集
当数据集量为m=1亿时,进行梯度下降将会花费较大时间。
可以使用小量数据集进行训练,然后得出学习曲线。
左图是高方差,右图是高偏差。
总之是要通过高效的学习算法来进行大数据学习。
2.随机梯度下降

图2.批梯度下降
假设是美国人口普查的数据,m=3亿,如果需要每次读入,并且计算(for every j=0,....n),对每一个参数θ都有这么一个计算,就非常复杂了。

图3.批与随机梯度下降
批梯度下降中,θ_j的更新是代价函数J(θ)对θ_j的偏导数。
随机梯度下降中,将平方项单独作为一个cost函数,对样本1~m遍历,每个样本都更新θ_j,此处的梯度更新是对cost函数来说,不用求和。
那么重要的就是对训练样本需要进行随机化,这样可以加快收敛速度。

图4.随机梯度下降
随机梯度下降中,首先需要随机化初始数据;
由于没有求和项,回避批梯度下降快很多。
图中红线表示批梯度下降,洋红线表示随机梯度下降,中间可能方向会发生偏差,但最终会落到一个范围内。
那么最终的内层循环for多少次呢? 平常1~10次就很合理了(取决于数据及大小)。
那么对于数据集人口普查3亿数据来说,1-3亿,只遍历一次数据集即可得到最优结果。
3.Mini-Batch梯度下降

图5.三种梯度下降对比
批梯度下降:每次迭代都使用全部m个样本;
随机梯度下降:每次迭代使用1个样本;
Mini-batch梯度下降:每次迭代使用b个样本。
即每次迭代对b各样本求和,它的运行速度是在批梯度下降和随机梯度下降之间的。

图6.Mini-Batch梯度下降
假设b=10,m=1000,那么MB梯度下降即每次使用10个数据进行一次更新;
相较于批梯度下降,它不需要一个循环遍历所有的,只需要遍历b个即可。
如果对更新式找到合适的向量化方法及参数b就可以实现并行计算,将比随机梯度下降更快。
4.随机梯度下降收敛
图7.检查收敛
对批量梯度下降检测收敛,通常是画出J(θ)曲线,横轴时迭代次数。
对随机梯度下降,在进行更新θ之前计算出cost值,可以对每1000次迭代(对1000条样本)得出一个cost均值,并且以此曲线。

图8.cost曲线出现情况分析
1.蓝色曲线表示cost随迭代次数增加缓慢下降,有波动地下降,红色曲线最终下降平衡点较蓝线小,可能原因是学习率更小。
2.蓝线表示每遍历1000个数据求cost均值得出的曲线,波动较大,红色曲线表示增大每次取点的数据量。
3.当波动较大,且cost不下降时,则需要调整算法,调整特征或者学习率。
4.当cost程上升趋势时,很可能是学习率过大,需要使用较小的α。

图9.随机梯度下降
对于学习率α的选择,通常是将其设置为一个固定的常数。
但有时,如果想让θ收敛,那么可以随着迭代次数增加减小α,这样在接近最优值时,波动会变小。
但是公式中的两个常数的选择需要花费时间,所以通常是将其设置为常数。
5.在线学习

图10.在线学习
现在有一个网站,需要根据用户的起点终点给出运费报价,并根据用户是否最终选择了本网站作为y;
那么此时x可以有多个特征,比如起点、终点、运费等,想要学习最优的参数θ。
算法的运算过程是,获取到用户的(x,y),并且使用它更新θ。
此处更新式中,并没有y(i)这样的上标,也就是不是对一个固定的训练集来说的,它是从 网站的角度采取数据,是开放的。
这样能更好的捕获用户的偏好。

图11.产品搜索例子
比如用户搜索关键词,安卓手机 1080像素 这样的关键词,假设有100部手机,将会返回10部手机作为结果;
那么可以将x设置为[与用户搜索匹配的特征数,产品描述符合词数,,,,]这样作为特征向量,那么如果用户点击了就是y=1,否则y=0,目标是要学习y=1的情况下,θ最优。
那么每次用户搜索都会产生10个样本,进行在线学习。
重点就是,不会有一个固定的训练集, 而是去获取用户样本,从用户样本中学习,然后丢弃使用下一个。
6.减少映射与数据并行

图12.减少映射进行并行计算
比如对一个数据集进行梯度下降的时候,很有可能数据量很大,在一个机器上计算的速度比较慢;
那么可以将数据放到不同的机器上,进行并行计算,提高运算速度,最终将计算结果进行合并发送给中心服务器。
也适用于同一台机器上的多核并行运算。
Andrew Ng-ML-第十八章-大规模机器学习的更多相关文章
- Coursera在线学习---第十节.大规模机器学习(Large Scale Machine Learning)
一.如何学习大规模数据集? 在训练样本集很大的情况下,我们可以先取一小部分样本学习模型,比如m=1000,然后画出对应的学习曲线.如果根据学习曲线发现模型属于高偏差,则应在现有样本上继续调整模型,具体 ...
- Ng第十七课:大规模机器学习(Large Scale Machine Learning)
17.1 大型数据集的学习 17.2 随机梯度下降法 17.3 微型批量梯度下降 17.4 随机梯度下降收敛 17.5 在线学习 17.6 映射化简和数据并行 17.1 大型数据集的学习 ...
- Andrew Ng机器学习课程笔记(五)之应用机器学习的建议
Andrew Ng机器学习课程笔记(五)之 应用机器学习的建议 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7368472.h ...
- (原创)Stanford Machine Learning (by Andrew NG) --- (week 10) Large Scale Machine Learning & Application Example
本栏目来源于Andrew NG老师讲解的Machine Learning课程,主要介绍大规模机器学习以及其应用.包括随机梯度下降法.维批量梯度下降法.梯度下降法的收敛.在线学习.map reduce以 ...
- 斯坦福大学Andrew Ng - 机器学习笔记(8) -- 推荐系统 & 大规模机器学习 & 图片文字识别
大概用了一个月,Andrew Ng老师的机器学习视频断断续续看完了,以下是个人学习笔记,入门级别,权当总结.笔记难免有遗漏和误解,欢迎讨论. 鸣谢:中国海洋大学黄海广博士提供课程视频和个人笔记,在此深 ...
- 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 17—Large Scale Machine Learning 大规模机器学习
Lecture17 Large Scale Machine Learning大规模机器学习 17.1 大型数据集的学习 Learning With Large Datasets 如果有一个低方差的模型 ...
- Machine Learning第十周笔记:大规模机器学习
博客已经迁移到Marcovaldo's blog (http://marcovaldong.github.io/) 刚刚完毕了Andrew Ng在Cousera上的Machine Learning的第 ...
- 机器学习笔记(一)- from Andrew Ng的教学视频
最近算是一段空闲期,不想荒废,记得之前有收藏一个机器学习的链接Andrew Ng的网易公开课,其中的overfiting部分做组会报告时涉及到了,这几天有时间决定把这部课程学完,好歹算是有个粗浅的认识 ...
- 斯坦福大学Andrew Ng教授主讲的《机器学习》公开课观后感[转]
近日,在网易公开课视频网站上看完了<机器学习>课程视频,现做个学后感,也叫观后感吧. 学习时间 从2013年7月26日星期五开始,在网易公开课视频网站上,观看由斯坦福大学Andrew Ng ...
随机推荐
- Delphi应用程序的调试(三)监视变量
监视变量(Watching Variables) 当程序停在一个断点处时,用户做些什么呢?通常用户在断点处停下来是要检查变量的值,某个变量的值是否与预料的取值相同?或者某个变量取什么值(事先并不知道这 ...
- shell 数值计算
shell中的赋值和操作默认都是字符串处理,在此记下shell中进行数学运算的几个特殊方法,以后用到的时候可以来看,呵呵. 1.错误方法举例 a) var=1+1 echo $var ...
- 【分享】IT产业中的三大定理(三) —— 反摩尔定理 (Reverse Moore's Law)
Google(谷歌)的 CEO 埃里克·施密特在一次采访中指出,如果你反过来看摩尔定理,一个 IT 公司如果今天和十八个月前卖掉同样多的.同样的产品,它的营业额就要降一半.IT 界把它称为反摩尔定理. ...
- DIV高度自适应及注意问题(转)
本文和大家重点讨论一下DIV高度自适应及注意问题,主要包括父div高度随子div的高度改变而改变和子div高度随父亲div高度改变而改变两种情况. DIV高度自适应及注意问题 积累了一些经验,总结出一 ...
- jQuery的回调管理机制(二)
jQuery.extend({ /* * deferred对象的一大好处,就是它允许你自由添加多个回调函数. * $.ajax("test.html") .done(func ...
- rc.sysinit 解析
$# :它可抓出 positional parameter 的數量,即脚本后面的参数有几个 $@和$*表示全部参数,但不包含脚本名,即$0,如果在command line上跑 my.sh p1 “p2 ...
- php应用
1. php判断是否为数字 is_numeric() 这个函数就是检测参数是否为数字,如果是就返回true,如果不是就返回false is_numeric( 'abcd123' ) or die('提 ...
- redmine创建新闻,自动发邮件给项目组所有成员
redmine创建新闻,自动发邮件给项目组所有成员: 1.添加用户至公共项目内 2.配置系统邮件推送配置 3.检查用户接受推送配置 3.使用管理员账户发布新闻(不能自己发送自己) 4.查看邮件接受邮件
- iOS教程:Core Data数据持久性存储基础教程
目录[-] 创建Core Data工程 创建数据模型 测试我们的数据模型 来看看SQL语句的真面目 自动生成的模型文件 创建一个表视图 之后看些什么? 就像我一直说的,Core Data是iOS编程, ...
- Unity3D笔记 英保通三 脚本编写 、物体间通信
一.脚本编写 1.1.同一类型的方法JS和C#的书写方式却不一样主要还是语法,在工程中创建一个Cube 分别把JSTest.js和CSharp.cs 添加到Cube中 JSTest.js #pragm ...
