Navigate to WaytoAGI Wiki →
Home/Question List/Question Detail

什么是EPOCH

Answer

Epoch 是指一次将训练集中的所有样本训练一次(即对每个样本完成一次正向传播与一次反向传播)的过程。有时,由于一个训练样本过于庞大,它会被分成多个小块分批学习,每个小块就叫 batch。

在深度学习中,程序通过不断地将数据集在神经网络中往复传递来更新网络中的权重,以此建立对目标的拟合关系,因此只有反复地迭代才能增强数据集的拟合度。随着 epoch 的增加,模型将从欠拟合变为过拟合。我们希望能达到中间的效果,即对训练集输出相对准确的结果,又对不在训练集里的输入也有较好的表现。就像刷题不能只刷一遍,我们需要不少于一个 epoch 才能建立起较好的拟合关系,当然也不能太多。对于不同的数据集,使用的 epoch 都可能有所不同。

例如,在 Dreambooth 中,一个 epoch 是对整个实例图像集进行一轮训练。如果想要将训练集训练 100 轮,可以将该值设置为 100。“Training Steps Per Image(Epochs)”值越小,训练时间越短,模型越可能欠拟合,还没学够;值越大,训练时间越长,模型越可能过拟合,学的太多素材把其他东西都忘光了。“Training Steps Per Image(Epochs)”值对显存无明显影响,因为是分步训练的。目前一种调节策略是设置一个较大的 Epoch 数,将模型训练到过拟合的地步,然后再去之前的检查点里找表现比较好的平衡点。

此外,还存在每个 Epoch 之间暂停的时间设置,比如当设置每 5 个 Epochs 后暂停,并设置暂停时长为 60 秒,那么训练将在每 5 个 Epochs 结束后暂停 60 秒,然后再继续训练。

Content generated by AI large model, please carefully verify (powered by aily)

References

AI辅助在独立游戏开发中的“踩坑”经验——《玩具帝国》

Epoch是指一次将训练集中的所有样本训练一次(即对每个样本完成一次正向传播与一次反向传播)的过程。有时,由于一个训练样本过于庞大,它会被分成多个小块分批学习,每个小块就叫batch。在深度学习中,程序通过不断地将数据集在神经网络中往复传递来更新网络中的权重,以此建立对目标的拟合关系,因此只有反复地迭代才能增强数据集的拟合度。随着epoch的增加,模型将从欠拟合变为过拟合。我们希望能达到中间的效果,即对训练集输出相对准确的结果,又对不在训练集里的输入也有较好的表现。就像刷题不能只刷一遍,我们需要不少于一个epoch才能建立起较好的拟合关系,当然也不能太多。对于不同的数据集,使用的epoch都可能有所不同。[heading3]Batch Size[content]batch size表示训练时的批量大小,也就是一次训练中选取的样本数量。这个参数对性能有一定要求,如果性能足够,增加batch size在理论上会提高模型的准确性。如果数据集样本量较小,Batch Size可以等于样本数量,即把所有数据集一起输入网络进行训练,这样的效果也很好;但是如果样本量较大,这肯定让设备吃不消,因此需要减小Batch Size。但是,如果Batch Size太小,那么意味着在一个Epoch中迭代的次数也会减小,训练时权重的调整速度变慢,为了抵消这种影响,还得提高epoch才能有更好的效果。所以Batch Size与Epoch参数二者是相辅相成的,他们二者的关系就好比一次刷多少题和总共刷多少次题。合适的batch size应该让GPU正好满载运行。

Dreambooth 官方炼丹教程万字详解-Epochs\Batch size\学习率 等超参数调优 (一)

[title]Dreambooth官方炼丹教程万字详解-Epochs\Batch size\学习率等超参数调优(一)[heading1]Training Steps Per Image(Epochs)训练集的训练轮数Training Steps Per Image(Epochs)训练集的训练轮数(Epochs)-顾名思义,一个epoch是对整个实例图像集进行一轮训练。因此,如果我们想要将训练集训练100轮,我们可以将该值设置为100,然后就可以开始了。在这里我先说这个参数是什么,再说调节这个参数会有什么影响,应该采用怎样的调节策略。最后详细解释具体细节:是什么是训练多少轮我们的训练集,可以设想一个厨师在学习制作新菜品。每次尝试制作这道菜(一个Epoch)都会带来新的经验和教训。随着Epoch数的增加,厨师会更熟练地掌握这道菜的制作技巧。调节影响"Training Steps Per Image(Epochs)"值越小,训练时间越短,模型越可能欠拟合,还没学够。"Training Steps Per Image(Epochs)"值越大,训练时间越长,模型越可能过拟合,学的太多素材把其他东西都忘光了。"Training Steps Per Image(Epochs)"值对显存无明显影响,因为是分步训练的。调节策略目前我的理解是设置一个较大的Epoch数,将模型训练到过拟合的地步,然后再去之前的检查点里找表现比较好的平衡点,比较方便。

Dreambooth 官方炼丹教程万字详解-Epochs\Batch size\学习率 等超参数调优 (一)

[title]Dreambooth官方炼丹教程万字详解-Epochs\Batch size\学习率等超参数调优(一)[heading1]Training Steps Per Image(Epochs)训练集的训练轮数每个Epoch之间暂停的时间,以秒为单位-当N大于零时,每个“N”个Epochs之间暂停的时间,以秒为单位。Pause After N Epochs用于手动控制训练过程中的暂停时间,如果你需要在训练途中停下来进行评估模型、调整超参数的话,否则一般设置为0不需要动。Amount of time to pause between Epochs在Epochs之间暂停的时间Amount of time to pause between Epochs -在Epochs之间暂停的时间,以秒为单位-当N大于零时,在N个Epochs之间暂停多长时间,以秒为单位。例如,设置了在每5个Epochs后暂停,即Pause After N Epochs =5,并设置暂停时长为60秒,即Amount of time to pause between Epochs =60那么训练将在每5个Epochs结束后暂停60秒,然后再继续训练。Use Concepts使用概念Use Concepts使用概念-是否使用包含多个概念的JSON文件或字符串,或下面的单独设置。Use Concepts没在上面找到,我的界面上是被归类到了下方的高级设置中,功能是使用设定好的json格式文件代替界面上的手动设置,新手暂时不用管。这里的"概念"通常指一组关键词或描述,用于表示某个特定的主题或类别。