大规模机器学习 Large scale machine learning

  • 学习大数据集 learning with large datasets
  • 随机梯度下降 Stochastic Gradient Descent
  • Mini-Batch 梯度下降 Mini-Batch gradient descent
  • 随机梯度下降收敛 stochastic gradient descent convergence
  • 在线学习 online learning
  • 减少映射与数据并行 Map-reduce and data parallelism


引入:大规模机器学习,即学习大规模数据的机器学习。某种意义上,现代算法拟合效果更好是因为数据量大,这就是为什么需要研究大规模机器学习。

学习大数据集 learning with large datasets

根据先前所学知识可知,提高学习算法效率的一个高效方法为:低偏差的学习算法与大数据相结合。因此解决问题的办法并不是算法的好坏,而是数据量的多少。

吴恩达机器学习简介 machine learning 吴恩达_大数据

大数据学习也存在一些计算问题。巨大的数据规模将增加计算量,从而极大地提高计算成本。

所以,为什么不降低数据量呢?对于高偏差问题,降低数据量可能同样能达到相似的结果(右)。高方差问题则不能。

吴恩达机器学习简介 machine learning 吴恩达_随机梯度下降_02


总之,在大规模的机器学习中,我们往往使用合理的计算方法或高效的计算方法,来处理庞大的数据集。如:随机梯度下降( Stochastic Gradient Descent)、减少映射(Map Reduce)。

随机梯度下降 Stochastic Gradient Descent

引入:大部分算法的计算思路是:提出代价函数,然后结合梯度下降等方法优化代价函数,从而得到模型的未知参数。这种方法对大规模数据就不适用了,因为计算量太大。针对这一问题,下面介绍普通梯度下降的改进——随机梯度下降 ( Stochastic Gradient Descent),它可以用于大部分机器学习算法中。

首先回顾使用梯度下降训练代价函数。

吴恩达机器学习简介 machine learning 吴恩达_机器学习_03

使用梯度下降算法,吴恩达机器学习简介 machine learning 吴恩达_随机梯度下降_04的变化路径如图右侧。每一步都需要计算吴恩达机器学习简介 machine learning 吴恩达_人工智能_05,因此但数据量特大时计算量会相应增加。于是这种梯度学习又称批量梯度下降(Batch Gradient Descent),“批量”可以理解为需要考虑一批训练样本。

吴恩达机器学习简介 machine learning 吴恩达_人工智能_06

下面介绍一种随机梯度下降。与批量梯度下降不同的是,它不需要每次迭代时考虑全部的训练样本,而是每次迭代时只考虑一个训练样本

随机梯度下降定义代价函数(吴恩达机器学习简介 machine learning 吴恩达_随机梯度下降_07函数)为单个训练样本的平方误差的一半,也就是衡量假设函数在单个训练样本吴恩达机器学习简介 machine learning 吴恩达_人工智能_08上的表现。此时,总体代价函数吴恩达机器学习简介 machine learning 吴恩达_吴恩达机器学习简介_09等于假设函数在每一个训练样本吴恩达机器学习简介 machine learning 吴恩达_人工智能_08上代价函数的平均值。

在迭代更新吴恩达机器学习简介 machine learning 吴恩达_随机梯度下降_04中,随机梯度下降首先随机打乱数据集。然后顺序遍历训练样本,使用单个训练样本的代价函数偏导(梯度项)代替总体偏导平均值,从而帮助吴恩达机器学习简介 machine learning 吴恩达_随机梯度下降_04更新。

其中,最开始的随机打乱训练样本顺序,有助于加速代价函数的收敛。更重要的是,每次迭代中,随机梯度下降的梯度项只考虑计算单个训练样本,并在这个过程中朝着全局最小值方向进行修改吴恩达机器学习简介 machine learning 吴恩达_随机梯度下降_04

吴恩达机器学习简介 machine learning 吴恩达_随机梯度下降_14

综上,得到随机梯度下降的训练步骤。总体来说,随机梯度下降的吴恩达机器学习简介 machine learning 吴恩达_随机梯度下降_15大多数时候会朝着全局最小值的方向变化。当然有时候,也会一直在全局最小值附近变化。

一般来说,第二步中的外层循环只需要重复吴恩达机器学习简介 machine learning 吴恩达_机器学习_16次,当然这个取决于训练样本量的大小。

吴恩达机器学习简介 machine learning 吴恩达_大数据_17

Mini-Batch 梯度下降 Mini-Batch gradient descent

引入:在上一部分中,我们讨论了随机梯度下降的原理、以及运行速度相对于批量梯度下降更快的原因。本部分,讨论另外一种梯度下降——Mini-Batch 梯度下降 (Mini-Batch gradient descent),它有时甚至比随机梯度下降更快。

与批量梯度下降、随机梯度下降不同,Mini-Batch 梯度下降每次迭代使用吴恩达机器学习简介 machine learning 吴恩达_吴恩达机器学习简介_18个训练样本。其中,吴恩达机器学习简介 machine learning 吴恩达_随机梯度下降_19是一个称为Mini-Batch大小的参数,取值一般在2-100之间(可以10)。

吴恩达机器学习简介 machine learning 吴恩达_随机梯度下降_20

总之,Mini-Batch梯度下降的训练步骤如图。这也解释了为什么它比批量梯度下降更快。

那么与随机梯度下降相比又如何呢?为什么使用吴恩达机器学习简介 machine learning 吴恩达_随机梯度下降_19个训练样本呢?实际上,只有获得优秀的向量化方式时,Mini-Batch梯度下降才会优于随机梯度下降。也就是通过使用合适的向量化方式计算余下的样本,有时能够使用一个好的数据代数库实现吴恩达机器学习简介 machine learning 吴恩达_随机梯度下降_19个训练样本的并行梯度计算。

Mini-Batch梯度下降的缺点在于需要花时间确定参数吴恩达机器学习简介 machine learning 吴恩达_随机梯度下降_19的值。

吴恩达机器学习简介 machine learning 吴恩达_大数据_24

随机梯度下降收敛 stochastic gradient descent convergence

引入: 之前学习过随机梯度下降算法,那么如何判断调试过程是否结束并且已经收敛到合适的位置了呢?此外,如何调整随机梯度下降中学习速率吴恩达机器学习简介 machine learning 吴恩达_大数据_25的值呢?

回顾批量梯度下降,它通过绘制代价函数随迭代次数变化的曲线判断算法是否在收敛。每次计算代价函数,需要遍历整个训练集。

对于随机梯度下降,它每次通过考虑一个训练样本,来改假设函数。因此对应的,它在每次迭代前,需要首先计算吴恩达机器学习简介 machine learning 吴恩达_随机梯度下降_26。并且,每进行1000次迭代,需要将这前1000个吴恩达机器学习简介 machine learning 吴恩达_随机梯度下降_26的平均值画出来,从而得到代价函数随迭代次数变化的曲线。通过观察该曲线,可以判断随机梯度下降是否在收敛。

吴恩达机器学习简介 machine learning 吴恩达_随机梯度下降_28

下图展示随机梯度下降的吴恩达机器学习简介 machine learning 吴恩达_机器学习_29函数变化曲线,每个数据点代表前1000个样本的平均值。

  • 可以发现,曲线中包含非常多的噪声。此外,学习速率较小,可能使得吴恩达机器学习简介 machine learning 吴恩达_随机梯度下降_07函数变化曲线更加平稳(图左上的红线)。
  • 增加1000到5000,可以发现曲线变得更加平滑(图右上红线)。
  • 可能曲线形状如图左下蓝线。但增加求平均值的样本数到5000,可能发现曲线在下降。因为此时曲线中噪声过多,掩盖住了函数的实际变化趋势。也有可能求平均值的样本数到5000时,还是发现曲线非常平滑,这说明算法确实没有在收敛。这时需要调整学习速率或调整特征或其他。
  • 可能曲线形状如图右下蓝线,代价函数呈现上升趋势。这说明需要减小学习速率吴恩达机器学习简介 machine learning 吴恩达_大数据_25
    总之,如果曲线噪声过大、上下波动过大,可以增加求均值的样本数量;如果代价函数在增加,可以减小学习速率吴恩达机器学习简介 machine learning 吴恩达_大数据_25

最后,关于学习速率吴恩达机器学习简介 machine learning 吴恩达_人工智能_33还有一点需要注意。

一般来说,学习速率吴恩达机器学习简介 machine learning 吴恩达_人工智能_33在调试过程中是不变的。但是为了使得代价函数更好地逼近全局最小值,在调试中可以缓慢减小学习速率吴恩达机器学习简介 machine learning 吴恩达_大数据_25的值。但这会给算法增加工作量,并且不变的吴恩达机器学习简介 machine learning 吴恩达_人工智能_33值已经能得到一个逼近全局最小值的结果了,因此实际中很少使用这种办法。

吴恩达机器学习简介 machine learning 吴恩达_人工智能_37

在线学习 online learning

引入:本部分将讨论一种新的大规模机器学习机制——在线学习机制( online learning setting)。在线学习可以满足连续一波数据或连续数据流的建模需求。

下面用航运服务的例子进行说明。

假如我们需要优化给运输包裹的售价。也就是已知用户特征、运输包裹的往返地、售价,我们希望学习特定价格下用户接受服务的概率,从而优化售价。

假设我们使用逻辑回归算法,此时算法的运算步骤如下图。此时,算法一次训练一个样本,然后丢弃它。有趣的是,该算法可以适应变化的用户偏好。但数据量足够大时,系统展示出来的策略将会符合最新用户表现出来的特征。

注意,该算法适用于大型网站(数据量充足),小型网站(数据量较少)则不适用。

吴恩达机器学习简介 machine learning 吴恩达_随机梯度下降_38

下面展示一个很适合使用在线学习的例子——产品搜索。这类问题被称作:点击率预测学习问题(predicted click-through rate,predicted CTR)。此类问题的解决策略为:每次给用户展示最有可能被点击的10个产品,从而得到10组样本。然后使用在线学习更新参数,之后丢弃这十组数据。进行下轮循环。

吴恩达机器学习简介 machine learning 吴恩达_大数据_39

减少映射与数据并行 Map-reduce and data parallelism

引入:批量梯度下降、随机梯度下降、Mini-batch 梯度下降、在线学习都是只能在单机上使用的算法。实际中由于数据规模过大,存在多机合作进行机器学习的需求。Map-reduce能解决这一问题。

假设我们使用批量梯度下降优化逻辑回归的代价函数,为了书写方便设置吴恩达机器学习简介 machine learning 吴恩达_吴恩达机器学习简介_40为400。因此有了第一行的吴恩达机器学习简介 machine learning 吴恩达_随机梯度下降_04更新公式。但是数据量m过大,影响总体运算速度,因此使用Map-Reduce 的思想进行处理。

下面讲述Map-Reduce 的思想。把数据集分为四份训练样本,然后分别发送给四台机器进行计算。此时,每台机器计算量为原本的1/4,因此运算速度提高到原来的四倍。得到计算结果吴恩达机器学习简介 machine learning 吴恩达_人工智能_42后,将吴恩达机器学习简介 machine learning 吴恩达_人工智能_42发送给中心服务器进行汇总整合,从而更新参数吴恩达机器学习简介 machine learning 吴恩达_随机梯度下降_04。这种做法最终能得到与批量梯度下降相同的结果,只不过它是通过四台机器协同工作实现的运算。

吴恩达机器学习简介 machine learning 吴恩达_随机梯度下降_45

综上,得到Map-Reduce 思想的示意图如图。

由于网络延迟,这种思想的实际运算速率比原本的四倍少点点。但这已经很不错了。

吴恩达机器学习简介 machine learning 吴恩达_机器学习_46

使用Map-Reduce实现机器学习运算时,需要思考 学习算法是否可以表示成训练集的求和。实际上,很多算法能达到这一要求。

吴恩达机器学习简介 machine learning 吴恩达_大数据_47

上文讨论了Map-Reduce 算法在多台电脑上并行运算。实际上,在单台机器上进行Map-Reduce 计算也是可行的,只要电脑拥有多个CPU、CPU拥有多个核心。后者的优势在于:不用担心网络延迟的问题。

部分线性代数库能自动利用多核实现并行运算,此时就不需要另外使用Map-Reduce算法。

吴恩达机器学习简介 machine learning 吴恩达_随机梯度下降_48