在机器学习中,尤其是在训练深度学习模型时,批量大小指的是单次迭代中处理的训练示例数量。在海量数据集上训练大型模型(常见于计算机视觉等领域),由于内存限制,一次性处理整个数据集往往在计算上不可行。相反,数据会被分成较小的、易于管理的组或 "批次"。在处理完每个批次后,模型的内部参数都会更新,从而使训练过程更加高效、可扩展。
批量大小的重要性
批量大小是一个关键的超参数,对训练动态、资源利用率以及最终模型的性能都有重大影响。其影响包括
- 训练速度:更大的批次规模可以更有效地利用GPU等硬件的并行处理能力,从而有可能缩短完成一个历元(对训练数据的完整传递)所需的时间。这是因为硬件利用率更高,每个历元的参数更新更少。了解有关并行计算概念的更多信息。
- 内存使用量:批次大小直接影响所需内存CPU RAM 或GPU VRAM)的大小。在训练过程中,较大的批次需要更多内存来存储数据、激活和梯度。在批量较大或硬件有限的情况下,优化内存使用的技术至关重要。
- 模型通用化:批量大小的选择会影响优化过程和模型泛化。较小的批次会在随机梯度下降(SGD)等算法中使用的梯度估计中引入更多噪声。这种噪声有时可以起到正则化的作用,帮助模型摆脱尖锐的局部极小值,并有可能提高模型对未知数据的泛化能力,从而减少过拟合。相反,更大的批次可以提供对整个数据集梯度的更准确估计,但可能会收敛到更尖锐的最小值,这有时会阻碍泛化,正如"论深度学习的大批量训练"等研究中所讨论的那样。
- 学习率交互作用:批量大小往往与学习率相互影响。一般来说,批次规模越大,学习率就越高,而且往往能从中受益。Adam等优化器可以帮助管理这些相互作用。
批量大小与其他相关术语
重要的是要将批量大小与相关概念区分开来:
- 迭代/步骤:在处理一批数据的基础上对模型参数进行一次更新。这包括前向传递、损失计算和后向传递(反向传播)。
- 时间对整个训练数据集的一次完整遍历。如果一个数据集有 1000 个样本,批量大小为 100,则一个历元包括 10 次迭代(1000 / 100 = 10)。
- 小批量梯度下降法:最常见的训练方法,批量大小大于 1 但小于总数据集大小。这与批量梯度下降(使用整个数据集,批量大小 = N)和随机梯度下降(使用单个样本,批量大小 = 1)形成鲜明对比。术语 "批量大小 "通常指迷你批量梯度下降中使用的大小。了解有关梯度下降变体的更多信息。
实际应用
- 物体检测在训练 Ultralytics YOLO模型时,批量大小决定了同时处理多少张图像。在ImageNet等大型数据集上训练YOLO11 时,可能需要根据GPU 内存调整批次大小。在高端 GPU 上,较大的批次大小(如 64 幅)可以加快每次训练的速度,而在内存较小的设备上,较小的批次大小(如 16 幅)可能是必要的,或者有可能提高泛化效果。Ultralytics HUB等平台可以帮助管理和跟踪这些训练实验。
- 自然语言处理 (NLP):训练 BERT 等大型语言模型需要处理文本序列。批量大小会影响同时处理多少个序列。鉴于序列的长度可能不同,模型也很大,内存使用是一个重要问题。在内存有限的情况下,梯度累积(在更新参数前按顺序处理较小的迷你批次)等技术通常用于模拟较大的批次规模。探索NLP 课程中的概念。
了解并谨慎选择批量大小是有效训练深度学习模型的基础。如需进一步学习,可考虑深度学习专业等资源,或探索批量规范化等技术,这些技术有时可以降低对批量大小的敏感性。