批量大小是机器学习中重要的超参数之一。此超参数定义在更新内部模型参数之前要处理的样本数。上图是使用SGD测试不同批量大小的示例。批量大小可以决定许多基于深度学习的神经网络的性能。有许多研究评估了学习过程的最佳批量大小。例如,对于SGD,可以使用批量梯度下降(使用一批中的所有训练样本)或小批量(使用一小部分训练数据),甚至可以在每个样本后更新(随机梯度下降)。这些不同的处理方式可以改变模型训练的效果。准确性不是我们关心的唯一性能指标。模型的泛化能力可能更重要。因为如果我们的模型在看不见的数据上表现不佳,它就毫无用处。使用较大的批量会导致较差的网络泛化。论文“ONLARGE-BATCHTRAININGFORDEEPLEARNING:GENERALIZATIONGAPANDSHARPMINIMA”的作者试图调查这种现象并找出发生这种情况的原因。他们的发现很有趣,所以我将在本文中详细描述。了解这一点将使您能够更好地决定您的神经网络以及如何训练它。理解一篇论文的假设要理解任何一篇论文,首先要理解作者试图证明什么。作者声称他们发现了为什么大批量会导致较差的泛化。他们“提供了数值证据来支持这样的观点,即大批量方法倾向于收敛到训练和测试函数的急剧最小值(sharpminima)——众所周知,急剧最小值会导致泛化能力差。小批量方法始终收敛到到平坦的最小值,该论文的实验支持普遍持有的观点,即这是由于梯度估计中的固有噪声。”我们将在这篇文章中进行更多解释,所以让我们一步一步来吧。下图描绘了锐利和平坦的极小值之间的差异。对于锐利的极小值,X中相对较小的变化会导致损失发生较大变化一旦理解了这种区别,让我们了解作者验证的两个(相关)主要主张:使用大批量将使训练过程出现非常锐利的损失情况。而这种急剧的损失会降低网络的泛化能力。较小的批量大小会创建更平坦的损失图像。这是由于梯度估计中的噪声。作者在他们的论文中强调了这一点,陈述如下:我们现在将看看他们提供的证据。他们设置实验的一些方法很有趣,并且会教给我们很多关于设置实验的知识。定义锐度锐度是一个易于理解和形象化的直观概念。但它也存在一些问题。机器学习等高维数据的计算/可视化可能是资源密集型和耗时的。作者也提到了这一点,所以他们使用了一种更简单的启发式方法:通过相邻点检查锐度,并且可以使用该函数的最大值来计算灵敏度。原论文说:我们采用了一种敏感性度量,虽然并不完美,但在计算上是可行的,即使对于大型网络也是如此。它基于探索解决方案的一个小邻域并计算函数f在该邻域中可以达到的最大值。我们使用这个值来衡量给定局部最小值的训练函数的灵敏度。由于最大化过程是不精确的,并且为了避免仅在Rn的微小子空间中获得大f值而被误导,我们对整个空间Rn以及随机流形执行最大化。请注意,作者在程序中集成了某种程度的交叉验证。虽然从解决方案空间中获取多个样本可能看起来过于简单,但这是一种非常强大的方法并且在大多数情况下都有效。如果您对他们计算的公式感兴趣,它看起来像这样。查看相关证明现在我们了解了作者提出的基本术语/定义,让我们看一下提供的一些证明。本文不可能分享论文/附录中的所有内容,因此如果您对所有细节感兴趣,可以阅读论文原文。上图中可以看到交叉熵损失与清晰度的关系图。从图中可以看出,随着向右移动,损失实际上越来越小。那么这张图是什么意思呢?随着模型的成熟(损失减少),LargeBatch模型的清晰度增加。用作者的话说,“对于初始点附近较大的损失函数值,小批量和大批量方法产生相似的清晰度值。随着损失函数的减小,大批量方法清晰度对应的迭代次数增加对于mini-batch方法来说很快,而对于mini-batch方法,锐度最初保持相对恒定然后下降,这表明在探索阶段之后收敛到一个平坦的最小化器。”作者还有其他几个实验来证明结果。除了在不同类型的网络上进行测试外,他们还在低批量和高批量网络上使用了热启动。结果也与我们所看到的非常一致。我在论文中发现的一个有趣的观点是,当他们表明这种较低的泛化与使用较大批量时的模型过度拟合或过度训练无关。人们很容易假设过度拟合是泛化能力低的原因(我们通常是这样理解的),但作者对此持反对意见。要查看他们的论点,请查看此表。Mini-batch训练通常具有更好的训练性能。即使在我们用小批量训练的训练精度较低的网络中,我们也注意到训练精度更高。作者下面的原文可以作为强调,“我们强调泛化差距不是由于过度拟合或过度训练造成的,这在统计学中很常见。这种现象表现为测试准确率曲线的形式,该曲线在某个特定位置达到峰值迭代,然后由于模型学习训练数据的特征而衰减。这不是我们在实验中观察到的。F2和C1网络的训练-测试曲线如图2所示,这是其他网络的代表.因此,目的是防止模型过度拟合,适当的早期停止启发式方法无法缩小泛化差距。”看网络收敛多快来测试准确率简而言之,如果这是过度拟合的情况,你不会看到大批量方法的性能总是较低。相反,通过更早停止,我们将避免过度拟合并且性能会更接近。这不是我们观察到的。我们的学习曲线描绘了一幅截然不同的表现图。
