【问题标题】:Noisy train loss after specific epoch in LSTM for time series forecasting (Keras)用于时间序列预测(Keras)的 LSTM 中特定时期后的嘈杂火车损失
【发布时间】:2019-10-24 14:29:55
【问题描述】:

我正在训练用于时间序列预测的 LSTM 模型。这是火车损失图。

这是一个提前一步的预测案例,所以我使用滚动窗口训练模型。在这里,我们有 26 个预测步骤(对于每一步,我都会再次训练模型)。如您所见,在 Epoch #25~27 之后,训练损失突然变得如此嘈杂。为什么我们会有这种行为?

附言。我正在使用带有tanh 激活的LSTM。另外,我使用了L1L2 正则化,但行为是相同的。 LSTM 之后的层是带有linear 激活的Dense 层,我将MinMaxScaler 应用于输入数据,优化器是Adam。我在验证数据集中也看到了同样的行为。

【问题讨论】:

  • @user1269942。是的。它推迟了这种行为(它不会删除)。但假设在上图中,我们选择 epoch #35(噪声之前)作为最佳模型。当我绘制预测值并将它们与实际值进行比较时,预测值就像一条水平线。这不仅仅与上述案例有关。当我使用提前停止时,它会发生很多次。现在通过将L2 正则化增加到0.09 并使用clipvalue = 0.5,它具有更好的行为。但我仍在思考幕后发生的事情以及如何提高性能。
  • 你有相应的验证损失图吗?
  • @user1269942 更准确地说,我的输出数据具有 Lévy 分布。但同时,我希望对正常样本和异常样本都有良好的表现。根据这个描述,我应该根据输出添加图而不进行归一化吗?
  • 我觉得我在黑暗中刺伤......就像我的日常工作一样!您是否尝试过对输入数据进行对数或平方根缩放处理?也许这会在一些异常值中占主导地位。

标签: python keras time-series lstm loss


【解决方案1】:

如果不是这样,您是否使用渐变剪裁可以帮助您,因为渐变值变得非常非常小或很大,这使得模型很难进一步取得进展以更好地学习。循环层可能已经创建了这个损失谷,你可能会因为梯度太大而错过它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-09
    • 2023-03-06
    • 1970-01-01
    • 2019-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-22
    相关资源
    最近更新 更多