【机器学习】课程笔记16_大规模机器学习(Large Scale Machine Learning)

大规模机器学习

  • 大型数据集的学习(Laerning with Large Datasets)
  • 随机梯度下降(Stochastic Gradient Descent)
  • 小批量梯度下降(Mini-Batch Gradient Descent)
  • 随机梯度下降收敛(Stochastic Gradient Descent Convergence)
  • 在线学习(Online Learning)
  • 映射化简和数据并行(Map-Reduce and Data Parallelism)

大型数据集的学习(Laerning with Large Datasets)

  • 面对庞大的数据集,以线性回归模型为例,每一次梯度下降迭代,我们都需要计算训练集的误差的平方和,如果我们的学习算法需要有20次迭代,这便已经是非常大的计算代价。如果我们有一个低方差的模型,增加数据集的规模可以帮助你获得更好的结果,我们应该如何选择?
  • 首先应该做的事是去检查一个这么大规模的训练集是否真的必要,也许我们只用1000个训练集也能获得较好的效果,我们可以绘制学习曲线来帮助判断。

随机梯度下降(Stochastic Gradient Descent)

  • 随机梯度下降: 对每个数据分开处理,对一个数据更新所有的参数 θ \theta θ

    • c o s t ( θ , ( x ( i ) , y ( i ) ) ) = 1 2 ( h θ ( x ( i ) ) − y ( i ) ) 2 cost(\theta,(x^{(i)},y^{(i)}))=\cfrac{1}{2}(h_\theta(x^{(i)})-y^{(i)})^2 cost(θ,(x(i),y(i)))=21(hθ(x(i))y(i))2
    • J t r a i n ( θ ) = 1 m ∑ i = 1 m c o s t ( θ , ( x ( i ) , y ( i ) ) ) J_{train}(\theta)=\cfrac{1}{m}\displaystyle\sum^m_{i=1}cost(\theta,(x^{(i)},y^{(i)})) Jtrain(θ)=m1i=1mcost(θ,(x(i),y(i)))
  • 步骤:

    • 对训练集进行随机打乱(randomly shuffle)

    • 【机器学习】课程笔记16_大规模机器学习(Large Scale Machine Learning)_第1张图片

  • 问题: 不是每一步都是朝着“正确”的方向迈出的。因此算法虽然会逐渐走向全局最小值的位置,但是可能无法站到那个最小值的那一点,而是在最小值点附近徘徊。

小批量梯度下降(Mini-Batch Gradient Descent)

  • 小批量梯度下降: 介于批量梯度下降算法和随机梯度下降算法之间,每计算常数 b b b次训练实例,更新一次参数 θ \theta θ

  • 步骤:

    • 假定 b = 10 , m = 1000 b=10,m=1000 b=10,m=1000.
    • 【机器学习】课程笔记16_大规模机器学习(Large Scale Machine Learning)_第2张图片
  • 通常我们会令 b b b在 2-100 之间。这样做的好处在于:可以用向量化的方式来循环 b b b个训练实例:如果用的线性代数函数库比较好,能够支持平行处理,那么算法的总体表现将不受影响(与随机梯度下降相同)。

随机梯度下降收敛(Stochastic Gradient Descent Convergence)

  • 判断SGD的收敛: 在每一次更新 θ \theta θ之前都计算一次代价,然后每 x x x次迭代后,求出这 x x x次对训练实例计算代价的平均值,然后绘制这些平均值与 x x x次迭代的次数之间的函数图表。

    • 如果噪声太多图像上下震荡,可以选择更多的迭代次数
    • 如果随着迭代次数 c o s t cost cost增加,那么选择更小的 α \alpha α
  • SGD一般不能得到全局最优,他会一直在最优值附近徘徊。

  • 动态改变 α \alpha α 令学习率随着迭代次数的增加而减小,通过减小学习率,我们迫使算法收敛而非在最小值附近徘徊。

    • α = c o n s t 1 i t e r a t i o n N u m b e r + c o n s t 2 \alpha= \cfrac{const1}{iterationNumber+const2} α=iterationNumber+const2const1
    • 通常我们不需要这样做便能有非常好的效果了,对 α α α进行调整所耗费的计算通常不值得。

在线学习(Online Learning)

  • 在线学习: 与随机梯度下降算法有些类似,对单一的实例进行学习,而非对一个提前定义的训练集进行循环。一旦对一个数据的学习完成了,我们便可以丢弃该数据,无需一个固定的数据集。(适用于有庞大连续输入数据流的网站)

  • 优点: 如果有一个变化的用户群,或者尝试预测的事情在缓慢变化,例如用户的品味在缓慢变化,这个在线学习算法可以慢慢地调试所学习到的假设,将其调节更新到最新的用户行为。

  • 应用:

    • 点击率预测学习问题(predicted CTR):通过统计用户的点击率进行产品推荐。

映射化简和数据并行(Map-Reduce and Data Parallelism)

  • 映射简化(map-reduce): 将我们的数据集分配给不多台计算机,让每一台计算机处理数据集的一个子集,然后将计所的结果汇总再求和。

  • 应用:

    • 有400个训练实例,我们可以将批量梯度下降的求和任务分配给4台计算机进行处理:

      【机器学习】课程笔记16_大规模机器学习(Large Scale Machine Learning)_第3张图片

    • 很多高级的线性代数函数库已经能够利用多核CPU的多个核心来并行地处理矩阵运算,这也是算法的向量化实现如此重要的缘故(比调用循环快)。

你可能感兴趣的:(机器学习,人工智能,深度学习)