本发明属于智能医学信号及图像处理领域,涉及一种基于深度自编码的脑电特征优化与癫痫发作检测方法。
背景技术:
脑电图检查是目前临床上癫痫诊断和病灶定位的常用技术,通过脑电图分析来进行癫痫检测不需要额外的设备和检查,容易为医生和患者所接受。由于脑电图的普遍使用,研究癫痫检测也主要借助于这一工具。eeg脑电信号是一种复杂的非平稳随机信号,具有信号微弱,个体差异大等特点,所以如何有效地提取其中的有用信息是脑科学研究的棘手问题。近年来,人们应用各种信号处理技术分析脑电信号,在脑电的定量分析与辅助诊断方面已经取得了一些进展。研究内容也从简单的癫痫检测向更复杂的癫痫预测发展。
随着脑机接口技术的发展,如何处理多通道、高分辨率的脑电图,是癫痫发作检测的技术难点之一。多通道、高分辨率的脑电图中包含的信息量巨大,在特征提取时会产生高维特征,也包含大量干扰特征和冗余信息。在癫痫的发作检测模型中,干扰特征和过高的特征维数容易产生模型过拟合和模型计算复杂度过高等问题:
1.癫痫的发作检测模型较为复杂,训练后几乎可以拟合训练集的每个数据,若特征中包含大量干扰特征和冗余信息,模型会过于强调拟合这些特征而丢失了癫痫发作检测的本质特征,导致模型过拟合,在模型处理新数据时会有较差的表现。
2.对于癫痫的发作检测模型,随着特征维数的增加,对算法的时间复杂度影响较大,部分算法的时间复杂度会成指数级增加。
相比于传统的癫痫检测方法,本发明的主要作用是:滤除干扰特征,提高癫痫发作检测模型的总体识别率;降低特征维数,降低模型学习复杂度。提高癫痫发作检测的速度和精度,实现更有效的癫痫发作检测。
技术实现要素:
本发明针对传统的癫痫检测方法中存在的问题,提出了一种基于深度自编码的脑电特征优化与癫痫发作检测方法。
如图1所示,本发明的技术方案主要包括以下几个步骤:
步骤1:将原始脑电信号进行预处理,然后按顺序排列脑电信号的通道,以每4s的脑电图为一个数据样本,进行离散傅里叶变换,并获得样本的幅值谱,将样本的幅值谱整理成合适的特征矩阵;
步骤2:设置卷积自编码器的网络结构。
步骤3:通过步骤1中的数据训练卷积自编码器,再将数据输入训练好的卷积自编码器的编码器对特征矩阵进行降维,得到低维特征。
步骤4:使用低维特征训练基于最近邻分类器的纠错输出编码模型。最后使用整个模型对新的脑电图进行癫痫发作检测,测试模型性能。
所述步骤1的具体实现步骤如下:
1-1.按顺序排列脑电信号的通道,将脑电信号ref导联的21个通道按照从左到右、从前到后的顺序排列,并将长时间的脑电图分割成若干时长为4秒的数据样本,每两个相邻的样本中间有50%的重叠部分。
1-2.定义癫痫发作前的十分钟为发作前期,癫痫发作时记为发作期,癫痫发作前后四小时以外的时间记为癫痫发作间期。
1-3.使用采样率为1000hz的脑电图,每一个4秒的样本为21*4000的实数矩阵,将样本中的每个通道进行离散傅里叶变换(dft):
其中,n表示每帧的长度,k=0,...,n-1。并由下式获取各通道的幅值谱p(k):
p(k)=|xk|
其中,xk为离散傅里叶变换的结果。将得到的幅值谱去除直流分量和工频干扰,并取87hz以下的信息,即可得到21*336维(即7056维)的原始幅值谱特征。
1-4.整理原始幅值谱特征,将21*336的特征矩阵按列平均分成4部分,即4个21*84的矩阵,再拼接成84*84的正方形特征矩阵。
步骤2中所述的设置卷积自编码器的网络结构,具体实现如下:
2-1.卷积自编码器包含编码器和解码器。本发明中的卷积自编码器,编码器(编码函数)主要由卷积层和池化层组成,解码器(解码函数)由反卷积层和反池化层组成。如图3所示的编码器为3层的自编码器,它是以模型的分类效果为标准选取的。虚线框内是一个卷积自编码器模型,它由编码器(encoder)和解码器(decoder)两部分组成,编码器将输入信号x变换成编码信号y,而解码器将编码信号y转换成输出信号z。
y=f(x)
z=g(y)=g(f(x))
2-2.图2中显示了卷积自编码器结构,图中的矩形代表自编码器每层的输出矩阵。编码器中包含一个输入层、3个卷积层和3个最大池化层,解码器包含4反卷积层和3个上采样层。卷积层中的计算公式为:
其中
在每个卷积层后,使用下采样降低特征维数或使用上采样还原特征维数。这里使用最大池化层完成下采样,即滤波器的输出为输入数据的最大值,最大池化层的计算公式如下:
xi=round(xo(wi/wo))
yi=round(yo(hi/ho))
其中,(xi,yi)、(xo,yo)为输入和输出矩阵元素坐标,wi、wo、hi和ho是输入和输出矩阵的行数和列数。
2-3.设置网络参数,网络参数如图3。其中矩阵边缘需要补0填充,表格中”same”表示填充后该层的输出矩阵的尺寸与输入矩阵相同。这里的网络参数决定了特征降维后的特征维数。如图2所示,原本的特征矩阵为84*84,而第三个最大池化层的输出(即编码器部分的输出)为3个21*21的特征矩阵,即特征矩阵经过编码器编码后,特征维数从原始7056维降至1323维。
步骤3中使用步骤1中所述的数据训练卷积自编码器,再将数据输入训练好的卷积自编码器的编码器对特征矩阵进行降维,得到低维特征,具体实现方法如下:
3-1.卷自动编码器是从训练数据中自动学习的,训练自编码器时只需适当的训练数据而不需要数据的标签。自编码器训练时可以使用随机梯度下降优化编码/解码函数的参数以最小化特征重建损失。
l(x,z)=l(x,g(f(x)))
l表示损失函数,这里以交叉熵误差(crossentropyloss)作为损失函数。使用adam作为优化器,训练卷积自编码器。卷积自编码器训练完成后,其中的编码器就是特征降维模型,解码器中第三个最大池化层的输出即特征降维模型的输出。
3-2.将步骤1中整理好的特征矩阵输入模型,进行特征重建,得到低维特征。
步骤4中使用低维特征训练基于最近邻分类器的纠错输出编码模型。最后使用整个模型对新的脑电图进行癫痫发作检测,测试模型性能,具体实现方法如下:
4-1.使用低维特征和数据的标签训练基于最近邻分类器的纠错输出编码模型。该模型中采用一对一编码,使用10个最近邻分类器进行分类,得到编码矩阵m,根据以下公式预测样本所属类别:
其中,mkl为编码矩阵m中的元素,对应第k类第l个分类器的编码;sl为第l个分类器的分类结果;函数g功能为计算mkl和sl间的海明距离;
4-2.将新的脑电图数据按照同样的方式计算幅值谱并整理成84*84的特征矩阵。输入训练好的编码器中,得到低维特征。
4-3.将降维后的低维特征输入基于最近邻分类器的纠错输出编码模型,得到测试样本的类别。
本发明有益效果如下:
本发明使用卷积自编码器滤除干扰特征,降低了模型过拟合风险,提高了癫痫发作检测精度;同时卷积自编码器减少特征维数,降低了模型学习复杂度。
将本发明所述的方法应用在癫痫患者的脑电图中,得到的总体识别率为93.25%,在相同的数据集上,若直接使用原始幅值谱进行癫痫发作检测,总体识别率仅为85.80%。对比它们对癫痫发作检测的效果,基于卷积自编码器的癫痫发作检测特征降维方法提升了总体识别率7.45%。在提高识别率的同时,卷积自编码器将原始7056维的幅值谱降维至1323维,滤除了干扰特征,降低了模型过拟合风险,减小了分类模型的计算复杂度。实现了高精度的癫痫发作检测。
附图说明
图1:癫痫发作检测算法流程图
图2:卷积自编码器结构图
图3:卷积自编码器参数设置
具体实施方式
下面结合附图详细说明本发明的具体实施方式。
如图1-3所示,本发明具体实现步骤如下:
步骤1:原始脑电信号经过预处理后,按顺序排列脑电信号的通道,以每4s的脑电图为一个数据样本,进行离散傅里叶变换,并获得样本的幅值谱。将样本的幅值谱整理成合适的特征矩阵。
1-1.按顺序排列脑电信号的通道,将脑电信号ref导联的21个通道按照从左到右、从前到后的顺序排列,并将长时间的脑电图分割成若干时长为4秒的数据样本,每两个相邻的样本中间有50%的重叠部分。
1-2.定义癫痫发作前的十分钟为发作前期,癫痫发作时记为发作期,癫痫发作前后四小时以外的时间记为癫痫发作间期。
1-3.使用采样率为1000hz的脑电图,每一个4秒的样本为21*4000的实数矩阵,将样本中的每个通道进行离散傅里叶变换(dft):
其中,n表示每帧的长度,k=0,...,n-1。并由下式获取各通道的幅值谱p(k):
p(k)=|xk|
其中,xk为离散傅里叶变换的结果。将得到的幅值谱去除直流分量和工频干扰,并取87hz以下的信息,即可得到21*336维(即7056维)的原始幅值谱特征。
1-4.整理原始幅值谱特征,将21*336的特征矩阵按列平均分成4部分,即4个21*84的矩阵,再拼接成84*84的正方形特征矩阵。
步骤2中将设置卷积自编码器的网络结构。
2-1.卷积自编码器包含编码器和解码器。本发明中的卷积自编码器,编码器(编码函数)主要由卷积层和池化层组成,解码器(解码函数)由反卷积层和反池化层组成。如图3所示的编码器为3层的自编码器,它是以模型的分类效果为标准选取的。虚线框内是一个卷积自编码器模型,它由编码器(encoder)和解码器(decoder)两部分组成,编码器将输入信号x变换成编码信号y,而解码器将编码信号y转换成输出信号z。
y=f(x)
z=g(y)=g(f(x))
2-2.图2中显示了卷积自编码器结构,图中的矩形代表自编码器每层的输出矩阵。编码器中包含一个输入层、3个卷积层和3个最大池化层,解码器包含4反卷积层和3个上采样层。卷积层中的计算公式为:
其中
在每个卷积层后,使用下采样降低特征维数或使用上采样还原特征维数。这里使用最大池化层完成下采样,即滤波器的输出为输入数据的最大值,最大池化层的计算公式如下:
xi=round(xo(wi/wo))
yi=round(yo(hi/ho))
其中,(xi,yi)、(xo,yo)为输入和输出矩阵元素坐标,wi、wo、hi和ho是输入和输出矩阵的行数和列数。
2-3.设置网络参数,网络参数如图3。其中矩阵边缘需要补0填充,表格中”same”表示填充后输出矩阵的尺寸与输入矩阵相同。这里的网络参数决定了特征降维后的特征维数。如图2所示,原本的特征矩阵为84*84,而第三个最大池化层的输出(即编码器部分的输出)为3个21*21的特征矩阵,即特征矩阵经过编码器编码后,特征维数从原始7056维降至1323维。
步骤3中使用步骤1中所述的数据训练卷积自编码器,再将数据输入训练好的卷积自编码器的编码器对特征矩阵进行降维,得到低维特征,具体实现方法如下:
3-1.卷自动编码器是从训练数据中自动学习的,训练自编码器时只需适当的训练数据而不需要数据的标签。自编码器训练时可以使用随机梯度下降优化编码/解码函数的参数以最小化特征重建损失。
l(x,z)=l(x,g(f(x)))
l表示损失函数,这里以交叉熵误差(crossentropyloss)作为损失函数。使用adam作为优化器,训练卷积自编码器。卷积自编码器训练完成后,其中的编码器就是特征降维模型,解码器中第三个最大池化层的输出即特征降维模型的输出。
3-2.将步骤1中整理好的特征矩阵输入模型,进行特征重建,得到低维特征。
步骤4中使用低维特征训练基于最近邻分类器的纠错输出编码模型。最后使用整个模型对新的脑电图进行癫痫发作检测,测试模型性能,具体实现方法如下:
4-1.使用低维特征和数据的标签训练基于最近邻分类器的纠错输出编码模型。该模型中采用一对一编码,使用10个最近邻分类器进行分类,得到编码矩阵m,根据以下公式预测样本所属类别:
其中,mkl为编码矩阵m中的元素,对应第k类第l个分类器的编码;sl为第l个分类器的分类结果;函数g功能为计算mkl和sl间的海明距离;
4-2.将新的脑电图数据按照同样的方式计算幅值谱并整理成84*84的特征矩阵。输入训练好的编码器中,得到低维特征。
4-3.将降维后的低维特征输入基于最近邻分类器的纠错输出编码模型,得到测试样本的类别。