吴恩达机器学习(十五)大规模机器学习(Batch、Stochastic、Mini-batch gradient descent、MapReduce)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhq9695/article/details/83037855

目录

0. 前言

1. Stochastic Gradient Descent

2. Mini-batch Gradient Descent

3. MapReduce

4. 在线学习(online learning)


学习完吴恩达老师机器学习课程的大规模机器学习,简单的做个笔记。文中部分描述属于个人消化后的理解,仅供参考。

如果这篇文章对你有一点小小的帮助,请给个关注喔~我会非常开心的~

0. 前言

已知梯度下降算法 \theta_{j}:=\theta_{j}-\alpha\frac{1}{m}\sum_{i=1}^{m}(h_{\theta}(x^{(i)})-y^{(i)})x_{j}^{(i)} ,当数据集 m 很大时,每一次更新 \theta 所需的时间很长,何况需多次迭代,所需时间太久。所以对此优化,有以下几种优化方法:

  • Stochastic gradient descent
  • Mini-batch gradient descent
  • MapReduce

1. Stochastic Gradient Descent

Stochastic gradient descent(随机梯度下降)的算法流程如下:

易得,算法先根据 (x^{(1)},y^{(1)}) 对 \theta 优化,然后根据 (x^{(2)},y^{(2)}) 对 \theta 优化,依次优化至 (x^{(m)},y^{(m)}) ,与 Batch gradient descent 每次优化使用全部数据集不同。

注:算法不像Batch gradient descent每次优化都朝向梯度下降最大的地方移动,而是迂回的移动至一个接近全局最小值的值。

\alpha=\frac{const1}{iterationNumber+const2} ,可使得学习率随时间的增加而减少,即每次移动的步长越来越小,尽可能接近最小值。

2. Mini-batch Gradient Descent

  • Batch gradient descent:每次优化时,使用 m 个数据
  • Stochastic gradient descent:每次优化时,使用 1 个数据
  • Mini-batch gradient descent:每次优化时,使用 b 个数据( b 为 mini-batch size),一般取2-10

Mini-batch gradient descent 的算法表示为:

3. MapReduce

MapReduce 算法的思想是,将数据分布式计算,然后再汇总起来。

例如,m=400 ,\theta_{j}:=\theta_{j}-\alpha\frac{1}{400}\sum_{i=1}^{400}(h_{\theta}(x^{(i)})-y^{(i)})x_{j}^{(i)} ,有四台计算机,可将数据集划分为四份:

  • Machine 1:(x^{(1)},y^{(1)}),...,(x^{(100)},y^{(100)})\rightarrow temp_{j}^{(1)}=\sum_{i=1}^{100}(h_{\theta}(x^{(i)})-y^{(i)})x_{j}^{(i)}
  • Machine 2:(x^{(101)},y^{(101)}),...,(x^{(200)},y^{(200)})\rightarrow temp_{j}^{(2)}=\sum_{i=101}^{200}(h_{\theta}(x^{(i)})-y^{(i)})x_{j}^{(i)}
  • Machine 3:(x^{(201)},y^{(201)}),...,(x^{(300)},y^{(300)})\rightarrow temp_{j}^{(3)}=\sum_{i=201}^{300}(h_{\theta}(x^{(i)})-y^{(i)})x_{j}^{(i)}
  • Machine 4:(x^{(301)},y^{(301)}),...,(x^{(400)},y^{(400)})\rightarrow temp_{j}^{(4)}=\sum_{i=301}^{400}(h_{\theta}(x^{(i)})-y^{(i)})x_{j}^{(i)}

四台计算机分别计算,然后汇总 \theta_{j}:=\theta_{j}-\alpha\frac{1}{400}(temp_{j}^{(1)}+temp_{j}^{(2)}+temp_{j}^{(3)}+temp_{j}^{(4)})

4. 在线学习(online learning)

在线学习算法是指,对于一个成型的模型,每次有新的数据来临时,对参数进行更新,更新之后丢弃这个数据,因为不断有新的数据来临,所以不是用整个数据集一次性进行更新参数。


如果这篇文章对你有一点小小的帮助,请给个关注喔~我会非常开心的~

猜你喜欢

转载自blog.csdn.net/zhq9695/article/details/83037855
今日推荐