在本文中,我们试图更好地理解批量大小对训练神经网络的影响。具体而言,我们将涵盖以下内容:
什么是Batch Size?
为什么Batch Size很重要?
小批量和大批量如何凭经验执行?
为什么大批量往往性能更差,如何缩小性能差距?
什么是Batch Size?
训练神经网络以最小化以下形式的损失函数:
点击并拖拽以移动
theta 代表模型参数
m 是训练数据样本的数量
i 的每个值代表一个单一的训练数据样本
J_i 表示应用于单个训练样本的损失函数
通常,这是使用梯度下降来完成的,它计算损失函数相对于参数的梯度,并在该方向上迈出一步。随机梯度下降计算训练数据子集 B_k 上的梯度,而不是整个训练数据集。
点击并拖拽以移动
B_k 是从训练数据集中采样的一批,其大小可以从 1 到 m(训练数据点的总数)。这通常称为批量大小为 |B_k| 的小批量训练。我们可以将这些批次级梯度视为“true”梯度的近似值,即整体损失函数相对于 theta 的梯度。
我们使用小批量是因为它倾向于更快地收敛,因为它不需要完全遍历训练数据来更新权重。
为什么Batch Size很重要?
Keskar 等人指出,随机梯度下降是连续的,且使用小批量,因此不容易并行化 。使用更大的批量大小可以让我们在更大程度上并行计算,因为我们可以在不同的工作节点之间拆分训练示例。这反过来可以显着加快模型训练。
然而,较大的批大小虽然能够达到与较小的批大小相似的训练误差,但往往对测试数据的泛化效果更差 。训练误差和测试误差之间的差距被称为“