如何应对多输出神经网络中一个输出的过度拟合,从而导致模型性能停滞

时间:2019-07-09 14:23:09

标签: tensorflow keras neural-network lstm recurrent-neural-network

某些背景

  • 我正在为时间序列预测(不是预测)训练LSTM
  • 时间序列的间隔不相等且长度可变。因此,序列将长度填充为0。
  • timesteps = 30
  • 模型有6个输出,这些输出在[0,1]之间进行了标准化
  • 功能(50)由动态和静态变量组成
  • 使用std和mean标准化功能,然后使用PCA对其进行转换。
  • 模型权重使用“ glorot_normal”初始化
  • 隐藏的lstm层使用“ tanh”,而输出层lstm则使用“ relu”
  • 作为损失函数的均方对数误差(比mse更好,并且mse也显示出相同的损失趋势)
  • lr = 0.001
  • batch_size = 128

  • 隐藏单元数60

下面是训练和验证损失曲线,该曲线最初显示为平坦曲线。训练时,其中一个输出会出现较长的过度拟合,从而影响整个模型。请参阅放大的损失趋势。尽管如此,其他曲线仍保持相对平坦。此外,模型能够找到模式,但是就我想要达到的范围而言,它并不准确。它会超出或低于真实值。参见下面的预测。

问题

  1. 静态特征会导致这种高损耗趋势吗?我在blog上读过(在数据准备中),人们将需要汇总时间序列的统计信息,以免将来的信息泄漏到训练数据集中。我不确定那是什么意思。有人也可以向我解释一下吗?
  2. 我怀疑,由于学习曲线相对平坦,因此添加更多数据会带来任何显着改善。这种信念正确吗?
  3. 有没有更好的初始化方案可以使我更接近更好的性能
  4. 关于如何改进模型的其他想法?

train_val_loss

enter image description here

zoomed_in_loss

0 个答案:

没有答案