为什么更多的时期会使我的模型变得更糟?

时间:2018-07-16 15:47:06

标签: python tensorflow machine-learning keras lstm

我的大多数代码都基于this文章,而我要问的问题在那儿很明显,但在我自己的测试中也很明显。它是具有LSTM层的顺序模型。

Here这是一个模型的真实数据的绘制预测,该模型使用一个时期用大约20个小数据集进行训练。

这是另一幅图,但是这次使用了一个训练有更多数据的模型,历时10个纪元。

enter image description here

是什么原因造成的,我该如何解决?同样,我发送的第一个链接在底部显示了相同的结果-1个时期确实很棒,而3500个时期太糟糕了。

此外,当我进行一次训练以获取更高的数据数量但只有一个时期时,我得到的结果与第二个图相同。

什么可能导致此问题?

1 个答案:

答案 0 :(得分:3)

几个问题:

  • 此图是用于训练数据还是验证数据?
  • 您认为它更好吗,因为:
    • 该图看起来很酷?
    • 您实际上具有更好的“损失”价值吗?
      • 如果是,那是训练损失吗?
      • 还是验证丢失?

酷图

确实,早期图表似乎很有趣,但请仔细看一下:

  

我清楚地看到了巨大的预测谷,其中预期数据应该是峰值

这真的好吗?听起来像是完全异相的随机波,这意味着直线确实比这更好。

看看“训练损失”,这肯定可以告诉您您的模型是否更好。

如果是这种情况,而您的模型未达到所需的输出,则您可能应该制作一个功能更强大的模型(更多的层,更多的单元,不同的方法等)。但是请注意,无论模型多么出色,许多数据集都是太随机而无法学习。

过度拟合-训练损失变好,但验证损失变差

如果您实际上遭受了更好的训练损失。好的,所以您的模型确实在变好。

  • 您是否正在绘制训练数据? -那么这条直线实际上比异相的波浪要好
  • 您要绘制验证数据吗?
    • 验证丢失怎么办?好还是坏?

如果您的“验证”损失越来越严重,则说明您的模型过拟合。它是在记忆训练数据,而不是一般地学习。您需要功能较弱的模型,或大量的“辍学”模型。

通常,在最佳点上,验证损失停止下降,而训练损失则继续下降。如果您过度健身,这是停止训练的关键。在keras文档中了解EarlyStopping回调。

不良学习率-培训损失会无限增加

如果培训损失在增加,那么您就会遇到一个真正的问题,要么是错误,要么是使用自定义图层的地方计算准备不充分,或者仅仅是学习率过高

降低学习率(将其除以10或100),创建并编译“新”模型,然后重新开始训练。

另一个问题?

然后,您需要适当地详细说明问题。