大规模机器学习(Large Scale Machine Learning)
本博客是针对Andrew Ng在Coursera上的machine learning课程的学习笔记。
在大数据集上进行学习(Learning with Large Data Sets)
由于机器学习系统的性能表现往往要求其算法是low biased(在训练集上的训练误差小),并且在尽可能大的数据集上做训练。
It's not who has the best algorithm that wins. It's who has the most data.
比如对于一般线性回归或者logistic回归,有如图的参数迭代更新的公式,假设我们如果有一百万个训练样本(m=100,000,000),则每一次更新参数都需要做一百万次的加和,那么计算量就很大。另外,对于high bias的算法学习曲线(如下图的靠右图),此时增加样本数量也不太可能减少误差,可能合适地增加输入特征才是更有效的。而如左边的情况high variance,用更大的数据集是更有效的。
随机梯度下降(Stochastic Gradient Descent)
由于之前讲的梯度下降(又称Batch Gradient Descent)在样本量大时计算量非常大,更新速度会很慢,为了避免这个问题,我们可以采用随机梯度下降。
具体做法是:我们不再在对参数进行更新时遍历加总所有样本的误差值,而是每次迭代更新从中只随机选取一个样本进行误差计算,(本质是先将数据集打乱,再逐一进行参数学习,但还是要对所有的样本进行一次遍历),因此保证了参数是在快速地向全局最优解靠近的(但可能由于样本选取的随机性,导致梯度下降的方向并不是那么稳定地向全函数最小值处行进,相当于是牺牲稳度换取速度)。
因此相对于batch GD,stochastic GD可以在很多时候实现更高效地学习。因为stochastic GD每次迭代更新参数,都只需要用到一个样本,而遍历整个样本的轮数可能进行1-10次后就能获得非常好的假设了,而batch GD是每一次更新一个参数都需要遍历整个数据集,那么每次迭代都要用到m个样本。
小堆梯度下降(Mini-Batch Gradient Descent)
小堆梯度下降有时候可以比随机梯度下降速度更快!
小堆梯度下降其实就是将随机梯度下降中只用一个样本进行每轮迭代的做法,变成了用b个样本进行每轮迭代(此之谓mini-batch,因为每轮迭代用到的样本数量在1-m之间)。
而什么时候小堆GD效率会比随机GD高呢?那就是我们有比较好的vectorization的计算实现时。
保证随机GD的收敛与学习速率的选择
如何知道我们的GD算法在像收敛的方向运行?
- 在Batch GD中,我们是画损失函数和GD迭代次数的图像。
- 在Stochastic GD中,我们可以在固定的迭代次数后,画成本函数的在这些迭代上的平均值
下图中蓝色线代表较大的学习速率$\alpha$,红色代表较小的学习速率(每次迭代参数更新的幅度更小)。四幅图代表了stochastic GD的图像可能出现的情况。
上面两幅图的区别是画图的采样点的频率不同,左上方的图是画每迭代1000次的成本函数,右上方的图每迭代5000次的平均成本函数图像。由于分母变大,分子相对变化较小,因此迭代次数高的函数图像更平稳。
下面两幅图也是可能出现的情况。左下方的图蓝色的线是由于学习速率过大,不稳定,应该调小学习速率。而右下方的图则是曲线上扬,说明学习速率太大,算法发散了,也需要调小学习速率。
可以让学习速率随着迭代次数增加而减少,以保证逐渐稳定地收敛到最优解。
在线学习(Online Learning)
在很多机器学习运行的系统中,很多学习数据是不断在产生的,如何可以让系统随着数据的涌入保持学习,而不是只能获得一次性用固定数据训练的模型,以获得更优的性能,就是在线学习所要解决的问题。
给定以下一个快递服务网站的情形:
如图所示,在线学习系统在每次有新的数据产生(一个用户访问了网站,并给出是否使用快递服务的决策)时,系统都会对参数进行一次更新。
另一个例子:电商网站的产品搜索。
Map Reduce 和 数据并行化
有时候,数据集太大,如果只在一台主机上运行,可能很久才能获得结果,于是我们希望可能用尽量少的时间获得好的结果。
首先来看map-reduce的做法:将数据集按照我们手头拥有的计算资源的数量,即我们可以用来运行机器学习算法的主机的数量平均分配。然后,每个主机利用分配给它那部分的样本运行算法,去计算损失函数的偏导数值,并获得一个属于该主机的结果$temp^{(i)}_j$。最后,将所有主机的结果结合在一起,用来对参数做更新。
而很多机器学习算法本质就是对训练集上进行和加总的一些计算。
而其实不是只有多台主机才能实现并行化,在一台多核的主机上也可以进行,做法和多主机的情况是类似的。而且在这种情况下,有一个好处是,不需要担心因为网络延迟导致的数据传输缓慢等问题,而这是多主机并行化可能会面对的问题。
大规模机器学习(Large Scale Machine Learning)的更多相关文章
- [C12] 大规模机器学习(Large Scale Machine Learning)
大规模机器学习(Large Scale Machine Learning) 大型数据集的学习(Learning With Large Datasets) 如果你回顾一下最近5年或10年的机器学习历史. ...
- Coursera在线学习---第十节.大规模机器学习(Large Scale Machine Learning)
一.如何学习大规模数据集? 在训练样本集很大的情况下,我们可以先取一小部分样本学习模型,比如m=1000,然后画出对应的学习曲线.如果根据学习曲线发现模型属于高偏差,则应在现有样本上继续调整模型,具体 ...
- 斯坦福第十七课:大规模机器学习(Large Scale Machine Learning)
17.1 大型数据集的学习 17.2 随机梯度下降法 17.3 微型批量梯度下降 17.4 随机梯度下降收敛 17.5 在线学习 17.6 映射化简和数据并行 17.1 大型数据集的学习
- Ng第十七课:大规模机器学习(Large Scale Machine Learning)
17.1 大型数据集的学习 17.2 随机梯度下降法 17.3 微型批量梯度下降 17.4 随机梯度下降收敛 17.5 在线学习 17.6 映射化简和数据并行 17.1 大型数据集的学习 ...
- 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 17—Large Scale Machine Learning 大规模机器学习
Lecture17 Large Scale Machine Learning大规模机器学习 17.1 大型数据集的学习 Learning With Large Datasets 如果有一个低方差的模型 ...
- Lessons learned developing a practical large scale machine learning system
原文:http://googleresearch.blogspot.jp/2010/04/lessons-learned-developing-practical.html Lessons learn ...
- (原创)Stanford Machine Learning (by Andrew NG) --- (week 10) Large Scale Machine Learning & Application Example
本栏目来源于Andrew NG老师讲解的Machine Learning课程,主要介绍大规模机器学习以及其应用.包括随机梯度下降法.维批量梯度下降法.梯度下降法的收敛.在线学习.map reduce以 ...
- 吴恩达机器学习笔记60-大规模机器学习(Large Scale Machine Learning)
一.随机梯度下降算法 之前了解的梯度下降是指批量梯度下降:如果我们一定需要一个大规模的训练集,我们可以尝试使用随机梯度下降法(SGD)来代替批量梯度下降法. 在随机梯度下降法中,我们定义代价函数为一个 ...
- 吴恩达机器学习笔记(十一) —— Large Scale Machine Learning
主要内容: 一.Batch gradient descent 二.Stochastic gradient descent 三.Mini-batch gradient descent 四.Online ...
随机推荐
- insert时出现主键冲突的处理方法
使用"insert into"语句进行数据库操作时可能遇到主键冲突,用户需要根据应用场景进行忽略或者覆盖等操作.总结下,有三种解决方案来避免出错. 测试表:CREATE TABLE ...
- 【h5ai】搭建服务器目录
在前几天,我帮人安装h5ai这个东西,结果直接踩坑,装了一个下午,打算自己也装一个,顺便写一下教程 最终效果演示: https://larsjung.de/h5ai/demo/ 服务器 服务器这里推荐 ...
- C++学习之旅
到现在为止学习C++也已经有一个半月了.一个半个月里我怀着好奇与敬畏一步步的走来,一步步的走向C++的内心深处,也发现了C++"内心的复杂".虽有坎坷,但从未放弃. 我承认,我不是 ...
- 国际控制报文协议ICMP
国际控制报文协议ICMP ICMP简介 ICMP 用于主机或路由器报告差错情况和提供有关异常情况的报告(检测网络错误). ICMP 不是高层协议,而是 IP 层的协议. ICMP 报文的格式 ICMP ...
- sql--测试商品的重要度,是否需要及时补货
表1:商品表 表2:商品售卖表 需求:算出商品的平均点击率.平均销售.商品受欢迎度 1.使用inner join查出每件商品的点击率和销售额度 ) as selas from test a left ...
- 处理 Vue 单页面 SEO 的另一种思路
vue-meta-info 官方地址: https://github.com/monkeyWang... (设置vue 单页面meta info信息,如果需要单页面SEO,可以和 prerender- ...
- (数据科学学习手札79)基于geopandas的空间数据分析——深入浅出分层设色
本文对应代码和数据已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 通过前面的文章,我们已经对geopanda ...
- IOS7下,alertView不能使用addSubview添加textField解决办法
UIAlertView *alertView1 = [[UIAlertView alloc] initWithTitle:@"Enter Form Name" message:@& ...
- vue用template还是JSX?
各自特点 template 模板语法(HTML的扩展) 数据绑定使用Mustache语法(双大括号) <span>{{title}}<span> JSX JavaScript的 ...
- nes 红白机模拟器 第5篇 全屏显示
先看一下效果图 放大的原理是使用最初级的算法,直接取对应像素法. /*================================================================= ...