Large Scale Machine Learning
1. Gradient Descent with Large Datasets
1.1 Learning with large Datasets
左侧是高方差,右侧是高偏差;对于高方差来说增大数据集是有效的改进方法,对于高偏差不需要增大数据集。
1.2 Stochastic Gradient Descent【随机梯度下降】
随机梯度下降:
- 随机打乱dataset
-
循环遍历m个训练样本,用每个训练样本进行θ调整,不需要读入全部的m个数据就已经开始将参数朝着全局最小值方向调整了。
随机梯度下降外层循环通常1-10次,有时一次就能达到一个不错的效果;每次更新θ,大多向着cost function最小的方向进行;最后的结果是在全局最优较小的附近范围内。
1.3 Mini-Batch Gradient Descent【小批量梯度下降】
有时比随机梯度下降快一些
1.4 Stochastic Gradient Descent Convergence
随机梯度下降算法在每步更新θ前,计算cost(θ,(,)),每1000次迭代后计算这1000个cost的均值并通过画图观察SGD是否在收敛。
- 左上.红线相对于蓝线学习速率α更小,cost振动频率较低,可能会获得更优的结果,但是与学习速率较大的结果差异一般不大;
- 右上.红线增大了平均的训练样本数,如从1000改为5000;
- 左下.蓝线因为噪声太大没有收敛;红线是5000个样本取平均的运行效果,能够看出收敛趋势;粉线也是5000个样本的平均运行效果,但是没有收敛趋势,需要调整学习速率、或者改变特征变量等;
- 右下.算法在发散,因此需要使用一个较小的学习速率α。
-
综上,曲线上下振动噪声较大时,可以采用更多数据的平均值;如果曲线上升,可以换一个小点的α值。
大多随机梯度下降算法中,学习速率α是保持不变的,因此最终得到的一般是全局最小值附近的一个值;如果想要得到更优的解,可以随运行时间减小α的值,但这种做法需要确定一些额外的参数。
2. Advanced Topics
2.1 Online Learning
当在线网址数据流足够大的时候,每次用户做了决定就对参数集θ进行更新,不重复使用数据;如果数据流不够大,应该像之前那样取一定得数据集进行训练;当进行动态更新θ时,更加能够应对价格敏感情况。
预测点击率(Click through rate)
2.2 Map Reduce and Data Parallelism