2.2.1 mini-batch

调试处理

我们知道在大量数据下面训练算法,速度会非常慢,那么我们需要找到快速的优化算法来加快训练速度。这里我们先来讨论mini-batch梯度下降法

mini-batch梯度下降法介绍

如图所示

2.2.1 mini-batch_第1张图片

我们传统的算法是执行一遍梯度算法要跑整个数据集,如果数据集很大,比如说有5千万,那么多次执行梯度下降法速度会很慢很慢。

所以,如果你在处理完整个训练集样本之前,先让梯度下降法处理一部分,那么你的算法会快很多。我们可以把训练集分割成更小的部分,这些子集称之为mini-batch,我们将这些mini-batch用
大括号的形式来表示。这样,我们对每一个mini-batch用梯度下降法,就避免了一次处理整个数据集,导致计算过慢。

mini-batch梯度下降法原理

2.2.1 mini-batch_第2张图片

如图所示,这里每一个mini-batch的样本量是1000,所以,我们对1000个样本量使用梯度下降法。

理解mini-batch梯度下降法

使用batch梯度下降(就是一般的要遍历整个训练集的梯度下降)

2.2.1 mini-batch_第3张图片

如图左侧所示,这是一般的batch下降,cost function随着迭代次数不断降低。但是mini-batch不是这样的结果,右侧是mini-batch的图像。不需要个mini都要J函数是下降的,只需要总体趋势是下降的就可以了。

对于mini-batch而言,mini-batch的大小是一个至关重要的参数。

2.2.1 mini-batch_第4张图片

如图所示,如果在极端情况下,mini-batch的大小是1,那么我们就得到了一个新的算法,称为随机梯度下降法

图片的下侧展示了两种极端情况下,成本函数的优化情况。蓝色的线表示的是mini-batch大小是m的情况下,此时实际上就是batch。紫色的线表示的是mini-batch大小是1的情况下,从图中我们可以看出,大部分情况蓝色的线可以执行梯度下降最后找到最优解,但是当mini-batch的数量太低的时候(紫色),随机噪声很大,大部分情况下是可以找到最小值,但是有时也会例外。

随机梯度法永远不会收敛,而且会在最小值附近不断波动,所以他不会到达最小值之后就停留在这里。随机梯度法的另外一个缺点就是你会失去向量化给你的加速效果。

所以实践中我们的mini-batch size最好选择一个比较均衡的值。

mini-batch大小的选择

那么有什么大小选择的指导原则呢?

2.2.1 mini-batch_第5张图片

如图所示,对于很小的样本量,我们不需要考虑这个问题,当样本量比较大的时候,我们的mini-batch的大小一般设置成2的次方的形式,一般不会大于512。

另外一个值得注意的原则是mini-batch要和CPU以及GPU内存相符。如果不符的话,效果会非常糟糕。

吴教主深度学习和神经网络课程总纲

你可能感兴趣的:(深度学习)