机器学习中的 Epoch

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

在机器学习中,当你想要用一些数据训练一个模型时,Epoch 指的是训练数据集完整地通过算法一次。此外,训练一个机器学习模型需要几个 Epoch,但在这种情况下,你会遇到一个问题,即在模型中输入大量训练数据。这个问题是由于计算机存储的限制而发生的。为了克服这个问题,我们必须根据计算机的内存或存储容量将训练数据分成小的批次。这样,我们才能毫不费力地通过输入这些批次来训练机器学习模型。这个过程称为机器学习中的批次(batch),而进一步,当所有批次都被输入一次以训练模型时,整个过程就称为机器学习中的 Epoch。在本文中,“机器学习中的 Epoch”,我们将简要讨论 Epoch、批次(batch)和样本(sample)等。所以,让我们从机器学习中 Epoch 的定义开始。

Epoch in Machine Learning

什么是机器学习中的 Epoch?

Epoch 定义为在一个周期内使用所有训练数据训练机器学习模型所需的总迭代次数。在 Epoch 中,所有训练数据都会被使用一次。此外,换句话说,Epoch 也可以理解为算法完成对训练数据集的遍历次数。一次前向传播和一次后向传播合起来算作一次训练。

通常,当训练机器学习模型时,只需要少量的 Epoch。Epoch 经常与迭代(iteration)混淆。

什么是迭代?

迭代定义为完成一个 epoch 所需的批次总数,其中批次数等于一个 epoch 的总迭代次数。

让我们通过一个例子来理解迭代和 epoch,其中我们有 3000 个训练示例要用于训练机器学习模型。

在上述场景中,我们可以将训练数据集分解成大小合适的批次。所以,假设我们考虑每个批次包含 500 个示例,那么完成 1 个 Epoch 需要 6 次迭代。

数学上,我们可以这样理解:

  • 总训练示例数 = 3000;
  • 假设每个批次大小 = 500;
  • 那么总迭代次数 = 总训练示例数/单个批次大小 = 3000/500
  • 总迭代次数 = 6
  • 并且1 Epoch = 6 次迭代

现在,简要了解批次大小。

什么是机器学习中的批次?

在开始介绍机器学习中的批次(batch)之前,你必须清楚一点,即批次大小(batch size)和批次(batch)在机器学习中是两个不同的概念。

批次大小定义为单个批次中存在的训练示例的总数。你也可以参考上面提到的例子来理解批次,我们在其中将整个训练数据集/示例分成了不同的批次或集合或部分。

让我们通过下面的例子来理解 Epoch 和迭代混淆的概念,其中我们考虑了 1000 个数据集,如下图所示。

Epoch in Machine Learning

在上图中,我们可以这样理解这个概念:

  • 如果批次大小为 1000,那么一个 epoch 将在一次迭代中完成。
  • 如果批次大小为 500,那么一个 epoch 将在 2 次迭代中完成。

类似地,如果批次大小非常小,例如 100,那么 epoch 将在 10 次迭代中完成。因此,结果是,对于每个 epoch,所需的迭代次数乘以批次大小等于数据点的数量。然而,我们可以使用多个 epoch 来训练机器学习模型。

关于机器学习中 Epoch 和 Batch 的关键点

在训练机器学习模型时,有几个重要的要点需要牢记。它们如下:

  • Epoch 是机器学习中的一个术语,指的是在整个数据点中,训练数据通过机器学习算法的次数。
  • 如果有大量可用数据,你可以将整个数据集分成常见的组或批次。
  • 将一个批次输入学习模型的过程称为迭代。在机器学习中,整个训练数据集中的一个周期称为 Epoch。然而,在理想条件下,整个训练数据集中的一个周期称为 Epoch,但训练模型通常需要多个 Epoch。
  • 通过在机器学习模型训练中使用更多的 epoch,可以实现更好的泛化,从而能够处理新的输入。
  • 考虑到现实世界应用中数据的复杂性和多样性,可能需要数百到数千个 epoch 才能达到合理的测试数据正确性。此外,“epoch”一词有多种定义,取决于具体讨论的主题。

为什么使用多个 Epoch?

将整个数据集通过 ML 算法或神经网络可能不足够,而且我们需要多次通过同一个算法,这似乎不正确。

因此,需要记住的是,为了优化学习,我们使用梯度下降,这是一个迭代过程。因此,仅通过一次遍历或一个 epoch 来更新权重是不够的。

此外,一个 epoch 可能导致模型过拟合。