为什么小批量会可以使模型获得更大的泛化
批大小是机器学习中重要的超参数之一。这个超参数定义了在更新内部模型参数之前要处理的样本数量。
上图为使用 SGD 测试不同批量大小的示例。
批量大小可以决定许多基于深度学习的神经网络的性能。有很多研究都在为学习过程评估最佳批量大小。例如,对于 SGD可以使用批量梯度下降(使用批量中的所有训练样本)或小批量(使用一部分训练数据),甚至在每个样本后更新(随机梯度下降)。这些不同的处理方式可以改变模型训练的的效果。
准确性并不是我们关心的唯一性能指标。模型的泛化能力可能更加重要。因为如果我们的模型在看不见的数据上表现不佳它就毫无用处。使用更大的批量会导致更差的网络泛化。论文“ON LARGE-BATCH TRAINING FOR DEEP LEARNING: GENERALIZATION GAP AND SHARP MINIMA”的作者试图调查这种现象并找出为什么会发生这种情况。他们的发现很有趣,所以我将在本文中进行详细介绍。了解这一点将能够为自己的神经网络和训练方式做出更好的决策。
理解论文的假设
要理解任何论文,首先要了解作者试图证明的内容。作者声称他们发现了为什么大批量会导致更差的泛化。他们“提供了支持大批量方法趋向于收敛到训练和测试函数的sharp minima(尖锐的最小值)的观点的数值证据——众所周知,sharp minima会导致较差的泛化。而小批量方法始终收敛到flat minima(平坦的最小值),论文的实验支持一个普遍持有的观点,即这是由于梯度估计中的固有噪声造成的。” 我们将在本篇文章中做更多的说明,所以让我们一步一步来。下图描绘了尖锐最小值和平坦最小值之间的差异。
对于尖锐的最小值,X 的相对较小的变化会导致损失的较大变化
一旦你理解了这个区别,让我们理解作者验证的两个(相关的)主要主张:
- 使用大批量将使训练过程有非常尖锐的损失情况。而这种尖锐的损失将降低网络的泛化能力。
- 较小的批量创建更平坦的损失图像。这是由于梯度估计中的噪声造成的。
作者在论文中强调了这一点,声明如下:
我们现在将查看他们提供的证据。他们设置实验的一些方法很有趣,会教会我们很多关于设置实验的知识
完整文章