python - 如何确认 LSTM 网络的收敛性?
问题描述
我正在使用 LSTM 使用 Keras 进行时间序列预测。我使用了 3 个 LSTM 层,dropout=0.3,因此我的训练损失高于验证损失。为了监控收敛,我将训练损失和验证损失一起绘制。结果如下所示。
在研究了这个话题之后,我看到了多个答案,例如([1] [2],但我在互联网上的不同地方发现了几个相互矛盾的论点,这让我有点困惑。我在下面列出了其中的一些:
1) Jason Brownlee提出的文章建议验证和训练数据应该满足收敛,如果它们不满足,我可能会欠拟合数据。
https://machinelearningmastery.com/diagnose-overfitting-underfitting-lstm-models/
https://machinelearningmastery.com/learning-curves-for-diagnosing-machine-learning-model-performance/
2)但是,此处的以下答案表明我的模型刚刚收敛:
因此,总的来说,我对整个概念有点困惑。任何帮助将不胜感激。
解决方案
收敛意味着你有一些东西要收敛。要使学习系统收敛,您需要事先了解正确的模型。然后你会训练你的模型,直到它与正确的模型相同。那时你可以说模型收敛了!...但机器学习的全部意义在于,我们一开始并不知道正确的模型。
那么什么时候停止训练呢?在实践中,当模型运行得足够好,可以做你想让它做的事情时,你就会停下来。这可能是当验证错误低于某个阈值时。可能只是当您负担不起更多的计算能力时。这真的取决于你。
推荐阅读
- asp.net - 如何将 RadTextBox 名称属性设置为静态以在 Javascript 中使用
- r - 如何收集每 4 列,但变量可能有不同的长度
- c# - 将 Access-Control-Request-Headers 设置为 * 有哪些安全风险?
- batch-file - 如何控制变量检索哪个成员值
- mariadb - 加载字段后的时间戳问题为 0000-00-00 00:00:00
- javascript - 如何在 javascript/jquery 中更改 iframe 高度?
- excel - 是否可以清除我的工作簿中单元格的特定填充颜色
- c - 删除数据库时如何处理 C 中的 sqlite3_exec 错误?
- excel - 如果 A1 发生变化,在 B1 中放入一些东西 | 如果 A2 发生变化,在 B2 中放入一些东西
- python - 根据列值将 CSV 拆分为单独的 excel 文件,然后在保存之前更改 excel 的格式