Epoch 是什么?把整个训练数据集完整过一遍
在机器学习中,一个 Epoch(常译为“轮次”或“轮”)表示把整个训练数据集完整地通过神经网络一次的过程,也就是对所有训练样本各进行一次前向传播和一次反向传播。
Epoch、批次和迭代
理解 Epoch,需要同时了解几个相关的概念。批次(Batch):训练时,通常不会一次把所有的数据都送进模型,因为数据量太大、内存放不下,而是把数据分成一小批一小批,每次用一批数据计算梯度、更新一次参数。每一批的样本数量叫批次大小(batch size)。迭代(Iteration):用一个批次的数据完成一次参数更新,叫作一次迭代,也常叫一步(step)。Epoch:把所有的训练数据都用过一遍,就完成了一个 Epoch。
它们之间的关系是:一个 Epoch 包含的迭代次数,等于训练样本总数除以批次大小。举个例子:如果训练数据有 1000 个样本,批次大小设为 100,那么每完成 10 次迭代,就完成了 1 个 Epoch。如果训练 20 个 Epoch,总共就要进行 200 次迭代,每个样本都被模型“看”了 20 遍。
为什么需要多个 Epoch
就像学生学习一本教材,只读一遍往往记不住、理解不深,需要反复阅读和练习。模型也是一样:每次参数更新只是朝着正确的方向迈出一小步,只把数据过一遍,模型通常还没有学到足够的规律,这叫欠拟合。所以一般需要训练多个 Epoch,让模型反复地从数据中学习,逐渐收敛到一个好的状态。每个 Epoch 开始前,通常还会把数据的顺序随机打乱,让模型每一轮看到的批次组合都不一样,有助于训练得更好。
Epoch 数量怎么定
Epoch 的数量是一个需要设定的超参数。太少:模型学得不充分,在训练数据和测试数据上的表现都不好,欠拟合。太多:模型可能会过度地记住训练数据的细节甚至噪声,在训练数据上表现越来越好,但在新数据上的表现反而开始变差,这就是过拟合。常用的办法是“早停”:在训练过程中,每个 Epoch 结束后都在验证集上评估模型的效果,当验证集上的效果连续若干个 Epoch 不再提升甚至开始下降时,就提前停止训练,并保留效果最好的那一版模型。
在不同的场景中,Epoch 的数量差别很大:传统的图像分类训练可能需要几十到上百个 Epoch;而大语言模型的预训练数据量极其庞大,通常只训练一个 Epoch 左右,甚至不到一个 Epoch,每份数据只看一遍或很少的几遍,因为重复使用同样的数据带来的收益会逐渐递减。在大模型的微调中,通常只训练少数几个 Epoch,以免过拟合到少量的微调数据上。