使用CNN分类一维信号是个好主意吗?


20

我正在研究睡眠阶段分类。我阅读了一些有关此主题的研究文章,其中许多使用SVM或集成方法。使用卷积神经网络对一维脑电信号进行分类是个好主意吗?
我是这种工作的新手。请问我有什么问题吗?


通过将信号分解为帧并进行每帧的FFT,可以将一维信号转换为二维信号。对于音频,这是很不常见的。
MSalters

Answers:


23

我想一维信号是指时间序列数据,其中假设值之间存在时间依赖性。在这种情况下,卷积神经网络(CNN)是可能的方法之一。最流行的神经网络的方法来这样的数据是用回归神经网络(RNN),但可以可选地使用细胞神经网络,或混合的方法(准回归神经网络,QRNN),如所讨论的布拉德伯里等人(2016) ,并且还如下图所示。还有其他方法,例如单独使用注意力,如Vaswani等人(2017年)描述的Transformer网络中那样,有关时间的信息是通过傅立叶级数特征传递的。

在此处输入图片说明

使用RNN时,您将使用一个将先前的隐藏状态和当前输入值作为输入的单元格,以返回输出和另一个隐藏状态,因此信息将通过这些隐藏状态流动。使用CNN,您将使用一定宽度的滑动窗口,该窗口看起来会是数据中某些(学习的)模式,然后将这些窗口彼此堆叠,以便更高级别的窗口会在较低级别的窗口中寻找模式模式。使用此类滑动窗口可能有助于查找诸如重复数据中的模式(例如,季节性模式)之类的东西。QRNN层混合了这两种方法。实际上,CNN和QRNN架构的优点之一是它们比RNN更快


12

您当然可以使用CNN对一维信号进行分类。由于您对睡眠阶段分类感兴趣,请参阅本文。它是一个称为DeepSleepNet的深度神经网络,它使用1D卷积层和LSTM层的组合将EEG信号分类为睡眠阶段。

这是架构:

深度睡眠网

网络有两个部分:

  • Fs/2FsFs×4。这背后的直觉是,一个网络试图学习“精细”(或高频)特征,而另一个网络试图学习“粗”(或低频)特征。
  • 顺序学习层:来自卷积层的嵌入(或学习的特征)被级联并馈入LSTM层,以学习嵌入之间的时间依赖性。

最后,有一个5向softmax层将时间序列分为与睡眠阶段相对应的五种之一。


4

我想强调使用堆叠混合方法(CNN + RNN)处理长序列

  • 如您所知,一维CNN对时间步长顺序不敏感(不超过本地范围)。当然,通过在彼此之上堆叠许多卷积和池化层,最终的层能够观察到原始输入的更长子序列。但是,这可能不是建模长期依赖关系的有效方法。尽管CNN与RNN相比非常快。

  • 另一方面,RNN对时间步长很敏感,因此可以很好地建模时间依赖性。但是,众所周知,它们在建模非常长期的依存关系方面较弱,在这种情况下,时间步长可能具有时间依存关系,并且时间步长在输入中很远。此外,当时间步长很高时,它们非常慢。

因此,一种有效的方法可能是以这种方式组合CNN和RNN:首先,我们使用卷积和池化层来减少输入的维数。这将为我们提供具有较高功能的原始输入的压缩图像。然后,我们可以将此较短的1D序列馈送到RNN,以进行进一步处理。因此,我们同时利用了CNN的速度和RNN的表示能力。虽然,与其他任何方法一样,您应该在您的特定用例和数据集上对此进行试验,以确定其是否有效。

这是此方法的粗略说明:

--------------------------
-                        -
-   long 1D sequence     -
-                        -
--------------------------
            |
            |
            v
==========================
=                        =
=  Conv + Pooling layers =
=                        =
==========================
            |
            |
            v
---------------------------
-                         -
- Shorter representations -
-     (higher-level       -
-      CNN features)      -
-                         -
---------------------------
            |
            |
            v
===========================
=                         = 
=  (stack of) RNN layers  =
=                         =
===========================
            |
            |
            v
===============================
=                             =
= classifier, regressor, etc. =
=                             =
===============================

4

FWIW,我建议您从本文中检查出时间卷积网络(我不是作者)。他们有一个巧妙的想法,可以将CNN用于时间序列数据,对时间顺序敏感,可以对任意长序列进行建模(但没有内存)。

在此处输入图片说明

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.