Python 这是一个安装过度的网络吗?

Python 这是一个安装过度的网络吗?,python,neural-network,artificial-intelligence,keras,training-data,Python,Neural Network,Artificial Intelligence,Keras,Training Data,我在keras中训练了一个神经网络后得到了这个结果,我想知道这是否是过度拟合 我有疑问,因为我读到过当网络过度训练时会产生过度拟合,当验证损失增加时会发生过度拟合 但在这种情况下,它不会增加。它保持不变,但训练损失减少 额外信息 以这种方式拆分单个数据集: 70%的数据集用作培训数据 数据集的30%用作验证数据 500个时代的培训 2000个时代的培训 培训损失:3.1711e-05 验证损失:0.0036训练损失似乎确实比验证损失继续减少(在我看来,它在第500个历元时还没有完成减少

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

我有疑问,因为我读到过当网络过度训练时会产生过度拟合,当验证损失增加时会发生过度拟合

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

额外信息

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

  • 70%的数据集用作培训数据
  • 数据集的30%用作验证数据
500个时代的培训

2000个时代的培训

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

训练损失似乎确实比验证损失继续减少(在我看来,它在第500个历元时还没有完成减少,最好继续多个历元,看看会发生什么)。但差别似乎不大

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

我建议测试以下各项:

  • 持续500多个时期,看看训练损失是否继续减少,或者是否稳定在接近验证损失的水平。如果它继续进一步减少,并且验证损失保持不变,那么可以肯定地说网络是过度拟合的
  • 尝试创建不同的训练集和验证集拆分。您实际上是如何确定培训和验证集的?你是否得到了两套单独的测试,一套用于培训,另一套用于验证?还是给你一个大的训练集,然后你自己把它分开?在第一种情况下,分布可能不同,因此训练与验证损失之间的差异并不奇怪。在第二种情况下,试着随机创建不同的分割并重复实验,看看你是否总是在训练和验证损失中得到相同的差异,或者它们有时是否更接近

  • 在某种意义上,您的培训损失持续减少,验证损失停止减少,这是一种轻微的过度拟合

    但是,我不会认为这是有害的,因为验证损失并没有增加。这是如果我读对了图表,如果有一个小的增加,那么它就变糟了

    有害的过度拟合是指验证损失开始增加。验证损失是对网络性能的真实衡量。如果它上升,那么你的模型开始做坏事,你应该停下来


    总而言之,这一切似乎相当体面。在某一点上,培训损失几乎总是低于验证,这是一个针对培训集的优化过程。

    我觉得不错。首先,感谢您的回答。我有一个大的数据集,然后我自己进行分割:训练70%的数据集/验证30%的数据集。现在,我正在用更多的纪元再次训练,我将编辑这篇文章,以便你能看到结果。我还将尝试一些不同的拆分,并说出发生了什么。@Jvr看到了2000个时代的情节。这看起来很稳定,所以这看起来不像是一个过度装修的担心,如果有的话。真的很高兴读到这篇文章!:)谢谢。无论如何,我也会等待其他的意见。我很高兴听到这个消息(我的意思是,这不是一个有害的过度拟合,因为验证损失不会增加)。但是…在哪一点上我们可以说这个模型是有效的?现在我已经接受了2000个时代的培训,在小范围内差异是巨大的(0.0036 vs 3.1711e-05验证损失)。我可以在哪里设置限制,以便知道我可以接受有效模型的过度拟合程度?这取决于您,选择验证损失最低的模型。。。它应该给你最好的性能,因为它在“看不见的数据”上表现良好:)没关系,我想我明白了