【发布时间】:2019-10-24 14:29:55
【问题描述】:
我正在训练用于时间序列预测的 LSTM 模型。这是火车损失图。
这是一个提前一步的预测案例,所以我使用滚动窗口训练模型。在这里,我们有 26 个预测步骤(对于每一步,我都会再次训练模型)。如您所见,在 Epoch #25~27 之后,训练损失突然变得如此嘈杂。为什么我们会有这种行为?
附言。我正在使用带有tanh 激活的LSTM。另外,我使用了L1 和L2 正则化,但行为是相同的。 LSTM 之后的层是带有linear 激活的Dense 层,我将MinMaxScaler 应用于输入数据,优化器是Adam。我在验证数据集中也看到了同样的行为。
【问题讨论】:
-
@user1269942。是的。它推迟了这种行为(它不会删除)。但假设在上图中,我们选择 epoch #35(噪声之前)作为最佳模型。当我绘制预测值并将它们与实际值进行比较时,预测值就像一条水平线。这不仅仅与上述案例有关。当我使用提前停止时,它会发生很多次。现在通过将
L2正则化增加到0.09并使用clipvalue = 0.5,它具有更好的行为。但我仍在思考幕后发生的事情以及如何提高性能。 -
你有相应的验证损失图吗?
-
@user1269942 更准确地说,我的输出数据具有 Lévy 分布。但同时,我希望对正常样本和异常样本都有良好的表现。根据这个描述,我应该根据输出添加图而不进行归一化吗?
-
我觉得我在黑暗中刺伤......就像我的日常工作一样!您是否尝试过对输入数据进行对数或平方根缩放处理?也许这会在一些异常值中占主导地位。
标签: python keras time-series lstm loss