CNN 可以有数百个隐藏层,并且由于它们经常与图像数据一起使用,因此具有许多层会捕获更多的复杂性。
然而,据我所知,RNN 通常只有很少的层,例如 2-4。例如,对于心电图 (ECG) 分类,我看到论文使用 4 层的 LSTM 和 10-15 层的 CNN,结果相似。
这是因为如果 RNN/LSTM 更深(由于梯度消失问题)更难训练,还是因为 RNN/LSTM 倾向于快速过拟合序列数据?
CNN 可以有数百个隐藏层,并且由于它们经常与图像数据一起使用,因此具有许多层会捕获更多的复杂性。
然而,据我所知,RNN 通常只有很少的层,例如 2-4。例如,对于心电图 (ECG) 分类,我看到论文使用 4 层的 LSTM 和 10-15 层的 CNN,结果相似。
这是因为如果 RNN/LSTM 更深(由于梯度消失问题)更难训练,还是因为 RNN/LSTM 倾向于快速过拟合序列数据?
CNNs和RNNs特征提取方法:
CNN 倾向于提取空间特征。假设我们总共有 10 个卷积层堆叠在一起。第一层的内核将从输入中提取特征。然后将此特征图用作下一个卷积层的输入,然后再从其输入特征图生成特征图。
同样,从输入图像中逐级提取特征。如果输入是 32 * 32 像素的小图像,那么我们肯定需要更少的卷积层。256 * 256 的较大图像将具有相对较高的特征复杂度。
RNN 是时间特征提取器,因为它们保存了过去层激活的记忆。它们像 NN 一样提取特征,但 RNN 会跨时间步记住提取的特征。RNN 还可以记住通过卷积层提取的特征。由于它们拥有某种记忆,因此它们坚持时间/时间特征。
在心电图分类的情况下:
根据您阅读的论文,似乎,
在 RNN 的帮助下,可以使用时间特征轻松对 ECG 数据进行分类。时间特征有助于模型正确分类心电图。因此,RNN 的使用不那么复杂。
CNN 更复杂,因为,
CNN 使用的特征提取方法导致这些特征不足以唯一识别 ECG。因此,需要更多的卷积层来提取这些次要特征,以便更好地进行分类。
最后,
强特征为模型提供了较低的复杂性,而较弱的特征需要使用复杂的层来提取。
这是因为如果 RNN/LSTM 更深(由于梯度消失问题)更难训练,还是因为 RNN/LSTM 倾向于快速过拟合序列数据?
这可以作为一个思考的角度。LSTM/RNN 容易过度拟合,其中原因之一可能是 @Ismael EL ATIFI 在评论中提到的梯度消失问题。
我感谢@Ismael EL ATIFI 的更正。
原因可以通过查看 CNN 和 LSTM 的架构以及它们如何对时间序列数据进行操作来理解。但我应该说,层数很大程度上取决于您要解决的问题。您或许可以使用少量 LSTM 层来解决 ECG 分类问题,但要从视频中识别活动,您将需要更多层。
抛开这一点不谈,以下是 CNN 和 LSTM 处理时间序列信号的方式。一个非常简单的信号,在三个正周期后,您会得到一个负周期。
为了让 CNN 看到这个简单的模式,在这个例子中它需要 4 层。当 CNN 处理时间序列输入时,卷积输出不知道先前的输出(即它们没有连接)。然而,LSTM 只需使用单层就可以做到这一点,因为它们可以记住多达 100 个时间步长的时间模式。因为一个输出基于当前输入以及模型看到的先前输入。
我并不是说这是唯一的原因,但这可能是 CNN 需要更多层而 LSTM 不需要时间序列数据的主要原因之一。
与跨层相比,消失梯度很可能成为单层内的问题。也就是说,当处理许多连续步骤时,关于前几个步骤的知识可能会消失。而且我认为,如果您正确地对时序模型进行正则化,它们可能不会过度拟合时间序列数据。因此,这种选择可能更多地受模型架构/功能的影响,而不是消失梯度或过度拟合。
我看到了两个可能的原因,为什么 RNN 需要比 CNN 更少的层来达到相同的性能:
RNN 层通常是全连接层,其参数比卷积层多。
RNN 有一些组件允许通过乘法组合输入,而 CNN 只能通过加权加法组合输入。因此,RNN 的乘法能力赋予了他更多计算特征的“能力”。CNN 需要许多层来“模仿”这种乘法能力。