我从许多讨论中看到了类似的结论,即随着 minibatch 的大小变大,SGD 的收敛实际上变得更难/更差,例如这篇论文和这个答案。此外,我听说有人在早期使用小学习率或批量大小等技巧来解决大批量大小的问题。
然而,这似乎违反直觉,因为小批量的平均损失可以被认为是数据分布上预期损失的近似值,
批量越大,它应该越准确。为什么在实践中并非如此?
以下是我试图解释的一些(可能是错误的)想法。
模型的参数相互依赖度很高,当batch过大时会同时影响过多的参数,使得参数很难达到稳定的内在依赖?(如批量归一化论文中提到的内部协变量移位问题)
或者当几乎所有参数在每次迭代中都负责时,他们会倾向于学习冗余的隐式模式,从而降低模型的容量?(我的意思是说对于数字分类问题,一些模式应该对点负责,一些对边缘负责,但是当这种情况发生时,每个模式都试图对所有形状负责)。
还是因为当批量大小接近训练集的规模时,从数据分布中不再可以将小批量视为独立同分布,因为相关小批量的概率很大?
更新
正如 Benoit Sanchez 的回答中所指出的,一个重要原因是大型 minibatch 需要更多计算才能完成一次更新,并且大多数分析使用固定数量的训练时期进行比较。
然而,这篇论文(Wilson 和 Martinez,2003 年)表明,即使给定足够数量的训练 epoch,较大的批量大小仍然略微不利。一般情况是这样吗?