尝试减少MLP神经网络预测中的变异性

时间:2018-07-24 21:54:34

标签: python neural-network keras time-series prediction

TLDR;我正在MLP中对时间序列建模,并使用响应的滞后项来递归地预测未来值,但是该模型对随机初始条件非常敏感,以至于预测变化很大,从而使单个模型不可靠。

(我一开始很抱歉掩盖我的网络结构的细节,并且不共享我的代码。)

我为时间序列数据构建了一个复杂的MLP神经网络(在Python / Keras中),以预测多个场所的未来室内温度。在单个网络中使用嵌入的图层同时对房屋进行建模,该嵌入的图层经过扁平化并与连续的特征(例如室外温度,小时,月份等)连接在一起。我发现具有两层以上的深度网络会产生更高的预测风险该“爆炸”到无穷大,所以我正在利用一个浅层网络。

当我拟合室内温度的“长期”模型时,这意味着我不包括有关近期室内温度的信息,我的预测中存在一些差异,但差异较小,并且我认为该模型可靠。但是,当我在“短期”模型中包括室内温度滞后项并以递归预测策略将其向前馈时,由于预测的可变性很高,因此我的预测似乎更加依赖于网络的初始条件。

与蓝色的实际室内温度相比,这里是从相同的模型代码和相同的训练数据对单个前提进行预测的示例,但使用不同的随机初始化运行了15次不同的时间:

Single premise prediction for 15 iterations of identical models

对我来说,这表明该模型几乎没有偏差,并且有了“幸运的”初始权重,该模型可以做得很好。但是可变性使模型不可靠,因为在生产中我们不知道我们是否拥有好的模型之一。

一些评论:

  • 我需要通过更改室内温度滞后项来进行仿真的短期模型。
  • 我知道对所有上述预测取平均值会生成高度准确的预测,但(1)我负担不起昂贵的预测时间,(2)在我的仿真中这可能不可行。
  • 我意识到RNN在时间序列问题上比MLP更“有意义”,但是我们有一些严重的数据丢失问题,并且我想象RNN中嵌入层会带来一些复杂性。
  • 我已经研究了对大多数主要超参数进行的调整,这些调整对预测有影响,但实际上对高方差问题没有任何改变。
  • 我尝试了权重初始化,批次归一化和辍学。这些似乎都根本无法改善网络,并且有一些使网络可靠性降低。
  • 我尝试更改室内温度的滞后项的数量,似乎2是最可靠的。

潜在的解决方案: 通过选择上述十五种“最佳”模型并将这些权重用作新网络的初始权重,然后再使用另外两个月的训练数据对该网络进行微调,我能够生成一致的预测。从表面上看,这似乎是一个有希望的结果,但我的统计学家不赞成从过程中删除随机性元素。

所以我的问题是这个

  1. 在实践中,是否存在从根本上是错误的或危险的事情,而上述解决方案可能是手工选择性能更好的预训练重量?
  2. 对神经网络有更多经验的人是否对为什么使用滞后项的递归预测比在简单的训练集类型情况下的模型有更多的建议?

0 个答案:

没有答案