选择 mini-batch 的大小有什么规则吗?

数据挖掘 深度学习 神经网络 卷积神经网络 优化
2021-09-13 21:54:26

在训练神经网络时,一个超参数是 minibatch 的大小。常见的选择是每小批量 32、64 和 128 个元素。

是否有关于小批量应该有多大的规则/指南?或者任何调查对培训的影响的出版物?

2个回答

On Large-Batch Training for Deep Learning: Generalization Gap and Sharp Minima中有几个有趣的陈述:

在实践中观察到,当使用更大的批次时,模型的质量会下降,这是通过其泛化能力来衡量的 [...]

大批量方法倾向于收敛到训练和测试函数的急剧最小值——众所周知,急剧的最小值会导致较差的泛化。n. 相比之下,小批量方法始终收敛到平坦的最小化器,我们的实验支持一个普遍持有的观点,即这是由于梯度估计中的固有噪声。

来自我的硕士论文:因此,小批量大小的选择会影响:

  • 收敛前的训练时间:似乎有一个甜蜜点。如果批量大小非常小(例如 8),则此时间会增加。如果批量大小很大,它也高于最小值。
  • 每个 epoch 的训练时间:更大的计算速度更快(效率更高)
  • 结果模型质量:由于更好的泛化性,越低越好(?)

重要的是要注意超参数交互:批量大小可能与其他超参数交互,最显着的是学习率。在一些实验中,这种相互作用可能很难单独区分批量大小对模型质量的影响。另一个强大的相互作用是提前停止以进行正则化。

也可以看看

根据 Andrew Ng 的深度学习专业课程 2,请记住以下几点:

  1. 如果您有大量训练集,请使用小批量梯度下降。否则对于小型训练集,使用批量梯度下降。
  2. 小批量大小通常选择为 2 的幂,即 16、32、64、128、256 等。
  3. 现在,在为小批量梯度下降选择合适的大小时,请确保小批量适合 CPU/GPU。
  4. 32通常是一个不错的选择

要了解更多信息,您可以阅读以下内容: 小批量梯度下降和如何配置批量大小的简要介绍