SGD 小批量 - 大小都一样吗?

SGD mini batches - all of the same size?

具有小批量的随机梯度下降算法通常使用小批量的大小或计数作为参数。

Now what I'm wondering, do all of the mini-batches need to be of exact same size?

以来自 MNIST 的训练数据(60k 训练图像)和 70 的小批量大小为例。

如果我们进入一个简单的循环,就会产生我们 857 mini-batches of size 70 (as specified) and one mini-batch of size 10.

现在,(使用这种方法)一个 mini-batch 比其他 mini-batch 小(这里最坏的情况:大小为 1 的 mini-batch)是否重要? 这会强烈影响我们的网络在几乎所有训练中学到的权重和偏差吗?

不,小批量不必大小相同。出于效率原因,它们通常大小不变(您不必重新分配 memory/resize 张量)。实际上,您甚至可以在每次迭代中对批次大小进行采样。

但是,批处理的大小会产生影响。很难说哪一个是最好的,但是使用 smaller/bigger 批量大小会导致不同的解决方案(并且总是 - 不同的收敛速度)。这是处理更多随机运动(小批量)与平滑更新(良好的梯度估计器)的效果。特别是 - 对具有一些预定义大小分布的批次进行随机大小可用于同时使用两种效果(但花在拟合此分布上的时间可能不值得)