微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

LSTM 更高的验证精度和更高的验证损失Python:Keras

如何解决LSTM 更高的验证精度和更高的验证损失Python:Keras

在训练我的 LSTM(使用 Python 中的 Keras 库)时,验证损失不断增加,尽管它最终确实获得了更高的验证准确度。这让我有两个问题:

  1. 它如何/为什么以(显着)更高的验证损失获得(显着)更高的验证准确度?
  2. 验证损失增加是否有问题? (因为它最终确实获得了良好的验证准确性)

这是我的 LSTM 的示例历史日志,适用于此:

enter image description here

比较 epoch 0 和 epoch ~430 时可见:

1.1 val 损失时 52% val 准确度对比 1.8 val 损失时 61% val 准确度

对于损失函数,我使用的是 tf.keras.losses.CategoricalCrossentropy,并且我正在以 50-60% 的高学习率使用 SGD 优化器(因为它获得了最好的验证准确性)。>

最初我认为它可能是过度拟合的,但后来我不明白验证准确性如何最终以几乎两倍于验证损失的方式变得更高。

任何见解将不胜感激。

编辑:另一个不同运行的例子,验证准确度波动较小,但随着验证损失的增加,验证准确度仍然显着提高:

enter image description here

在这次运行中,我使用了低丢失而不是高丢失。

解决方法

正如您所说,“在 50-60% 的高学习率下”,这可能是图形振荡的原因。降低学习率或增加正则化应该可以解决振荡问题。

更一般地说,

交叉熵损失不是有界损失,因此异常值非常严重会使它爆炸。

  • 准确度可以更高,这意味着您的模型能够学习除异常值之外的其余数据集。
  • 验证集异常值过多,导致损失值波动。

要确定是否过度拟合,您应该检查验证集是否存在异常值。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。