【Machine Learning】17 大规模机器学习(Large Scale Machine Learning)
本章主要介绍大数据规模下的机器学习算法:随机梯度下降算法、小批量梯度下降算法、在线学习思想、并行计算思想等等。
17.1 Learning With Large Datasets
“It’s not who has the best algorithm that wins. It’s who has the most data.”
由之前所说,通过描绘学习曲线来判断增大数据量是否对学习效果有改进:
可以看到对于高方差的情况会有比较好的效果。
17.2 Stochastic Gradient Descent
批量梯度下降每次θ的更新都考虑了所有的样本;
随机梯度下降每次θ的更新仅考虑了一个样本,随机体现在第一步的随机排序;
随机梯度下降算法可能并不能保证每步都是下降方向,最后也不一定收敛到最优解,但是一个可接受的解。
17.3 Mini-Batch Gradient Descent
mini-batch gradient descent每次迭代使用b个样本, 不难理解。这是一种介于批量下降和随机下降的方法,但是b的取法需要自己观察,最好有量化实现方法。
17.4 Stochastic Gradient Descent Convergence
上述随机梯度 mini-batch梯度方法中,解可能收敛到最优解的邻域,我们如何保证该解收敛到合适的位置呢?
在随机梯度下降中,我们在每一次更新 θ 之前都计算一次代价(后面一部分数据平均值就可以,不用扫面全部数据),然后每 X 次迭代后,求出这 X 次对训练实例计算代价的平均值,然后绘制这些平均值与 X 次迭代的次数之间的函数图表:
左上:我们采用比较小的学习率会使得解更接近最优解,但此时时间显然花费更多;
右上:我们采用更多的数据量会使得代价函数曲线更加平滑,更容易看出变化趋势;
左下:代价函数下降并不明显,需要观察模型是否出错;
右下:代价函数增长,呈发散趋势,此时要采用较小的学习率。
观察到随机梯度方法很难收敛到最优解,一般会在最优解邻域跳动,我们可以令α取值逐渐变小来使得解尽可能逼近最优解。
讨论收敛性目的:
1、观察算法是否依目标收敛;
2、调节算法,如学习率α等等。
17.5 Online Learning
对于持续的数据流,我们抛弃使用的用户数据,根据用户的行为不断更新模型以适应用户的新需求。
邮费定价问题和手机推荐问题。与随机梯度下降不同这里的数据集在线更新,随着用户喜好或需求变化,模型更贴近用户新的状态。
17.6 Map Reduce and Data Parallelism
1、多计算机并行计算:
数据集分解,4台计算机各完成一部分计算,再把结果传输至数据中心处理得到新的θ,这里得到的θ与并行计算前一致。
2、单计算机多核计算: