【机器学习(九)】大数据集及其梯度下降算法

声明:本文是以吴恩达机器学习系列课程为学习对象而作的学习笔记。本文对应P102-P105。

大数据集

假定你的训练集的大小m为100000000。如果你想训练一个线性回归模型或是一个逻辑回归模型。其梯度下降规则如下:
在这里插入图片描述
当m的值为100000000时,就需要对一亿项进行求和。这是为了计算导数项以及演算单步下降。

因为计算超过一亿项的代价太高了。我们容易思考:为什么不能在这一亿项中取一千个样本的子集,然后仅用这一千个样本来训练我们的算法。
使用一个非常小的训练集的完整性检查的方法,结果可能也是一样的,即如果使用一个非常小的m的大小为1000的训练集,效果可能相同。它也是绘制学习曲线的常用方法。如果要绘制学习曲线,同时如果你的训练目标和交叉验证集合目标如下:
【机器学习(九)】大数据集及其梯度下降算法_第1张图片
这看起来像一个高方差学习算法。我们更能确信,增加额外的训练用例能够提升效果。
相反,如果你要绘制的学习曲线,训练目标和交叉验证集合目标如下:
【机器学习(九)】大数据集及其梯度下降算法_第2张图片
那么这看起来像是经典的高偏差学习算法。在这种情况下,如果你取最大值到1000,这看起来不太可能会比增加m到一亿效果更好。
当然,如果你处于第二种情况,那么自然而然会添加额外的特征项,或在你的神经网络中添加额外的隐藏单元等等。这样你最终会得到类似第一种情况,它的m最大可能取到1000,这也令你更确定应该尝试增加基础结构,改变算法,使用多于一千的样本集。

随机梯度下降

假设你正在用梯度下降法来训练一个线性回归模型,那我们的假设函数和代价函数是这样的:
【机器学习(九)】大数据集及其梯度下降算法_第3张图片
【机器学习(九)】大数据集及其梯度下降算法_第4张图片
而梯度下降算法如下:
【机器学习(九)】大数据集及其梯度下降算法_第5张图片
在梯度下降的内部循环中,需要用该式子反复更新参数θ的值。
现在,当m是一个很大的值时,计算微分项时,计算量会非常大,因为需要对m个样本进行求和。这叫批量梯度下降

随机梯度下降算法在每次迭代中不需要考虑全部的训练样本,仅仅只需要考虑一个训练样本。
我们将代价函数定义如下:
在这里插入图片描述
这个代价函数实际上衡量的是我的假设函数在某个样本(x(i) ,y(i) )上的表现。
所以,总体代价函数J_train可以被写成如下等效的形式在这里插入图片描述
用这种方法应用到线性回归中,过程如下:

  1. 随机打乱所有数据
    将所有 m个训练样本重新随机排列
  2. 在i等于1到m中进行循环
    对所有的训练样本进行遍历,然后进行如下更新:
    θ_j=θ_j - α(h_θ(x(i) )-y(i) )*x(i) _j
    然后我们同样对所有j的值进行更新

在运行随机梯度下降的过程中,总的来看,参数是朝着全局最小值的方向移动的。因此我们在运行随机梯度下降最后能得到一个很接近全局最小值的参数。

Mini-batch梯度下降

Mini-batch梯度下降介于批量梯度下降算法和随机梯度下降算法之间。这个算法每次迭代会使用b个样本,这里的b是一个称为Mini-batch大小的参数,通常为10,取值范围是[2,100]。

这个算法的思想是:既不一次只用一个样本,也不一次用m个样本,而是一次用b个样本就更新一次参数:
【机器学习(九)】大数据集及其梯度下降算法_第6张图片
与批量梯度下降相比,它的运行过程会更快。
在向量化过程中,特别的,Mini-batch梯度下降算法可能会比随机梯度下降算法更好,仅当你有一个好的向量化方式。

选择合适的学习速率α

对于随机梯度下降算法,为了检查算法是否收敛,我们可以进行下面的工作。
【机器学习(九)】大数据集及其梯度下降算法_第7张图片
当随机梯度下降法进行学习时,在我们对某一个样本进行训练前,我们要关注某样本(x(i) ,y(i) ),然后对这个样本做一次小小的更新,然后再到下一个样本,(x(i+1) ,y(i+1) ),以此类推。
与之前遍历所有的训练样本相比,随机梯度下降法的这个步骤只用在更新θ前计算这些cost函数,计算量并不大。

最后,为了检查随机梯度下降是否收敛,每1000次迭代我们就画出前一步中所计算出的cost函数,将其平均值画出来。如此一来,它会有效地帮你估计出你的算法在前1000个样本上表现有多好。

我们已经知道,当运行随机梯度下降时,算法会从某个点开始,然后曲折地到达最小值。但它不会完全收敛,而是在最小值附近一直徘徊。在大多数典型应用中,学习速率α一般是一个不变的常数,因此得到上述结果。如果你想让随机梯度下降更好地收敛到全局最小值,可以让α的值随时间变化逐渐减小,公式如下:
在这里插入图片描述

  • const1,2:两个常值
  • iterationNumber:迭代次数

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