如何强制RNN输出变得更平滑?

时间:2019-06-17 09:13:26

标签: python keras time-series lstm recurrent-neural-network

我正在使用Keras LSTM的实验数据来对复杂的物理系统进行建模。问题是输出值趋于在某些点的两个点之间急剧变化。所有物理系统必须表现出某些连续/平稳的行为。如何使输出更平滑,是否存在某种层或正则化?

我尝试引入l1-l2正则化,辍学……它们有帮助,但我没有得到好的结果。我要寻找的是一种可以限制值突然变化的层。顺便说一下,我只处理少量数据。我正在使用2个系列进行训练和验证,使用1个进行测试。

网络结构:对于2 LSTM + 1 Dense层或1 LSTM + 1 Dense层,我得到类似的结果。 (在LSTM和Dense之间具有/不具有辍学层,以及一些l2正则化)

时间序列数据表示一些测量值。测量间隔很短,有时会导致重复的值。我也删除了一些重复的行。(我将它们连接在一起,然后针对其中一个输入删除了行。我尝试对多个输入进行处理。但是如您所知,我并未删除所有重复的行用这种方法,这可能是问题的根源吗?)

我使用sklearn.StandardScaler或sklearn.MinMaxScaler来规范化输入数据,两者之间的差别不大。

您可以在测试数据上看到具有l2正则化的样本结果-请注意开始时的前两个峰。图中大约有20,000个点,这些峰出现在3- 5分。在训练集中也有一些跳跃,但是它们更加平滑且分散。是否有某种方法可以使神经网络内的输出变得平滑,而无需添加一些外部滤波器?

enter image description here

0 个答案:

没有答案