术语表

批量大小

了解批量大小对深度学习的影响。有效优化训练速度、内存使用和模型性能。

使用Ultralytics HUB 对YOLO 模型进行简单培训

了解更多

在机器学习中,尤其是在训练深度学习模型时,批量大小指的是单次迭代中处理的训练示例数量。在海量数据集上训练大型模型(常见于计算机视觉等领域),由于内存限制,一次性处理整个数据集往往在计算上不可行。相反,数据会被分成较小的、易于管理的组或 "批次"。在处理完每个批次后,模型的内部参数都会更新,从而使训练过程更加高效、可扩展。

批量大小的重要性

批量大小是一个关键的超参数,对训练动态、资源利用率以及最终模型的性能都有重大影响。其影响包括

  • 训练速度:更大的批次规模可以更有效地利用GPU等硬件的并行处理能力,从而有可能缩短完成一个历元(对训练数据的完整传递)所需的时间。这是因为硬件利用率更高,每个历元的参数更新更少。了解有关并行计算概念的更多信息。
  • 内存使用量:批次大小直接影响所需内存CPU RAM 或GPU VRAM)的大小。在训练过程中,较大的批次需要更多内存来存储数据、激活和梯度。在批量较大或硬件有限的情况下,优化内存使用的技术至关重要。
  • 模型通用化:批量大小的选择会影响优化过程和模型泛化。较小的批次会在随机梯度下降(SGD)等算法中使用的梯度估计中引入更多噪声。这种噪声有时可以起到正则化的作用,帮助模型摆脱尖锐的局部极小值,并有可能提高模型对未知数据的泛化能力,从而减少过拟合。相反,更大的批次可以提供对整个数据集梯度的更准确估计,但可能会收敛到更尖锐的最小值,这有时会阻碍泛化,正如"论深度学习的大批量训练"等研究中所讨论的那样。
  • 学习率交互作用:批量大小往往与学习率相互影响。一般来说,批次规模越大,学习率就越高,而且往往能从中受益。Adam等优化器可以帮助管理这些相互作用。

选择正确的批量大小

选择最佳批次大小涉及计算效率、内存限制和模型泛化之间的平衡。并不存在一个通用的 "最佳 "批次大小;它在很大程度上取决于特定的数据集(如COCO 数据集)、模型架构(如在 Ultralytics YOLO中使用的模型架构)以及可用的硬件资源。由于硬件内存对齐优化,常见的选择通常是 2 的幂次(如 16、32、64、128)。通常需要实验和超参数调整等技术。像 PyTorchTensorFlow等框架可灵活设置批量大小。

批量大小与其他相关术语

重要的是要将批量大小与相关概念区分开来:

  • 迭代/步骤:在处理一批数据的基础上对模型参数进行一次更新。这包括前向传递、损失计算和后向传递(反向传播)
  • 时间对整个训练数据集的一次完整遍历。如果一个数据集有 1000 个样本,批量大小为 100,则一个历元包括 10 次迭代(1000 / 100 = 10)。
  • 小批量梯度下降法:最常见的训练方法,批量大小大于 1 但小于总数据集大小。这与批量梯度下降(使用整个数据集,批量大小 = N)和随机梯度下降(使用单个样本,批量大小 = 1)形成鲜明对比。术语 "批量大小 "通常指迷你批量梯度下降中使用的大小。了解有关梯度下降变体的更多信息。

实际应用

  • 物体检测在训练 Ultralytics YOLO模型时,批量大小决定了同时处理多少张图像。在ImageNet等大型数据集上训练YOLO11 时,可能需要根据GPU 内存调整批次大小。在高端 GPU 上,较大的批次大小(如 64 幅)可以加快每次训练的速度,而在内存较小的设备上,较小的批次大小(如 16 幅)可能是必要的,或者有可能提高泛化效果。Ultralytics HUB等平台可以帮助管理和跟踪这些训练实验。
  • 自然语言处理 (NLP):训练 BERT 等大型语言模型需要处理文本序列。批量大小会影响同时处理多少个序列。鉴于序列的长度可能不同,模型也很大,内存使用是一个重要问题。在内存有限的情况下,梯度累积(在更新参数前按顺序处理较小的迷你批次)等技术通常用于模拟较大的批次规模。探索NLP 课程中的概念。

了解并谨慎选择批量大小是有效训练深度学习模型的基础。如需进一步学习,可考虑深度学习专业等资源,或探索批量规范化等技术,这些技术有时可以降低对批量大小的敏感性。

阅读全部