我正在研究睡眠阶段分类。我阅读了一些有关此主题的研究文章,其中许多使用SVM或集成方法。使用卷积神经网络对一维脑电信号进行分类是个好主意吗?
我是这种工作的新手。请问我有什么问题吗?
我正在研究睡眠阶段分类。我阅读了一些有关此主题的研究文章,其中许多使用SVM或集成方法。使用卷积神经网络对一维脑电信号进行分类是个好主意吗?
我是这种工作的新手。请问我有什么问题吗?
Answers:
我想一维信号是指时间序列数据,其中假设值之间存在时间依赖性。在这种情况下,卷积神经网络(CNN)是可能的方法之一。最流行的神经网络的方法来这样的数据是用回归神经网络(RNN),但可以可选地使用细胞神经网络,或混合的方法(准回归神经网络,QRNN),如所讨论的布拉德伯里等人(2016) ,并且还如下图所示。还有其他方法,例如单独使用注意力,如Vaswani等人(2017年)描述的Transformer网络中那样,有关时间的信息是通过傅立叶级数特征传递的。
使用RNN时,您将使用一个将先前的隐藏状态和当前输入值作为输入的单元格,以返回输出和另一个隐藏状态,因此信息将通过这些隐藏状态流动。使用CNN,您将使用一定宽度的滑动窗口,该窗口看起来会是数据中某些(学习的)模式,然后将这些窗口彼此堆叠,以便更高级别的窗口会在较低级别的窗口中寻找模式模式。使用此类滑动窗口可能有助于查找诸如重复数据中的模式(例如,季节性模式)之类的东西。QRNN层混合了这两种方法。实际上,CNN和QRNN架构的优点之一是它们比RNN更快。
我想强调使用堆叠混合方法(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. =
= =
===============================