Coursera机器学习 Week10 笔记

来源:互联网 发布:欧陆风云4 dlc mac 编辑:程序博客网 时间:2024/05/29 14:06

编程作业放到了github上:coursera_machine_learning

0. 是否还需要更大的数据集

一开始接触机器学习的时候,特别天真的以为,只要数据量够大,训练时间够长,一定能够训练出特别好的模型的。

但是事实并不是这样的。

在以下情况下,增大数据集是有用的,因为还没有到达饱和状态:

但是在以下情况下,增大数据集是徒劳的,因为已经达到了饱和状态:

1. 三种梯度下降法比较

1.1 Batch Gradient Descent

更新一次参数,需要求和所有数据的偏导:

这样的梯度下降,只要α取得不过大,最终就一定能够落入“全局最优解”内:

但是当数据量特别大的时候,迭代将变得特别慢。

1.2 Stochastic Gradient Descent

用当前数据的偏导去更新参数,需要注意,要打乱数据集,这样收敛更快,不然的话,保持这某一种次序,可能导致梯度总向着相反方向,虽然最终可能会被拉回来,但是速度就慢了:

与Batch Gradient Descent相比,迭代的速度就快多了。

但这个方法,所需要的迭代次数可能会更多,因为每次跌代,并不一定都是向着正确的方向的,从而导致相同迭代次数下,该模型的表现比不过Batch Gradient Descent:

1.3 Mini-Batch Gradient Descent

为了综合速度和performance,提出Mini-Batch Gradient Descent。

更新一次参数,求和一部分数据的偏导,Mini-Batch的取值2~100:

2. Online Learning

在线学习的意思就是说,来一个数据,更新一次模型,相当于数据集不确定的stochastic gradient descent:

3. Map Reduce

在海量数据下,“并行计算”是解决计算速度慢的一个方法。map reduce是并行计算的一种算法,相当于在多个平行时空在对不同的数据进行同一种算法,最后再把这几个计算结果求和。

比如说对于Batch gradient descent,一次更新的计算量非常大,为了提升速度,就可以采用map reduce算法:将数据分配到各分机上,然后分别同时求和,最后,再把这4台分机上的结果求和,得到最终的结果。

原创粉丝点击