【Machine Learning, Coursera】机器学习Week10 大规模机器学习笔记

ML: Large Scale Machine Learning


本节内容:适用于大规模数据的梯度下降方法及如何确保算法收敛

机器学习概念:
批量梯度下降(Batch Gradient Descent)
随机梯度下降(Stochastic Gradient Descent)
小批量梯度下降(Mini-batch Gradient Descent)


1. Gradient Descent

1.1 Methods

以线性回归为例:

  • 批量梯度下降(Batch Gradient Descent)
    每次更新都用到所有样本
    J t r a i n ( θ ) = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 J_{train}(\theta)=\frac{1}{2m}\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})^2 Jtrain(θ)=2m1i=1m(hθ(x(i))y(i))2
    Repeat {
    θ j : = θ j − α 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) \theta_j := \theta_j - \alpha\frac{1}{m}\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})x_j^{(i)} θj:=θjαm1i=1m(hθ(x(i))y(i))xj(i)
    \qquad\qquad\qquad\qquad\qquad\qquad (for every j = 0 , . . . , n j=0,...,n j=0,...,n)
    }

  • 随机梯度下降(Stochastic Gradient Descent)
    每次更新只使用一个样本
    优点:快。适用于大样本。
    缺点:精度不如前者高。
    c o s t ( θ , ( x ( i ) , y ( i ) ) ) = 1 2 ( h θ ( x ( i ) ) − y ( i ) ) 2 cost(\theta,(x^{(i)},y^{(i)})) =\frac{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 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 J_{train}(\theta)=\frac{1}{2m}\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})^2 Jtrain(θ)=2m1i=1m(hθ(x(i))y(i))2
    Step 1: 打乱样本
    Step 2:
    Repeat {
    \qquad for i = 1 , . . . , m i=1,...,m i=1,...,m {
    θ j : = θ j − α ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) \theta_j := \theta_j - \alpha(h_\theta(x^{(i)})-y^{(i)})x_j^{(i)} θj:=θjα(hθ(x(i))y(i))xj(i)
    \qquad\qquad\qquad\qquad\qquad\qquad (for every j = 1 , . . . , n j=1,...,n j=1,...,n)
    \qquad }
    }

  • 小批量梯度下降(Mini-batch Gradient Descent)
    每次更新使用b个样本
    优点:有好的向量化方法时比随机梯度下降更快。
    \quad
    例:
    b = 10, m = 1000
    Repeat {
    \qquad for i = 1 , 11 , 21 , . . . . , 991 i=1, 11, 21, ...., 991 i=1,11,21,....,991 {
    θ j : = θ j − α 1 10 ∑ k = i i + 9 ( h θ ( x ( k ) ) − y ( k ) ) x j ( k ) \theta_j := \theta_j - \alpha\frac{1}{10}\sum_{k=i}^{i+9}(h_\theta(x^{(k)})-y^{(k)})x_j^{(k)} θj:=θjα101k=ii+9(hθ(x(k))y(k))xj(k)
    \qquad\qquad\qquad\qquad\qquad\qquad (for every j = 1 , . . . , n j=1,...,n j=1,...,n)
    \qquad }
    }

1.2 Checking for Convergence

  • 批量梯度下降
    J t r a i n ( θ ) J_{train}(\theta) Jtrain(θ)对迭代次数作图
    J t r a i n ( θ ) = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 J_{train}(\theta)=\frac{1}{2m}\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})^2 Jtrain(θ)=2m1i=1m(hθ(x(i))y(i))2

  • 随机梯度下降
    Step 1: 每次更新前计算样本 ( x ( i ) , y ( i ) ) (x^{(i)},y^{(i)}) (x(i),y(i))对应的cost
    c o s t ( θ , ( x ( i ) , y ( i ) ) ) = 1 2 ( h θ ( x ( i ) ) − y ( i ) ) 2 cost(\theta,(x^{(i)},y^{(i)})) =\frac{1}{2}(h_\theta(x^{(i)})-y^{(i)})^2 cost(θ,(x(i),y(i)))=21(hθ(x(i))y(i))2
    Step 2: 每隔一定的迭代次数(如1000次),对这1000次的 c o s t ( θ , ( x ( i ) , y ( i ) ) ) cost(\theta,(x^{(i)},y^{(i)})) cost(θ,(x(i),y(i)))求平均
    Step 3: c o s t ( θ , ( x ( i ) , y ( i ) ) ) cost(\theta,(x^{(i)},y^{(i)})) cost(θ,(x(i),y(i)))对迭代次数作图

    可能会得到以下几种图像:【Machine Learning, Coursera】机器学习Week10 大规模机器学习笔记_第1张图片
    左上子图:该学习速率可以使算法收敛。使用的学习速率越小,收敛的速度越慢,但精度越高
    右上子图:每5000次迭代求一次平均,得到的曲线更平滑
    左下子图:可能是算法效果不佳,也可能是迭代间隔太小。5000次迭代求一次平均可能可以看出趋势
    右下子图:算法发散,选用更小的学习速率

2. Online Learning

适用范围:连续产生的数据流。获取某个用户样本,学习后舍弃,接着学习下一个样本。

优点:可以捕捉用户行为的变化,适应新的需求。

应用场景:

  • 运输服务费用优化
    【Machine Learning, Coursera】机器学习Week10 大规模机器学习笔记_第2张图片
  • 推荐系统
    【Machine Learning, Coursera】机器学习Week10 大规模机器学习笔记_第3张图片

3. MapReduce

MapReduce: 将相同的计算任务分给不同计算机并行计算,最后由中心服务器汇总。

适用范围:可以进行并行计算的任务,如批量梯度下降。

Ng的PPT略显凌乱,于是搬运了一张WordCount在MapReduce中如何运作的PPT(来源见右下角链接)
【Machine Learning, Coursera】机器学习Week10 大规模机器学习笔记_第4张图片

你可能感兴趣的:(机器学习)