【问题标题】:Is this an overfitted network?这是一个过拟合的网络吗?
【发布时间】:2017-08-28 16:08:24
【问题描述】:

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

我有疑问,因为我读过当网络过度训练时会产生过度拟合,并且当验证损失增加时会发生这种情况。

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

额外信息

以此方式拆分单个数据集:

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

500 轮训练

2000 纪元培训

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

【问题讨论】:

  • 我觉得不错。

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


【解决方案1】:

训练损失确实似乎比验证损失继续减少(在我看来,它在第 500 个时期仍然没有完成减少,继续更多时期看看会发生什么会很好)。不过看起来差别不大。

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

我建议测试以下内容:

  1. 继续 500 多个 epoch,看看训练损失是否继续进一步减少,或者它是否稳定在接近验证损失的位置。如果它继续进一步减少,并且验证损失保持不变,则可以肯定地说网络过度拟合。
  2. 尝试创建不同的训练集和验证集拆分。您实际上是如何确定训练和验证集的?是否给了您两套单独的数据集,一套用于训练,一套用于验证?还是给了你一个大的训练集,你自己把它分开了?在第一种情况下,分布可能不同,因此训练与验证损失的差异并不奇怪。在第二种情况下,请尝试随机创建不同的拆分并重复实验,看看您是否始终在训练与验证损失方面始终获得相同的差异,或者它们有时是否也更接近。

【讨论】:

  • 首先,感谢您的回答。我有一个大数据集,然后我自己通过以下拆分来划分它:训练 70% 的数据集/验证 30% 的数据集。现在我正在用更多的 epoch 再次训练,我将编辑帖子以便您可以看到结果。我也会尝试一些不同的拆分,然后说出会发生什么。
  • @Jvr 看到了 2000 个时代的情节。这看起来很稳定,所以看起来不需要担心过度拟合(如果有的话)。
  • 真的很高兴读到这篇文章! :) 多谢。反正我也会等其他意见。
【解决方案2】:

在您的训练损失不断减少而验证损失停止减少的意义上,存在轻微的过拟合。

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

当您的验证损失开始增加时,就会出现有害的过拟合。验证损失是您对网络性能的真正衡量标准。如果它上升,那么你的模型开始做坏事,你应该停在那里。

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

【讨论】:

  • 我很高兴听到这个消息(我的意思是,这不是有害的过拟合,因为验证损失没有增加)。但是......在什么时候我们可以说这个模型是有效的?现在我已经训练了 2000 个 epoch,差异在很小的范围内是巨大的(0.0036 与 3.1711e-05 验证损失)。我可以在哪里设置限制,以便知道我可以接受有效模型的过度拟合程度?
  • 这取决于你,选择验证损失最低的模型......它应该给你最好的性能,因为它在“看不见的数据”上表现良好:)
  • 没关系,我想我明白了
猜你喜欢
  • 1970-01-01
  • 2019-11-08
  • 2018-02-19
  • 2019-11-10
  • 2021-04-13
  • 2019-02-13
  • 2018-06-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多