17、Large scale machine learning(大规模机器学习)
17.1 Learning with large datasets(学习大数据集)
大规模机器学习就是处理大数据集的算法。当训练集过大的时候,由于求和,计算代价会非常高,所以,是否可以选择部分训练集进行训练。如下图所示:
在第二个坐标图像中,我们明显可以选择用1000个训练样本去训练。相反,第一个坐标图像中,应该选择多于1000个样本。
17.2 Stochastic gradient descent(随机梯度下降)
原先考虑所有训练样本的梯度下降算法,也被称为“批量梯度下降(Batch gradient descent)”。批量梯度下降和随机梯度下降的区别如下图所示:
随机梯度下降算法的流程如下图所示:
第一步,先随机打乱训练集。第二步,进行循环,最外层的外循环一般选择1-10次,如果样本很大,一次就可以。
17.3 Mini-batch gradient descent(Mini-batch梯度下降)
Mini-batch梯度下降是介于批量梯度下降和随机梯度下降之间的一种。三种梯度下降算法的区别如下所示:
Mini-batch 梯度下降算法的流程如下所示:
注:也要先随机打乱训练集。batch_size的大小一般在2-100,吴说他一般选10。
17.4 Stochastic gradient descent convergence(随机梯度下降收敛)
批量梯度下降和随机梯度下降判断是否收敛的方法:
对于学习率
α
\alpha
α的调整:有两种方法,一种是让
α
\alpha
α是常数;另一种是随着迭代次数减小
α
\alpha
α(前多少步让
α
=
c
o
n
s
t
1
\alpha=const_1
α=const1,后面让
α
=
c
o
n
s
t
2
\alpha=const_2
α=const2)。
17.5 Online learning(在线学习)
问题背景:数据集是源源不断获得的,一直有新的数据集加入(可以立即为有无穷个)。方法:每次用一个新获得的样本去更新参数(权重),用完之后舍弃这个样本。以梯度下降的逻辑回归为例:
17.6 Map-reduce and data parallelism(减少映射与数据并行)
Map-reduce:把训练集分为多个子集,然后每个子集计算梯度,然后把这些子集加起来。例子如下:
疑问:tensorflow中的batch对应的是Mini-batch还是Map-reduce?