使用堆叠 LSTM 总是比使用单个 LSTM 更好吗?

数据挖掘 机器学习 深度学习 lstm rnn 机器学习模型
2022-02-19 23:18:12

我目前正在研究 LSTM 和 RNN。

我遇到了几个概念,例如Multidimensional LSTMStacked LSTM

我使用了 Stacked LSTM,它给了我比单个 LSTM 更好的性能。据我了解,如果我增加 LSTM 的深度,隐藏单元的数量也会增加。这意味着过度拟合,对吗?那为什么我会得到更好的结果?

[注意:我已经使用了BatchNorm并且Dropout在每一层 LSTM 之后]

2个回答

通常,您确实可以考虑向神经网络添加更多层和 batchnorm/dropout,以分别控制模型的偏差和方差。但是,通过堆叠更多层来增加方差并不总是意味着您的模型过度拟合。

要诊断您实际上是过度拟合,您应该看到您的训练损失远低于验证损失(下图)。 在此处输入图像描述

但作为一般规则,您应该以最小化训练和验证损失曲线之间的“差距”为目标。在您的情况下,通过添加更多层(参见下面的理想情况),这种差距(也称为泛化差距)似乎正在最小化。这是绝对公平的。 在此处输入图像描述

来自https://machinelearningmastery.com/stacked-long-short-term-memory-networks/

“堆叠 LSTM 隐藏层使模型更深,更准确地获得描述作为一种深度学习技术......额外的隐藏层被理解为重新组合从先前层学习的表示并在高抽象级别创建新的表示。例如,从线条到形状再到物体......足够大的单个隐藏层多层感知器可用于逼近大多数功能。增加网络的深度提供了一种替代解决方案,需要更少的神经元并更快地训练。最终,增加深度是一种表示优化的类型。”

增加神经网络中的层数/隐藏单元的数量并不一定会导致过度拟合。太少会导致训练和测试准确率低;太多会导致训练准确率高但测试准确率低(过度拟合)。中间的某个地方将有适当数量的隐藏层和单元来解决问题。一些复杂的问题,如 NLP,需要许多堆叠的隐藏 LSTM 层http://ruder.io/deep-learning-nlp-best-practices/

该线程可能有用:https ://ai.stackexchange.com/questions/3156/how-to-select-number-of-hidden-layers-and-number-of-memory-cells-in-an-lstm