基于小波散射和SVM/LSTM的序列信号分类识别(多输入单输出)——附代码

目录

摘要:

小波散射的介绍:

支持向量机SVM的介绍:

长短期记忆神经网络的介绍:

本文任务实现步骤

本文Matlab代码分享


摘要:

此示例说明如何使用机器学习(SVM)和深度学习(LSTM)方法对语音数字信号进行分类。在此示例中,将使用小波时间散射配合支持向量机 (SVM) 和长短期记忆 (LSTM) 网络执行分类。使用小波散射技术快速将原始数据中的特征提取出来,从而为后续网络的分类提供可靠的数据特征。使用SVM和LSTM分别对序列数据进行分类,并测试其准确度,其中SVM使用K折交叉验证的方式进一步优化其性能。本文代码基于Matlab平台编写,注释十分详细(几乎每一行都有注释),适合初学者学习模仿。

主页中已有关于神经网络、深度学习执行分类任务的文章,建议点击查看

小波散射的介绍:

法国工程学院院士Mallat 教授提出了基于小波变换的小波散射变换,并以此构造了小波散射卷积网络。小波散射卷积网络的结构类似于CNN,不同的是其滤波器是预先确定好的小波滤波器,小波滤波器的参数不需要通过训练样本学习得到,其网络是非反馈式的。信号通过计算半离散小波变换,再通过非线性取模操作,得到的信号特征表达具有平移不变性、形变稳定性等优良特性,正好满足机器学习中对特征提取器的基本要求。此外,这些基本性质在数学上得到了严格的理论证明,弥补了CNN缺乏理论支撑的不足。经过大量试验,小波散射网络在手写体识别、纹理和音频分类任务中取得了突出的分类效果,尤其在小样本的情况下,相较于CNN获得了更小的分类错误率,因此小波散射卷积网络具有一定的优势以及研究意义。

同时,相比于卷积神经网路在小样本上表现的不足与其理论解释的缺乏,Mallat教授提出的小波散射网络在小样本下表现良好,且有很好的物理解释能力。绝大多数的卷积神经网络的前几层卷积核都是类小波/类Gabor 窗的,这意味着散射网络本身的结构与浅层卷积神经网络高度相似,继而,浅层的卷积神经网络的特性在一定程度上可以以散射网络的结构特性去解释。

支持向量机SVM的介绍:

支持向量机(supportvectormachines,SVM)是一种二分类模型,它的基本模型是定义在特征空间上的间隔最大的线性分类器,间隔最大使它有别于感知机;SVM还包括核技巧,这使它成为实质上的非线性分类器。SVM的的学习策略就是间隔最大化,可形式化为一个求解凸二次规划的问题,也等价于正则化的合页损失函数的最小化问题。SVM的的学习算法就是求解凸二次规划的最优化算法。

具体来说就是在线性可分时,在原空间寻找两类样本的最优分类超平面。在线性不可分时,加入松弛变量并通过使用非线性映射将低维度输入空间的样本映射到高维度空间使其变为线性可分,这样就可以在该特征空间中寻找最优分类超平面。

SVM使用准则:n为特征数,m为训练样本数。

a. 如果相较于m而言,n要大许多,即训练集数据量不够支持我们训练一个复杂的非线性模型,我们选用逻辑回归模型或者不带核函数的支持向量机。

b. 如果n较小,而且m大小中等,例如n在1-1000之间,而m在10-10000之间,使用高斯核函数的支持向量机。

c. 如果n较小,而m较大,例如n在1-1000之间,而m大于50000,则使用支持向量机会非常慢,解决方案是创造、增加更多的特征,然后使用逻辑回归或不带核函数的支持向量机。

长短期记忆神经网络的介绍:

长短期记忆网络(LSTM,Long Short-Term Memory)是一种时间循环神经网络,是为了解决一般的RNN循环神经网络)存在的长期依赖问题而专门设计出来的,所有的RNN都具有一种重复神经网络模块的链式形式。在标准RNN中,这个重复的结构模块只有一个非常简单的结构,例如一个tanh层。

LSTM是一种含有LSTM区块(blocks)或其他的一种类神经网络,文献或其他资料中LSTM区块可能被描述成智能网络单元,因为它可以记忆不定时间长度的数值,区块中有一个gate能够决定input是否重要到能被记住及能不能被输出output。

图1底下是四个S函数单元,最左边函数依情况可能成为区块的input,右边三个会经过gate决定input是否能传入区块,左边第二个为input gate,如果这里产出近似于零,将把这里的值挡住,不会进到下一层。左边第三个是forget gate,当这产生值近似于零,将把区块里记住的值忘掉。第四个也就是最右边的input为output gate,他可以决定在区块记忆中的input是否能输出。

本文任务实现步骤

(1)首先将数据导入并查看数据的类型与数量,本文数据共10个类别,每个类别300个样本。

(2)绘制信号数据长度的直方图

(3)使用小波散射对信号数据特征进行提取

以0.22秒的不变性尺度创建小波时间散射框架。在此示例中,通过对所有时间采样点的散射变换求平均值来创建特征向量。要使每个时间窗的散射系数数量足以求平均值,请将OversamplingFactor 设置为2,以使每条路径的散射系数数量相对于临界下采样值增加为原来的四倍

(4)将小波散射提取后的数据作为后续网络的输入

同时,划分数据集和训练集,其中80%作为训练集,20%作为测试集

(5)训练SVM分类器

现在数据已简化为针对每个记录有一个特征向量,下一步是使用这些特征对录音进行分类。用二次多项式核创建一个 SVM 学习器模板。对训练数据进行 SVM 拟合

使用k折交叉验证来基于训练数据预测模型的泛化准确度。将训练集分成五个组

(6)使用SVM测试分类的准确度

经过k折交叉验证优化的SVM分类准确度展示,可以看到分类准确度还是很高的:

(7)构造LSTM分类网络并训练

设置超参数。使用 Adam 优化和小批量大小为 50。将最大训练轮数设置为 300。使用 1e-4 作为学习率。

(8)使用LSTM测试分类准确度

 本文Matlab代码分享

猜你喜欢

转载自blog.csdn.net/widhdbjf/article/details/129356662