2.2 理解 Mini-batch 梯度下降-深度学习第二课《改善深层神经网络》-Stanford吴恩达教授


←上一篇↓↑下一篇→
2.1 Mini-batch 梯度下降回到目录2.3 指数加权平均

理解 Mini-batch 梯度下降 (Understanding Mini-batch Gradient Descent)

在上周视频中,你知道了如何利用mini-batch梯度下降法来开始处理训练集和开始梯度下降,即使你只处理了部分训练集,即使你是第一次处理,本视频中,我们将进一步学习如何执行梯度下降法,更好地理解其作用和原理。

在这里插入图片描述

使用batch梯度下降法时,每次迭代你都需要历遍整个训练集,可以预期每次迭代成本都会下降,所以如果成本函数 J J J 是迭代次数的一个函数,它应该会随着每次迭代而减少,如果 J J J 在某次迭代中增加了,那肯定出了问题,也许你的学习率太大。

使用mini-batch梯度下降法,如果你作出成本函数在整个过程中的图,则并不是每次迭代都是下降的,特别是在每次迭代中,你要处理的是 X { t } X^{\{t\}} X{t} Y { t } Y^{\{t\}} Y{t} ,如果要作出成本函数 J { t } J^{\{t\}} J{t} 的图,而 J { t } J^{\{t\}} J{t} 只和 X { t } X^{\{t\}} X{t} Y { t } Y^{\{t\}} Y{t} 有关,也就是每次迭代下你都在训练不同的样本集或者说训练不同的mini-batch,如果你要作出成本函数 J J J 的图,你很可能会看到这样的结果,走向朝下,但有更多的噪声,所以如果你作出 J { t } J^{\{t\}} J{t} 的图,因为在训练mini-batch梯度下降法时,会经过多代,你可能会看到这样的曲线。没有每次迭代都下降是不要紧的,但走势应该向下,噪声产生的原因在于也许 X { 1 } X^{\{1\}} X{1} Y { 1 } Y^{\{1\}} Y{1} 是比较容易计算的mini-batch,因此成本会低一些。不过也许出于偶然, X { 2 } X^{\{2\}} X{2} Y { 2 } Y^{\{2\}} Y{2} 是比较难运算的mini-batch,或许你需要一些残缺的样本,这样一来,成本会更高一些,所以才会出现这些摆动,因为你是在运行mini-batch梯度下降法作出成本函数图。

你需要决定的变量之一是mini-batch的大小, m m m 就是训练集的大小,极端情况下,如果mini-batch的大小等于 m m m ,其实就是batch梯度下降法,在这种极端情况下,你就有了mini-batch X { 1 } X^{\{1\}} X{1} Y { 1 } Y^{\{1\}} Y{1} ,并且该mini-batch等于整个训练集,所以把mini-batch大小设为 m m m 可以得到batch梯度下降法。

在这里插入图片描述

另一个极端情况,假设mini-batch大小为1,就有了新的算法,叫做随机梯度下降法,每个样本都是独立的mini-batch,当你看第一个mini-batch,也就是 X { 1 } X^{\{1\}} X{1} Y { 1 } Y^{\{1\}} Y{1} ,如果mini-batch大小为1,它就是你的第一个训练样本,这就是你的第一个训练样本。接着再看第二个mini-batch,也就是第二个训练样本,采取梯度下降步骤,然后是第三个训练样本,以此类推,一次只处理一个。

在这里插入图片描述

看在两种极端下成本函数的优化情况,如果这是你想要最小化的成本函数的轮廓,最小值在那里,batch梯度下降法从某处开始,相对噪声低些,幅度也大一些,你可以继续找最小值。

相反,在随机梯度下降法中,从某一点开始,我们重新选取一个起始点,每次迭代,你只对一个样本进行梯度下降,大部分时候你向着全局最小值靠近,有时候你会远离最小值,因为那个样本恰好给你指的方向不对,因此随机梯度下降法是有很多噪声的,平均来看,它最终会靠近最小值,不过有时候也会方向错误,因为随机梯度下降法永远不会收敛,而是会一直在最小值附近波动,但它并不会在达到最小值并停留在此。

实际上你选择的mini-batch大小在二者之间,大小在1和 m m m 之间,而1太小了, m m m 太大了,原因在于如果使用batch梯度下降法,mini-batch的大小为 m m m ,每个迭代需要处理大量训练样本,该算法的主要弊端在于特别是在训练样本数量巨大的时候,单次迭代耗时太长。如果训练样本不大,batch梯度下降法运行地很好。

在这里插入图片描述

相反,如果使用随机梯度下降法,如果你只要处理一个样本,那这个方法很好,这样做没有问题,通过减小学习率,噪声会被改善或有所减小,但随机梯度下降法的一大缺点是,你会失去所有向量化带给你的加速,因为一次性只处理了一个训练样本,这样效率过于低下,所以实践中最好选择不大不小的mini-batch尺寸,实际上学习率达到最快。你会发现两个好处,一方面,你得到了大量向量化,上个视频中我们用过的例子中,如果mini-batch大小为1000个样本,你就可以对1000个样本向量化,比你一次性处理多个样本快得多。另一方面,你不需要等待整个训练集被处理完就可以开始进行后续工作,再用一下上个视频的数字,每次训练集允许我们采取5000个梯度下降步骤,所以实际上一些位于中间的mini-batch大小效果最好。

在这里插入图片描述

mini-batch梯度下降法,我们从这里开始,一次迭代这样做,两次,三次,四次,它不会总朝向最小值靠近,但它比随机梯度下降要更持续地靠近最小值的方向,它也不一定在很小的范围内收敛或者波动,如果出现这个问题,可以慢慢减少学习率,我们在下个视频会讲到学习率衰减,也就是如何减小学习率。

如果mini-batch大小既不是1也不是 m m m ,应该取中间值,那应该怎么选择呢?其实是有指导原则的。

首先,如果训练集较小,直接使用batch梯度下降法,样本集较小就没必要使用mini-batch梯度下降法,你可以快速处理整个训练集,所以使用batch梯度下降法也很好,这里的少是说小于2000个样本,这样比较适合使用batch梯度下降法。不然,样本数目较大的话,一般的b大小为64到512,考虑到电脑内存设置和使用的方式,如果mini-batch大小是2的 n n n 次方,代码会运行地快一些,64就是2的6次方,以此类推,128是2的7次方,256是2的8次方,512是2的9次方。所以我经常把mini-batch大小设成2的次方。在上一个视频里,我的mini-batch大小设为了1000,建议你可以试一下1024,也就是2的10次方。也有mini-batch的大小为1024,不过比较少见,64到512的mini-batch比较常见。

最后需要注意的是在你的mini-batch中,要确保 X { t } X^{\{t\}} X{t} Y { t } Y^{\{t\}} Y{t} 要符合CPU/GPU内存,取决于你的应用方向以及训练集的大小。如果你处理的mini-batchCPU/GPU内存不相符,不管你用什么方法处理数据,你会注意到算法的表现急转直下变得惨不忍睹,所以我希望你对一般人们使用的mini-batch大小有一个直观了解。事实上mini-batch大小是另一个重要的变量,你需要做一个快速尝试,才能找到能够最有效地减少成本函数的那个,我一般会尝试几个不同的值,几个不同的2次方,然后看能否找到一个让梯度下降优化算法最高效的大小。希望这些能够指导你如何开始找到这一数值。

你学会了如何执行mini-batch梯度下降,令算法运行得更快,特别是在训练样本数目较大的情况下。不过还有个更高效的算法,比梯度下降法和mini-batch梯度下降法都要高效的多,我们在接下来的视频中将为大家一一讲解。

课程PPT

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


←上一篇↓↑下一篇→
2.1 Mini-batch 梯度下降回到目录2.3 指数加权平均

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zhao-Jichao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值