当前位置:   article > 正文

(论文加源码)基于自动编码器和LSTM的脑电情感识别(数据集为DEAP)提取了功率谱密度,并进行了无编码和SVM的对比实验。_convlstm autoencoder模型

convlstm autoencoder模型

论文及源码见个人主页:https://download.csdn.net/download/qq_45874683/86947437

(论文加源码)基于自动编码器和LSTM的脑电情绪识别(数据集为DEAP)提取了功率谱密度,并进行了无自动编码和SVM的对比实验。

摘要:

       在本论文中,我们研究了一种新的深度学习模型,该模型利用自动编码器模型结构将原始脑电数据分解为几个关键信号分量,提取功率谱密度(PSD),然后使用LSTM递归神经网络捕捉PSD特征序列的时间关系。积极和消极情绪分类在效价和唤醒维度上的准确率分别为66.95%和70.00%。为了寻找最优的模型结构和超参数,进行了大量的对比实验,包括无自动编码器和支持向量机模型的对比。此外,我们还利用开源Python包MNE帮助我们更好地理解、可视化和分析人类脑电图数据。

Python包MNE:

       MNE是一个开源Python软件包,用于探索、可视化和分析人类神经生理学数据:MEG、EEG、ECoG、NIRS等。它具有许多有用的功能,如脑电预处理、脑电电极可视化、伪影检测、独立分量分析(ICA)等。在我们的例子中,我们使用MATLAB格式的DEAP数据集。

       在我们的方法中,我们丢弃了6中3秒的EEG信号前3秒的信号,在训练自动编码器后,它可以将32个通道的EEG信号编码为12个通道的信号,我们假设每个通道来自每个大脑区域。为了从每个编码信号中提取PSD特征,使用了Welch的方法。然后,119段的特征序列将被输入到具有119个时间步长的LSTM模型中。最后每个试验将计算一个输出,代表该试验的预测等级(0或1)。整个过程如图所示

所使用的包:

       使用numpy、scipy、sklearn keras、mne和其他Python包来实现该算法。

脑电数据预处理:

       数据缩放是一个关键步骤,因为潜在的梯度爆炸或梯度消失可能会严重降低分类精度。两种最常用的有效数据缩放技术是数据标准化和数据规范化。为了比较基于特定距离度量的特征之间的相似性,数据标准化可能尤其重要。在我们的实验中,我们发现数据标准化可以在自动编码器训练中取得更好的效果,

数据标准化:

数据规范化:

        价维数大于5.5或小于4.5,则认为该试验属于“高价”或“低价”范畴,也适用于唤醒维度。

Autoencoder:

       Autoencoder是一种深度学习模型,从中心层看,它具有对称结构,称为瓶颈层。自动编码器的结构如图17所示,它清楚地表明,它在输入层有32个输入神经元,因为输入数据是32维向量。第二层有64个神经元,第二层是瓶颈层,有12个神经元。同样的结构在右边。

        在构建自动编码器模型后,对脑电数据的格式进行转换,以满足输入数据的格式要求。“vector_transform”函数输入数据的形状是(x,32,7680),x是试验次数。首先,使用“np.moveaxis”将形状转换为(x,7680,32),然后使用“reshape”将数据形状重塑为(x*7680,32)。X*7680表示32维向量的总数,每个32维向量是32路EEG数据的每个时间步长。而“inverse_vector_transform”基本上是对“vector_transform”进行逆运算,这样在对训练数据进行编码后,就可以对编码后的数据进行变换,提取源信号的PSD特征。这两个功能如图所示。

 结果验证方法:

       验证方法,即10倍交叉验证。基本上,将所有EEG试验(1059次试验)随机分为10组,然后将9次试验合并为训练数据(953次试验),将最后一次试验作为测试数据(106次试验)。所以我们的实验重复10次,使每一次折叠都有机会成为测试数据,最终结果计算为10次实验的平均值

特征提取方法:

       用来提取PSD特征的主要方法是著名的Welch方法。Welch的方法通过将数据划分为重叠段,计算每个段的修正周期图,并对周期图求平均值来计算功率谱密度的估计值。我们将线段长度设置为1秒,重叠设置为0.5秒。如图所示,左上角是原始1秒信号(总共128个点),右上角是使用“numpy.Hanning(128)”生成的Hanning窗口。对于训练数据,包括953条轨迹,每条轨迹有119个片段,每个片段有4个(波段)*12个(通道)=48个特征。

 LSTM-RNN

       下图展示了本文中使用的LSTM的总体结构。由于在一次试验中有119个片段,并且从一个片段中提取了48个特征,因此LSTM输入层设置为(119,48)。然后是一个LSTM层。LSTM层的输出被发送到两个密集层,分别有119个和12个神经元。最后,使用带有“S形”激活函数的密集层输出最终分类精度。LSTM中使用相同的SGD优化器和MSE,训练时间设置为30,批量大小为8。训练数据是上述计算的所有特征序列(FBP),标签是原始试验的相应0或1标签。

下图显示了构建LSTM模型的代码:

图28显示了LSTM模型的训练:

        我们可以看到,由于我们只有106个测试数据,验证精度略有不同。因此,我们考虑每个实验的最高精度(在第一个实验中,最高精度为75%),并计算10个实验的平均精度作为我们的度量与以下实验进行比较。

对比实验:

无自动编码器的LSTM

       为了验证自动编码器在我们的方法中的有效性,我们做了一个对比实验,该实验没有使用自动编码器来分解原始32通道脑电数据。如上所述,同样的方法用于提取PSD特征。唯一的区别是使用32通道信号而不是12通道信号。因此,对于训练数据,包括953条,每条有119个区段,每条区段有4个(频带)*32个(通道)=128个特征。因此,LSTM输入层的输入形状变为(119,128),如图所示。

支持向量机方法

       第二个对比实验是以支持向量机为分类器的基线精度实验。由于实验中没有使用LSTM,PSD特征提取方法也发生了变化。对于每个通道的EEG数据,使用welch方法计算PSD值,然后使用积分计算四个不同波段的FBP。因此,对于每个试验,共提取32*4个特征,并将其展平为一维向量,如图31所示。128个功能的一个示例如图所示:

       SVM模型的创建相对容易。如前所述,SVM模型的“RBF”核具有能够更好地区分不同类别的优势。然后,将上述提取的特征输入到SVM模型中,保留所有超参数作为默认值。

最终结果:

 结论:

       根据选择的自动编码器+LSTM方法进行了一系列实验。10个验证实验的最高分类准确率平均为66.95%(独立于受试者),使用了10次交叉验证。将这一结果与后两个对比实验进行比较,我们发现autoencoder+LSTM方法(对价态和觉醒的准确率分别为66.95%和70.00%)优于对比实验1(无autoencoder的LSTM,对价态和觉醒的准确率分别为63.81%和69.53%)和实验2(SVM方法,对价态和觉醒的准确率分别为58.57%和65.74%)。我们已经验证了SAE+LSTM结合PSD特征方法在降低原始EEG信号的复杂性和利用EEG信号的频率和时间信息方面的优势。

论文及源码见个人主页:https://download.csdn.net/download/qq_45874683/86947437

(论文加源码)基于自动编码器和LSTM的脑电情绪识别(数据集为DEAP)提取了功率谱密度,并进行了无自动编码和SVM的对比实验。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/647537
推荐阅读
相关标签
  

闽ICP备14008679号