过度拟合训练数据,但仍在测试数据上进行改进

我的机器学习模型大大适合了训练数据,但在测试数据上仍然表现良好。使用神经网络方法时,每次迭代都会稍微提高测试集的准确性,但会大大提高训练集的准确性(过拟合)。

将spacy与cnn架构配合使用时,该问题得到了很好的展示,我得到了以下结果

ITER    LOSS      P       R       F      TF  
 0      29.305  0.733   0.342   0.466   0.525
 1      10.410  0.811   0.443   0.573   0.650
 2      4.361   0.722   0.548   0.623   0.757
 3      2.265   0.764   0.563   0.648   0.811
 4      1.449   0.748   0.613   0.674   0.877

TF是火车数据上的f1分数。

测试分数不断提高,而与训练集的差异仅增加到模型在训练数据上的第20次迭代中几乎完美表现的水平,而测试精度却从未降低以证明尽早停止。

我尝试了许多正则化选项,包括变化的辍学,权重衰减,L2,但似乎没有一个能够避免记住部分训练数据,并且在测试集上的表现都较差。

这个问题不是spacy和我所遵循的方法所独有,它也发生在scikit和参数较少的模型中。

现有数据集是一个少于2000个示例的小型数据集,这是一个多标签文本分类任务。某些标签的示例少于100个,但在检查过度拟合发生的位置时,所有标签似乎受到的影响均相同。

我想我的主要问题是,我是否应该担心该模型会记住训练数据集,只要它在测试数据上表现良好,还有是否我没有考虑其他问题来解决这个问题我所看到的记忆问题。

bxkanh 回答:过度拟合训练数据,但仍在测试数据上进行改进

为澄清起见,您的损失函数始终在训练集中计算,因此可能在训练集中发生过拟合。要观察是否存在过度拟合,请使用DEV集(不应将其作为训练集的一部分。)。在每个时期结束时,分别计算训练集和开发集的损失。减少开发集上的损失函数可以很好地拟合模型。同时,越来越多的损失表明过度拟合。 (您可以在此时稍有耐心地使用早期停止功能。但是始终可以使用检查点来节省执行最佳操作的负担)。而且收敛所需的历元数取决于学习率,因此,非常低的学习率可能需要很多历元才能适合模型。

本文链接:https://www.f2er.com/3142864.html

大家都在问