神经网络中 Batch 和 Epoch 的区别

2025年6月23日 | 阅读 4 分钟

神经网络利用优化算法进行迭代调整以减少误差(即提高性能)。为了提高训练过程的效率,数据集将被分成更小的批次并通过多个轮次进行传递。要通过训练和性能进一步完善神经网络模型,您需要理解这两个术语“批次”和“轮次”之间的细微差别。虽然批次和轮次都指的是数据集的处理方式,但它们各自代表了训练过程的不同方面。

什么是批次(Batch)?

神经网络中,批次是指在一次迭代中处理的训练数据的一个子集。实际上,我们不会一次性将整个数据集提供给模型,因为这在计算上可能是不可行的。取而代之的是,我们创建称为批次的小部分。一旦批次被提供给模型,模型就会计算损失,然后该批次用于更新模型参数。

以下是它的一些类型:

  • 批量梯度下降(Batch Gradient Descent):在这种情况下,整个数据集被视为一个批次,并且只有在处理完整个数据集后才会更新权重。这会导致平滑的梯度,但是计算成本很高,并且对于大型数据集可能会导致问题。
  • 小批量梯度下降(Mini-Batch Gradient Descent):在这里,数据集被分成多个小批次,并在处理完一个批次后更新权重。这是最广泛使用的方法,因为它在计算效率和维持稳定的收敛曲面之间取得了平衡。
  • 随机梯度下降(Stochastic Gradient Descent,SGD):每个观测值被视为一个批次,并在处理完每个观测值后更新权重。这为过程增加了随机性,有助于跳出局部最小值,但可能会导致不稳定。

什么是轮次(Epoch)?

“轮次”一词表示在训练模型时完整遍历整个数据集一次。大多数神经网络需要经过多个轮次,模型才能开始捕捉数据中有意义的模式。在一个轮次中,您将按照配置允许的批次数处理整个数据集。模型会在每次处理一个批次时更新权重。

一个轮次表示您已经将所有训练数据样本呈现了一次,这通常不足以让神经网络收敛到解决方案。因此,您可以对模型进行多个轮次的训练,让模型改进其对训练数据的外推能力,例如,如果它根据前一天预测今天。

轮次数量也是一个重要的超参数,因为它决定了学习算法将处理数据集多少次。但是,对模型进行过多轮次的训练可能会导致过拟合,这意味着模型已经学习了与特定数据集相关的模式,并且不能很好地泛化到以前未见过的数据。

批次 vs 轮次

下表描述了批次和轮次之间的区别,以便更好地理解。

特性批次轮次
定义处理数据集的一个子集,然后更新模型参数完整地遍历一次整个数据集。
范围覆盖数据集的一小部分(子集)。在一个周期内覆盖整个数据集。
目的有助于模型权重的增量更新。决定模型看到整个数据集的次数。
更新次数每个批次一次更新(一个轮次中有多个批次)。每个轮次一次更新(如果批次大小等于数据集大小)。
对训练的影响控制权重更新的频率。控制整体训练时长。
训练速度更新更频繁,收敛更快但更不稳定。更新次数更少,每个轮次的收敛速度更慢。
内存使用对大型数据集有效,因为一次只加载一个子集。对于大型数据集需要高内存(如果批次大小等于数据集大小)。

现在,为了实际理解,我们将进行一个简单的代码示例。

代码

输出

Difference Between a Batch and an Epoch in a Neural Network

当批次大小为 10 时,包含 100 个样本的数据集被分成 10 个样本的小段进行处理。因此,每个轮次总共有 10 个批次,因为 100 除以 10 等于 10。当轮次设置为 5 时,模型会完整地遍历整个数据集五次,每次轮次完成一次完整传递。因此,总迭代次数为 50,通过将 5 个轮次乘以每个轮次 10 个批次计算得出。这种方法允许对模型参数进行增量更新,从而提高效率和性能。


下一话题什么是 MLOps