1 epoch = 看一遍所有的 batch → 在每个 epoch 后进行一次 Shuffle。

为什么要用?

如果没有划分,那么要把所有的资料都看完才 update 一次。 经过划分之后,每看一组,update 一次。如果组太小,就会有太多的 noise。

但是注意:

  1. 大的 batch size 不一定比小的时间长。因为对于一组可以并行。
  2. 小 batch size 可能需要的时间更多。
  3. noisy 反而可以帮助训练。小的 batch size 往往可以帮助 optimization。 据说是不同的 batch 可以获得不同的 loss,所以曲线不一样,优化效果就会不同。

这里有一个正在研究的问题,即小的 batch 到底好在哪,有一个假说是其会更倾向于落在 Flat Minima 里,而大的 batch 会倾向去落在 Sharp Minima 里,当然这个假设尚未得到证实。

当然也有一些方案可以使得在大的 batch 下也可以取得不错的 optimization 的结果,使得可以利用大 batch 快的优势。