我应该在哪个时期停止训练以避免过度拟合

数据挖掘 机器学习 神经网络 深度学习 准确性 过拟合
2021-10-03 07:56:29

我正在做一个年龄估计项目,试图在预定义的年龄范围内对给定的脸进行分类。为此,我正在使用 keras 库训练深度神经网络。训练集和验证集的准确率如下图所示:

图片

正如您所看到的,验证准确度以比训练准确度更小的步长不断上升。我应该在训练和验证准确度具有相同值的 epoch 280 停止训练,还是应该在验证准确度上升时继续训练过程,即使训练准确度值也达到过拟合值(例如. 93%)。

4个回答

只要您的验证准确性提高,您就应该继续训练。当测试精度开始下降时我会停止(这被称为提前停止)。一般的建议是始终保留在您的验证集中表现最好的模型。

虽然你的模型从 280 纪元开始过拟合是对的,但只要你的验证准确度很高,这不一定是坏事。一般来说,与验证准确率相比,大多数机器学习模型的训练准确率都会更高,但这并不一定是坏事。

在一般情况下,您希望您的准确性以下列方式表现。

在此处输入图像描述

在您的情况下,您处于早期停止时期之前,因此即使您的训练集准确度高于测试集准确度,也不一定是问题。

“提前停止”是这里需要用到的概念。正如维基百科中提到的提前停止,

在机器学习中,早期停止是一种正则化形式,用于在使用迭代方法(例如梯度下降)训练学习器时避免过度拟合。这种方法会更新学习器,以使其在每次迭代时更好地拟合训练数据。在某种程度上,这提高了学习者在训练集之外的数据上的表现。然而,超过这一点,提高学习者对训练数据的拟合度是以增加泛化错误为代价的。早期停止规则提供了关于在学习器开始过度拟合之前可以运行多少次迭代的指导。早期停止规则已在许多不同的机器学习方法中采用,具有不同数量的理论基础。

在图中的 epoch > 280 处,验证准确度变得低于训练准确度,因此它成为过度拟合的情况。这里为了避免过拟合,不推荐进一步训练。但是,如果生成的验证准确度足以解决您正在处理的特定问题,您可以选择在训练和验证准确度匹配的时期之外训练模型。

继续训练,直到您的验证准确度饱和(或开始下降)。由于准确度增加缓慢,请尝试增加您的学习率参数eta以强制网络更快地收敛到最佳权重。但是请注意,如果您将其增加太多,它将变得不稳定。

如果您使用kerasor ,则此参数回调tensorflow.keras中称为patienceEarlyStopping

它等于没有验证准确度提高的 epoch 数以触发训练阶段的结束。我通常将其设置为 2 或 3,1 通常对噪音过于敏感。