滑动窗口导致 LSTM 过拟合?

数据挖掘 lstm 反向传播 小批量梯度下降
2021-09-24 00:08:30

如果我通过滑动窗口方法训练它,我会过度拟合我的 LSTM 吗?为什么人们似乎不将它用于 LSTM?

举一个简化的例子,假设我们必须预测字符序列:

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

如果我继续使用以下 minibatch 训练我的 LSTM,是不是很糟糕(或更好?):

A B C D E F G H I J K L M N, backprop, erase the cell

B C D E F G H I J K L M N O, backprop, erase the cell

 .... and so on, shifting by 1 every time?

以前,我总是将其训练为:

A B C D E F G H I J K L M N,  backprop, erase the cell

O P Q R S T U V W X Y Z,  backprop, erase the cell

与其移动一个,不如将窗口滑动 2 个条目,等等?这意味着什么(就精度/过度拟合而言)?


另外,如果我在前馈网络中使用滑动窗口方法,会导致过度拟合吗?我会假设是的,因为网络长时间暴露于相同的信息区域。例如,它暴露在E F G H I J K很长时间。


编辑:

请记住,细胞状态在训练批次之间会被擦除,因此 LSTM 在这些时候会有“一锤定音”。它无法记住OPQRSTUVWXYZ 之前的内容。这意味着 LSTM 永远无法知道“O”跟随“M”。

所以,我想(因此我的整个问题),为什么不给它中间(重叠)批次......在这种情况下,为什么不使用多个重叠的小批量 - 对我来说,这将提供更顺畅的培训?最终,这将意味着 LSTM 的滑动窗口。


我在回答被接受后发现了一些有用的信息:

从这里

英文翻译的第一个词可能与源句的第一个词高度相关。但这意味着解码器必须考虑 50 步前的信息,并且这些信息需要以某种方式编码在向量中。众所周知,递归神经网络在处理这种长期依赖关系方面存在问题。理论上,像 LSTM 这样的架构应该能够处理这个问题,但在实践中,远程依赖仍然存在问题。

例如,研究人员发现,反转源序列(将其向后馈送到编码器)会产生明显更好的结果,因为它缩短了从解码器到编码器相关部分的路径。同样,输入两次输入序列似乎也有助于网络更好地记忆事物。例如,如果一个训练示例是“约翰回家”,您可以将“约翰回家约翰回家”作为一个输入提供给网络。

接受答案后编辑:

几个月后,我更倾向于使用滑动窗口方法,因为它更好地使用了数据。但在这种情况下,您可能不想在 ABCDEFGHIJKLMNO 之后立即训练 BCDEFGHIJKLMNO。相反,打乱你的例子,逐渐和统一地将所有信息“刷入”到你的 LSTM 中。在 ABCDEFGHIJKLMNO 等之后给它 HIJKLMNOPQRSTU。这与灾难性遗忘直接相关。与往常一样,密切监视验证和测试集,并在看到它们的错误稳步增加时立即停止

此外,可以通过使用合成渐变来改善“锤击头”问题。在这里查看它的好处:(链接的答案讨论了长序列的好处)https://datascience.stackexchange.com/a/32425/43077

2个回答

尽管@Imran 之前的回答是正确的,但我觉得有必要补充一点:有些应用程序确实可以将滑动窗口输入到 LSTM 中。例如,在这里,将预测构建为监督学习问题。

如果您的数据不是很丰富,那么您可能会发现任何 LSTM 都过拟合。一个LSTM中有很多参数(其实有4(mn+n2+n) 参数,其中 m 是输入长度和 n是输出长度,根据这篇文章)。

由于 LSTM 不需要固定大小的输入,它们可以自己找到最佳回溯数。但是,如果您已经进行了先前的自回归分析并确定,例如,当前时间步与前 10 个时间步最相关,并且与过去的第 11 个或任何时间步无关,那么您可以也许通过输入固定长度的序列来节省一些训练时间。然而,这违背了 LSTM 的目的。

如果您的数据对于 LSTM 来说不够丰富,我建议您尝试一些更简单的方法,例如自回归模型,然后逐步提高。

编辑(回应评论):

重叠序列用作输入,尤其是当序列很长时(当然,“长”是相对的)。尽管对于长序列,LSTM 比普通 RNN 更好,但如果序列很长,它们仍然难以记住从序列开始的时间步长。这导致了双向 LSTM 之类的东西,它向前和向后读取序列,提高了网络对每个输入序列的开头和结尾的暴露。原理与重叠序列相同,尽管我认为重叠序列更直观。

LSTM 不需要输入的滑动窗口。他们可以记住他们过去看到的内容,如果您一次输入一个训练示例,他们将选择正确大小的输入窗口来自己记住。

LSTM 已经容易过拟合,如果你用滑动窗口输入大量冗余数据,那么是的,它们很可能会过拟合。

另一方面,使用前馈神经网络进行时间序列预测时需要滑动窗口,因为 FNN 需要固定大小的输入并且没有内存,因此这是向它们提供时间序列数据的最自然的方式。

FNN 是否会过拟合取决于其架构和您的数据,但如果是,所有标准正则化技术都将适用。例如,您可以尝试选择较小的网络、L2 正则化、Dropout 等。