为什么不同的批量大小在 Keras 中给出不同的精度?

Mad*_*ker 3 machine-learning deep-learning conv-neural-network keras

我使用 Keras 的 CNN 对 MNIST 数据集进行分类。我发现使用不同的批量大小会产生不同的精度。为什么会这样呢?

使用批量大小 1000 (Acc = 0.97600)

使用批量大小 10 (Acc = 0.97599)

虽然差别很小,但为什么会有差别呢? 编辑-我发现差异只是因为精度问题,它们实际上是相等的。

pou*_*yan 6

这是因为训练过程中存在小批量梯度下降效应。您可以在这里找到很好的解释,我在这里提到了该链接的一些注释:

批量大小是学习过程中的一个滑块。

  1. 小值可以使学习过程快速收敛,但会在训练过程中产生噪声。
  2. 大值会导致学习过程缓慢收敛并准确估计误差梯度。

该链接的一个重要说明是:

所呈现的结果证实,在给定的计算成本下,在广泛的实验中,使用小批量可以实现最佳的训练稳定性和泛化性能。在所有情况下,批量大小 m = 32 或更小都获得了最佳结果

这就是本文的结果。

编辑

在这里我还应该提两点:

  1. 由于机器学习算法概念固有的随机性,通常您不应期望机器学习算法(如深度学习算法)在不同的运行中具有相同的结果。您可以在这里找到更多详细信息。
  2. 另一方面,您的两个结果太接近并且在某种程度上它们是相等的。因此,就您的情况而言,根据报告的结果,我们可以说批量大小对您的网络结果没有影响。