批量大小如何影响SGD的收敛,为什么?


18

我在许多讨论中都得出了类似的结论,即随着小批量生产的规模变大,SGD的收敛实际上变得越来越困难,例如本文这个答案。我也听说有人在早期使用小学习率或批量大小之类的技巧来解决大批量问题。

但是,这似乎是违反直觉的,因为小批量的平均损失可以认为是数据分布上预期损失的近似值

1个|X|XXXwËXpd一种Ť一种[Xw]
较大的批量大小的更准确它应该是。为什么实际上不是这样?


以下是我的一些想法(可能是错误的),试图加以解释。

模型的参数彼此高度依赖,当批处理变得太大时,它会同时影响太多的参数,以至于参数很难达到稳定的固有依赖性?(如批处理规范化文件中提到的内部协变量偏移问题)

还是当几乎所有参数都在每次迭代中负责时,它们将倾向于学习冗余的隐式模式,从而降低了模型的容量?(我的意思是说,对于数字分类问题,某些图案应负责点,某些图案应负责边缘,但是当发生这种情况时,每个图案都应负责所有形状)。

还是因为当批的大小接近训练集的规模时,由于相关小批的可能性很大,所以小批不再从数据分布中被视为同小异?


更新
正如Benoit Sanchez的答案所指出的,一个重要的原因是大型微型批次需要更多的计算才能完成一次更新,并且大多数分析都使用固定数量的训练时期进行比较。

但是,这篇论文(Wilson和Martinez,2003年)表明,即使有足够的训练时间,较大的批次规模仍然略有不利。通常是这样吗? 在此处输入图片说明

Answers:


12

确保一个大批量的更新一个小批量的更新 “更好”(就准确性而言)。这可以在您在问题中复制的表格中看到(称样本数为):ñ

  • 批次大小1:更新次数27ñ
  • 8343×ñ200000.47ñ

您会看到,对于相同的准确性,批次越大,所需的更新越少。

但是无法比较,因为它没有处理相同数量的数据。我引用第一篇文章:

ķĴ1个ĴķĴ

这是关于处理相同数量的数据,并且多个小批处理的开销很小,但这需要相当的处理资源。

有几种方法可以理解为什么几个更新更好(对于读取的数据量相同)。这是随机梯度下降与梯度下降的关键思想。无需阅读所有内容然后在最后纠正自己,而是在途中进行自我纠正,使下一次阅读更加有用,因为您可以通过更好的猜测来纠正自己。在几何上,最好进行几次更新,因为您要绘制多个线段,每个线段都在每个线段的开始沿(近似)渐变的方向绘制。而一次重大更新就是从一开始就沿(精确)渐变的方向进行细分。即使方向不太精确,也最好多次更改方向。

迷你批次的大小实质上是更新的频率:迷你批次越小,更新越多。在一种极端情况下(minibatch =数据集),您可以进行梯度下降。在另一极端(minibatch =一行),您每行SGD已满。无论如何,每行SGD都更好,但是较大的迷你批处理适合更有效的并行化。

在收敛过程结束时,SGD的精度不如(批量)GD。但是在这一点上,事情(通常)已经成为一种毫无用处的精确拟合。虽然在训练集上获得的损失函数略小,但您没有真正的预测能力。您只在寻找非常精确的最优值,但这无济于事。如果损失函数正确正则化(这可以防止过度拟合),那么您并不是完全“过度”拟合,而只是无用地“过度”拟合。这表明测试集的准确性没有明显变化。


1
谢谢,这很有道理。因此,基本上,如果进行相同数量的更新,则更大的批次大小至少将是一样好吧?
dontloo

您是否知道有关此方面的任何已发布实验(将不同的批次大小与固定数量的更新进行比较)?
dontloo

是的,对于相同数量的更新,批次越大越好。我不知道某个出版物,如果找到它,我将其发布。
贝努瓦·桑切斯

我读完了您余下的问题(表格)。有趣的是,它显示了测试集上的结果,而梯度体面的目标是在训练集上进行优化。小批量有可能通过使最优值随机化来避免某种微小的过度拟合。我没有直觉上的了解,这是一件微妙的事情。
贝诺瓦·桑切斯

根据该文章,准确性差异不明显。他们只想指出,精度本质上是相同的。他们主要要指出的是,小批量的SGD更快。
贝诺瓦·桑切斯

4

要添加到柯蒂斯·怀特的答案(并添加更多参考文献):

是SGD是一种正则化。这很重要,因为否则,很难解释DNN为何不总是过拟合的原因,因为它们可以

据我了解,原因是SGD会导致参数空间“跳来跳去”,因此在训练过程中,参数不能保持在狭窄的最小值内,而只能在(或接近于)较宽的最小值内。这些更宽泛的模型显然[1]泛化得更好(又称过度拟合)。

更多参考:

  • 这是 [2]的另一篇文章,对此进行了形式化(或者尝试,我没有遵循所有内容,请检查一下自己!)
  • 本文 [3]声称,"stochastic relaxation, or random diffusion"SGD固有的随机性导致了一个阶段"maximiz[ation of] the conditional entropy of the layer"

两种说法都说SGD对应于熵正则项。

批次数量肯定会通过其他方式影响收敛;这是我所知道的。


[1]示例:“泛化和随机梯度下降的贝叶斯视角”,史密斯,勒,2018 摘自: "We propose that the noise introduced by small mini-batches drives the parameters towards minima whose evidence is large."

[2]“随机梯度下降执行变分推断,收敛以限制深度网络的周期”,Chaudhari,Soatto,2017年

[3]“通过信息打开深度神经网络的黑匣子”,施瓦茨-齐夫,蒂斯比,2017年

[4]“理解深度学习需要重新思考泛化”,C。Zhang等,2016


(+1)好参考。顺便说一句,[4]的第一作者是C. Zhang
user20160

哦,对了!编辑了它,感谢您的纠正。
dasWesen

0

批量太大可能至少在使用SGD和使用Keras训练MLP时阻止收敛。至于为什么,我不是100%地确定它是否与平均梯度有关,还是较小的更新会提供更大的逃避局部最小值的可能性。

这里

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.