这是一个过度拟合的网络吗?

时间:2017-04-03 17:16:38

标签: python neural-network artificial-intelligence keras training-data

我在keras训练神经网络后得到了这个结果,我想知道这是否过度拟合。

我有疑问,因为我读过度过滤是在网络过度训练时产生的,并且当验证损失增加时就会发生。

但在这种情况下,它不会增加。它保持不变,但培训损失减少了。

额外信息

以这种方式分割单个数据集:

  • 70%的数据集用作训练数据
  • 用作验证数据的数据集的30%

500 EPOCHS TRAINING Loss results

2000 EPOCHS TRAINING

2000 epochs 2000_zoom

训练损失:3.1711e-05 验证损失:0.0036

2 个答案:

答案 0 :(得分:2)

培训损失确实似乎继续比验证损失进一步减少(它仍然看起来像我在第500个时期没有完成减少,对于更多的时期并看看会发生什么会更好)。但差异似乎并不大。

可能略微过度拟合,但验证数据的分布可能与训练数据的分布略有不同。

我建议您测试以下内容:

  1. 继续超过500个时代,看看训练损失是否继续进一步减少,或者它是否稳定接近验证损失。如果它继续进一步下降,并且验证损失保持不变,那么说网络过度拟合是安全的。
  2. 尝试创建不同的训练和验证集。您是如何确定实际的培训和验证集的?你有两套独立的套装,一套用于培训,一套用于验证?或者你给了一个大的训练集,你自己分开了吗?在第一种情况下,分布可能不同,因此训练与验证损失的差异不会很奇怪。在第二种情况下,尝试随机创建不同的拆分并重复实验,看看您是否始终在培训与验证损失方面始终保持相同的差异,或者它们是否有时也更接近。

答案 1 :(得分:2)

在某种意义上,你的训练损失不断减少,而且验证损失也在减少。

但是,我不认为这有害,因为验证损失并没有增加。这是如果我正确读取图表,如果有小幅增加,那么它就会变坏。

有害的过度补充是指您的验证损失开始增加。验证损失是衡量网络性能的真实指标。如果它上升,那么你的模型开始做坏事,你应该停在那里。

总而言之,这似乎相当不错。训练损失在某些时候几乎总是低于验证,这是训练集的优化过程。