使用小波散射做信号分类
来自系列: 时间序列数据的深度学习
本视频由浅入深地介绍了如何在时间序列数据上用深度学习技术做信号的分类。
第二部分中我们将首先介绍什么是小波散射,之后重点讲解怎样使用小波散射技术也就是不变散射卷积网络做自动特征提取,和使用长短期记忆网络也就是LSTM(Long Short-Term Memory)做心电图信号的分类。小波散射可以在降维的同时捕获重要的信息,可以在注入原始数据不起作用的情况下发挥作用。
出版年份: 2020 年 10 月 18 日
在时间序列信号的深度学习第二部分,我们将介绍一下怎样使用小波散射做信号分类。
本视频将分为两部分。
第一部分中我们已经简单介绍一下深度学习,包括它的概念和工作流程等。并且我们演示了如何用时频变换,和基于卷积神经网络的迁移学习来做心电图信号的分类。
第二部分中我们将首先介绍什么是小波散射,之后将聚焦在怎样使用小波散射技术也就是不变散射卷积网络做自动特征提取,和使用长短期记忆网络也就是LSTM(Long Short-Term Memory)做心电图信号的分类。这一部分需要关于CNN和LSTM的一些基本知识,您可以参考我们《深度学习入门之旅》和《使用MATLAB进行深度学习》等在线课程。
时间序列信号深度学习方法一般分为两类,第一类是将信号转换成时频表示,并训练自定义的卷积神经网络直接从那些表示中提取模式。 这在我们视频的第一部分已经做了讲解。
第二类方法是将信号直接馈入深度网络(例如LSTM网络)。为了使深度网络更快地学习模式,我们可能需要先降低信号的维数和可变性。一种是从信号中手动识别和提取特征,比如这个用例里,瞬时频率和谱熵被作为特征给手动的提取出来。
还有一种是使用不变散射卷积网络也就是小波散射自动提取特征。其中第一种方式操作起来比较直接,所以我们将在第二部分视频中重点介绍第二种方式,也就是如何利用小波散射来做自动特征提取。
您可能已经熟悉的深度卷积神经网络也就是深度CNN。简单来说,它通过过滤数据,应用某些非线性操作,合并或平均输出,并重复这些步骤以形成层。比如在这个深度CNN的每一层中,我们有卷积操作来过滤数据,ReLU函数以实现非线性化,最后是一个池化操作。
使用深度CNN我们通常会面临以下挑战:
第一:这些模型通常需要大型数据集和大量计算资源才能进行训练和评估。
第二:通常,我们必须为网络选择许多设置,而且这些设置不会独立影响性能。
最后:我们可能难以理解和解释所提取的特征。
下面让我们将小波散射如何解决这些挑战的。
使用小波散射网络的动机是从一组已知的滤波器开始,因为经过充分训练的网络中的滤波器通常类似于一组小波滤波器。主要区别在于在卷积神经网络的情况下,滤波器的权重需要学习获得。而在小波散射网络的情况下,滤波器权重是固定的。
小波散射网络是一个自动提取相关紧凑特征的框架。它的每一层通常也有三部分组成:小波卷积、非线性和平均操作。
小波散射网络被称为深度网络,因为它执行了构成深度网络的三个主要任务:卷积,非线性和池化。其中,卷积由小波执行,模运算符用作非线性化,并且小波低通滤波器的滤波类似于池化。如果您想了解更多的细节,可以参考[1]中的文献。下面我们将深入了解网络的详细信息
首先使用小波低通滤波器对输入信号进行平均。 这是第0层散射功能。 通过平均操作,您会丢失信号中的高频细节。
通过对信号执行连续小波变换以生成一组尺度图系数,可以在后续层中捕获在第一步中丢失的细节。 将非线性算子(在这种情况下为模数)应用于尺度图系数,然后使用小波低通滤波器对输出进行滤波,从而生成一组第1层散射系数。
重复相同的过程以获得第2层散射系数。 就是说,上一层的尺度图系数输出成为下一层操作的输入。 然后,我们应用相同的模运算符,并使用小波低通函数对输出进行滤波,以得出第2层散射系数。
散射网络中可以包含三层以上,但是实际上,每次迭代都会耗散能量。因此,对于大多数应用而言,三层就足够了:第一层基本上执行平均操作,但丢失了信号的细节;第二层捕获细节,类似于尺度不变特征变换功能;第三层提供补充信息,可改善分类。我们通常对系数进行下采样以降低网络的计算复杂性。 这些系数统称为散射特征。您还可以可视化和解释这些特征。
下面我们将来看一个基于小波散射和LSTM的心电图分类的用例,在这个用例中,小波散射网络被用来自动特征提取和降低信号维度。
下面我们来看一下MATLAB代码。
- 使用小波散射和LSTM的ECG信号分类。主要分成3部分:加载和与预处理数据,使用小波散射自动提取特征,利用散射特征训练LSTM网络。
- 数据和视频第一部分中是一样的。由162个心电图采样信号组成,每个信号代表着以下某种心脏的健康程度: ARR只是心律失常,CHF是指充血性心力衰竭,NSR是心律正常。
- 先随机选出四个原始信号,将他们打印出来,我们可以看到即使同为同一种信号,他们的特征也并不是很明显。
- 小波散射是一种可用于自动提取低方差和紧凑特征的技术,可以最大程度地减少类内的差异,同时保留各个类之间的可区分性。
- 我们利用小波散射技术,而不是将原始表示提供给LSTM,以便网络可以快速学习模式,并随后对信号进行分类。
- 首先利用waveletScattering函数创建一个具有两个滤波器组的小波时间散射分解框架sf。 再利用featureMatrix函数返回散射分解框架sf和输入信号的散射特征矩阵。
- 我们可以看到原始信号的维度是1*65536 个字节,而生成的散射特征矩阵的维度是499*8个字节,所以与原始信号相比,散射特征矩阵的大小减少了95%左右。这将大大减少在训练过程中对内存的需求量。
- 我们还可以可视化自动提取的特征:利用scatteringTransform函数来获得心律失常和正常心律下的散射系数,并利用scattergram函数获得第1个滤波器组的散点图。我们可以看到两种信号的散点图是有明显差别的。
- 接着让我们将数据集随机划分为训练数据集和测试数据集。使用我们现有的小波散射变换,为训练和测试数据集计算散射特征。
- 之后我们建立一个常见的LSTM网络,这个网络由五层组成,其中LSTM层有100个隐藏单元。
- 建立一些通用的训练选项,然后开始训练。我们可以看到即使我的电脑只有一个CPU,这个网络的训练速度还是很快的。
- 之后我们将训练好的网络用来分类测试集,这是它的混淆矩阵。
- 如果您对结果不满意,则可以对散射滤波器组中的一个可选参数进行微调,以获得所需的结果。 Invariance scale 的默认值是信号长度的一半。您可以扫描 Invariance scale 并使用贝叶斯优化来找出LSTM网络的超参数的正确组合。
这两幅图分别显示的是原始心电图信号和小波散射处理之后的心电图信号,利用LSTM训练,在一个GPU下训练过程。我们可以看到利用原始数据可能导致GPU内存不足,并导致训练时间过长。而小波散射在降维的同时能捕获重要的信息,减少了对内存的需求并加快了训练的时间。
总结一下,在第二部分视频中,我们介绍了如何使用不变散射卷积网络也就是小波散射这个紧凑的网络来做自动的特征提取。小波散射可以在降维的同时捕获重要的信息,可以在注入原始数据不起作用的情况下发挥作用。谢谢聆听!