批量大小如何影响SGD的收敛,为什么?
我在许多讨论中都得出了类似的结论,即随着小批量生产的规模变大,SGD的收敛实际上变得越来越困难,例如本文和这个答案。我也听说有人在早期使用小学习率或批量大小之类的技巧来解决大批量问题。 但是,这似乎是违反直觉的,因为小批量的平均损失可以认为是数据分布上预期损失的近似值 1个| X|∑X ∈ Xl (x ,w )≈ ÈX 〜 pd一个牛逼一[ l (x ,w )]1个|X|∑X∈X升(X,w)≈ËX〜pd一种Ť一种[升(X,w)]\frac{1}{|X|}\sum_{x\in X} l(x,w)\approx E_{x\sim p_{data}}[l(x,w)] 较大的批量大小的更准确它应该是。为什么实际上不是这样? 以下是我的一些想法(可能是错误的),试图加以解释。 模型的参数彼此高度依赖,当批处理变得太大时,它会同时影响太多的参数,以至于参数很难达到稳定的固有依赖性?(如批处理规范化文件中提到的内部协变量偏移问题) 还是当几乎所有参数都在每次迭代中负责时,它们将倾向于学习冗余的隐式模式,从而降低了模型的容量?(我的意思是说,对于数字分类问题,某些图案应负责点,某些图案应负责边缘,但是当发生这种情况时,每个图案都应负责所有形状)。 还是因为当批的大小接近训练集的规模时,由于相关小批的可能性很大,所以小批不再从数据分布中被视为同小异? 更新 正如Benoit Sanchez的答案所指出的,一个重要的原因是大型微型批次需要更多的计算才能完成一次更新,并且大多数分析都使用固定数量的训练时期进行比较。 但是,这篇论文(Wilson和Martinez,2003年)表明,即使有足够的训练时间,较大的批次规模仍然略有不利。通常是这样吗?