AI模型基础知识:(1)Epoch和Iteration


AI模型基础知识:(1)Epoch和Iteration

引出

概念的来源

在训练深度学习或机器学习模型时,通常使用一个庞大的数据集来调整模型的参数(权重和偏置),以使其能够做出准确的预测。由于数据集一次性加载到内存中可能会消耗巨大资源,甚至是不可能的,因此采用分批次(mini-batch)的方式进行训练。这就引出了 Epoch 和 Iteration 的概念。

1. Iteration (迭代)

Iteration

内涵:Iteration 是模型权重更新一次的过程。

具体来说,每一次 Iteration 都包含以下步骤:

  • 从训练数据集中取出一个「批次」(batch)的数据。
  • 将这个批次的数据输入到模型中,进行前向传播,得到预测输出。
  • 将模型的预测输出与真实标签进行比较,计算损失(Loss)。
  • 通过反向传播算法计算损失函数关于模型参数的梯度。
  • 使用优化器(如 SGD, Adam 等)根据梯度来更新模型的权重。

所以,Iteration 的核心是“一次参数更新”。训练过程中的总 Iteration 次数,等于总共更新了多少次模型参数。

2. Epoch (时代/纪元)

Epoch

内涵:Epoch 表示整个训练数据集被完整地“过”了一遍的过程。

一个 Epoch 的完成,意味着模型已经学习了训练集中所有的样本各一次。由于我们是分批次进行训练的,一个 Epoch 会包含多次 Iteration。

所以,Epoch 的核心是“对整个数据集的一次完整遍历”。

3.两者关系

两者关系

它们之间的关系可以通过一个简单的数学公式来表示:

一个 Epoch 包含的 Iteration 次数=批次大小 (Batch Size)训练数据集的总样本数量​

需要注意的是,如果总样本数量不能被批次大小整除,那么最后一个批次的样本数量可能会小于设定的批次大小。在这种情况下,如何处理最后一个批次(是丢弃还是继续训练)取决于具体的实现,但这不影响核心概念。通常,这个除法结果需要向上取整。

4.实例化讲解

为了让这两个概念更加清晰,我们来看两个不同领域的实例。

示例一:计算机视觉 (Image Classification)

计算机视觉

两者关系

场景:假设我们正在训练一个卷积神经网络(CNN),用于识别一个包含 10,000 张猫和狗图片的数据集。我们的目标是让模型能够准确区分这两种动物。

  • 数据集总样本数 (Total Samples): 10,000 张图片。
  • 批次大小 (Batch Size): 我们决定每次向模型输入 200 张图片进行训练。

实例化讲解:

  • Iteration (迭代):

    • 我们从 10,000 张图片中取出前 200 张,输入到模型中,计算损失,然后根据损失更新一次模型的权重。这就完成了 1 次 Iteration。
    • 接着,我们再取出接下来的 200 张图片(第 201 到 400 张),再次完成上述的参数更新过程。这又是 1 次 Iteration。
  • Epoch (时代):

    • 我们需要执行多少次这样的 Iteration 才能将所有图片都学习一遍呢? $$ \frac{10,000 \text{ 张图片}}{200 \text{ 张图片/批次}} = 50 \text{ 次 Iteration} $$
    • 当模型完成了这 50 次 Iteration,更新了 50 次权重后,它就完整地学习了全部 10,000 张图片各一次。我们就说,模型完成了 1 个 Epoch 的训练。
  • 整个训练过程:

    • 如果我们设定要训练 100 个 Epochs,那么整个训练过程总共会包含: $$ 50 \text{ Iterations/Epoch} \times 100 \text{ Epochs} = 5,000 \text{ 次 Iteration} $$
    • 这意味着在整个训练结束时,模型的参数(权重)总共被更新了 5,000 次。

示例二:自然语言处理 (Natural Language Processing)

自然语言处理

两者关系

场景:假设我们正在训练一个语言模型(如 Transformer),用于文本情感分析。我们的训练数据集是一个包含 500,000 条电影评论的文本文件。

  • 数据集总样本数 (Total Samples): 500,000 条评论。
  • 批次大小 (Batch Size): 由于文本数据较长,且模型复杂,我们设定一个较小的批次大小,例如 32 条评论。

实例化讲解:

  • Iteration (迭代):

    • 我们从 500,000 条评论中取出前 32 条,将它们转换成词向量后输入到 Transformer 模型,计算损失(例如,预测情感与真实情感的差异),然后更新一次模型的权重。这完成了 1 次 Iteration。
    • 随后,我们再取出第 33 到 64 条评论,重复这个过程,完成第 2 次 Iteration。
  • Epoch (时代):

    • 为了让模型学习完所有的 500,000 条评论,我们需要进行的 Iteration 次数为: $$ \frac{500,000 \text{ 条评论}}{32 \text{ 条评论/批次}} = 15,625 \text{ 次 Iteration} $$
    • 当模型执行了这 15,625 次 Iteration 后,就意味着它将整个评论数据集完整地过了一遍。我们就说,完成了 1 个 Epoch。
  • 整个训练过程:

    • 如果我们计划训练 3 个 Epochs(在大型语言模型训练中,Epoch 数通常较少),那么整个训练过程将包含: $$ 15,625 \text{ Iterations/Epoch} \times 3 \text{ Epochs} = 46,875 \text{ 次 Iteration} $$
    • 这意味着模型的权重在训练结束时总共被更新了 46,875 次。

5.总结

概念 核心内涵 类比
Iteration (迭代) 一次参数更新。处理一个批次(Batch)的数据并更新一次模型。 读一本书时,读完一页。
Epoch (时代) 一次完整的数据集遍历。处理完整个训练数据集中的所有样本。 读一本书时,把整本书从头到尾读完一遍。

理解这两个概念对于监控和调整模型训练过程至关重要。例如,训练日志中报告的损失(Loss)和准确率(Accuracy)通常是按 Iteration 或 Epoch 来展示的,帮助我们判断模型是否在每个 Epoch 中稳定学习,以及何时可能出现过拟合。


文章作者: Hkini
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Hkini !
赏
评论
  目录