Batch size对训练效果的影响
一般来说,在合理的范围之内,越大的 batch size 使下降方向越准确,震荡越小;batch size 如果过大,则可能会出现局部最优的情况。小的 bath size 引入的随机性更大,难以达到收敛,极少数情况下可能会效果变好。Don’t decay the learning rate increase the batch sizeTrain longer, generalize better
一般来说,在合理的范围之内,越大的 batch size 使下降方向越准确,震荡越小;batch size 如果过大,则可能会出现局部最优的情况。小的 bath size 引入的随机性更大,难以达到收敛,极少数情况下可能会效果变好。
Don’t decay the learning rate increase the batch size
batch size是现代深度学习系统中最重要的超参数之一。从业者通常希望使用更大的batch 来训练他们的模型,因为它可以通过 GPU 的并行性提高计算速度。然而,众所周知的是batch size会导致泛化能力差(虽然目前不知道为什么原来如此)。对于我们试图优化的凸函数,更小batch 和更大batch 的好处之间存在固有的拉锯战。在一种极端情况下,使用等于整个数据集的batch 可以保证收敛到目标函数的全局最优值。然而,这是以较慢的经验收敛为代价的。另一方面,经验表明,使用较小的batch size可以更快地收敛到“好的”解决方案。这可以直观地解释为较小的batch size允许模型“在必须查看所有数据之前开始学习”。使用较小batch size的缺点是模型不能保证收敛到全局最优。它将围绕全局最优值反弹,保持在一些ϵ之外- 最优值的球,其中ϵ取决于批量大小与数据集大小的比率。因此,在没有计算限制的情况下,通常建议从小批量开始,获得更快的训练动态的好处,并通过训练稳步增加批量大小,同时获得保证收敛的好处。
非凸优化的情况更加微妙,如今在深度学习中,非凸优化指的是任何神经网络模型。根据经验观察到,较小的batch size不仅具有更快的训练动态,而且与较大的batch size相比,还可以泛化到测试数据集。但这种说法有其局限性;我们知道batch size为 1 通常效果很差。普遍接受的是,batch size在 1 和整个训练数据集之间存在一些“最佳点”,这将提供最佳泛化。这个“最佳点”通常取决于数据集和所讨论的模型。更好泛化的原因模糊地归因于小batch 训练中“噪音”的存在。因为神经网络系统极易过拟合,所以想法是看到许多小batch ,每个batch都是整个数据集的“嘈杂”表示,将导致一种“拖拉”动态。这种“拖拉”动态可以防止神经网络在训练集上过度拟合,从而在测试集上表现不佳。
问题陈述
将要研究的精确问题是分类问题之一。给定图像X,目标是预测图像y的标签。在 MNIST 数据集的情况下,X是数字 0 到 9 的黑白图像,y是相应的数字标签“0”到“9”。我们选择的模型是神经网络。具体来说,我们将使用多层感知器 (MLP) 或非正式地“您的普通普通神经网络”。
除非另有说明,否则使用默认模型:
- 2 个全连接 (FC) 隐藏层,每个隐藏层 1024 个单元
- ReLU 非线性
- loss:负对数似然
- optimizer(优化器):SGD
- learning rate:0.01
- epoch:30
训练神经网络时应该使用多大的批量?
我们应该做的第一件事是通过显示泛化差距和batch size之间的依赖性来确认我们试图调查的问题存在。我一直将我们关心的指标称为“泛化差距”。这通常是作者在论文中使用的泛化度量,但为了在我们的研究中简单起见,我们只关心测试准确度尽可能高。正如我们将看到的,训练和测试准确度都取决于batch size,因此谈论测试准确度而不是泛化差距更有意义。更具体地说,我们希望经过大量训练后的测试准确率或“渐近测试准确率”较高。“大的epoch”是多少?理想情况下,这被定义为所需的训练周期数,以便任何进一步的训练几乎没有提供任何提升测试精度。在实践中,这很难确定,我们将不得不对达到渐近行为合适的 epoch 做出最佳猜测。我在下面展示了使用不同batch size训练的神经网络模型的测试精度。
橙色曲线:batch size 64
蓝色曲线:batch size 256
紫色曲线:batch size 1024
大的batch size会导致渐近测试准确度降低
增加学习率从大的batch中恢复丢失的测试精度
优化文献中的一些工作表明,提高学习率可以补偿更大的批量大小。考虑到这一点,我们提高了模型的学习率,以查看是否可以通过增加批量大小来恢复我们失去的渐近测试精度。
橙色曲线:batch size 64,学习率 0.01(参考)
紫色曲线:batch size 1024,学习率 0.01(参考)
蓝色: batch size 1024,学习率0.1
橙色和紫色曲线仅供参考,复制自上一组图。与紫色曲线一样,蓝色曲线以 1024 的大batch训练。然而,蓝色治愈的学习率提高了 10 倍。有趣的是,我们可以通过增加学习率来从更大的批量中恢复丢失的测试精度。使用 64(橙色)的batch size可实现 98% 的测试准确率,而使用 1024 的batch size仅可实现约 96%。但是通过提高学习率,使用 1024 的batch size也可以达到 98% 的测试准确率。在更复杂的数据集中,简单地增加学习率并不能完全补偿大批量。
- 更大的batch 会导致渐近测试准确度降低
- 我们可以通过增加学习率来从更大的批量中恢复丢失的测试精度
- 从大batch 开始不会“让模型陷入困境”在一些糟糕的局部最优附近。模型可以随时切换到更低的批量大小或更高的学习率,以达到更好的测试精度
- 对于相同数量的样本,较大的batch size比较小的batch size产生更大的梯度步长
- 对于与模型初始权重相同的平均欧几里德范数距离,较大的batch size具有较大的距离方差。
- 大batch意味着模型进行非常大的梯度更新或非常小的梯度更新。更新的大小在很大程度上取决于从数据集中抽取的特定样本。另一方面,使用小batch意味着模型进行大小相同的更新。更新的大小仅微弱地取决于从数据集中抽取哪些特定样本
- 较大batch的梯度分布有更重的尾部 ,更好的解决方案可能与初始权重相距甚远,如果损失是在批次上平均的,那么大的批次大小根本不允许模型行进足够远以达到相同训练时期数的更好解决方案,可以通过增加学习率或epoch数来补偿更大的batch size,以便模型可以找到遥远的解决方案
更多推荐
所有评论(0)