卷积神经网络混合模型的心律失常分类算法

2021-01-26 04:17梁美玲刘近贞
哈尔滨工业大学学报 2021年2期
关键词:池化步长分类器

熊 慧,梁美玲,刘近贞

(天津工业大学 电气工程与自动化学院,天津 300387)

心电图(electrocardiogram, ECG)用于表征心脏的电活动,心血管疾病的死亡率居各类疾病的首位,且患病率和死亡率逐年上升.心律失常是心血管疾病的一种常见的表现形式,心律失常类型的识别是该类心血管疾病治疗的关键.心律失常类型自动识别方法分为传统机器学习和深度学习.传统机器学习用于心律失常分类的流程包括:特征提取、特征选择和分类[1-2].Thomas等[3]利用离散小波变换和双树复小波变换对4种类型的心拍进行特征提取和特征选择,浅层人工神经网络用于分类.Acharya等[4]结合了离散余弦变换、经验模式分解和离散小波分析用于特征提取和选择,机器学习K近邻作为分类器用于心律失常分类.Li等[5]用小波包熵分解提取特征,随机森林进行心跳分类,准确率达到94%以上.虽然传统机器学习算法的分类效果很好,但是这些方法局限于特征提取和特征选择需要人工设计,而人工设计的策略不能保证可靠的鲁棒性,容易引起过拟合问题.

深度学习方法将特征提取和特征选择集成到模型中,不需要手工构建特征且具有很好的泛化能力,使计算机能够自动地学习和提取任何给定问题的相关特征.随着数据和结果的积累,系统的模型性能可以不断提高.卷积神经网络(convolutional neural network, CNN)是一种深度学习的典型框架,卷积层可以通过不同的卷积核获得不同的感受野,实现自动特征提取,在推荐算法、脑机交互、跌倒检测等研究领域均有广泛应用.Puthusserypady 等[6-7]以R-R间期序列作为输入层信号,CNN自动提取特征,双向长短期记忆网络实时处理序列特征,使用Nesterov动量的随机梯度下降算法加快收敛速度实现心颤检测.杨萍等[8]构建了CNN和长短期记忆网络(long short-term memory, LSTM)的混合模型分别提取局部空间特征和时间特征,以实现对阵发性房颤的预测.Xu等[9]关注心电信号分类的个体差异性,在CNN中加入身份向量建立Patient-Specific模型,用于不同病人的检测.Yang 等[10-13]利用主成分分析、独立成分分析和典型相关网络代替CNN的卷积核进行自动特征提取,一方面可以增强模型的噪声稳健性,另一方面减少了卷积核训练参数.Shi 等[14]将CNN自动提取的特征与手动提取的特征相结合,提取到大量特征再进行优良的特征选择,最终实现ECG信号心律失常的5分类.中国科学院李烨等[15]针对可穿戴ECG信号提出了一种基于时空特征融合的深度神经网络,在CNN空间特征融合的基础上引入时间特征融合,利用可变长12导联ECG数据实现了心律失常多分类.

CNN用于心律失常分类的研究目前存在着输入信号长度必须固定和训练参数多的不足,本文提出一种基于CNN的心律失常分类混合模型.空间金字塔池化层(space pyramid pooling, SPP)的引入使CNN网络能够处理任意长度的心拍片段,而且不同的池化步长可以二次挖掘信号的特征.选择极限学习机(extreme learning machine, ELM)作为分类器,可以解决SPP层引入导致的训练时间增加、运算复杂度增大的问题.除此之外,ELM在提高训练速度的同时也可以增强模型的泛化能力.利用麻省理工学院心律失常数据集(MIT-BIH Arrhythmia Database, MITDB)对混合模型CNN-SPP-ELM进行心律失常4分类实验,混合模型分类的整体准确率为99.16%.

1 心律失常分类的算法原理

1.1 CNN

CNN是一种前馈神经网络,是多层感知机的一个变种模型,目前已广泛应用于图像分类领域.相比其他神经网络,CNN具有稀疏连接和权值共享的特点,可以提取局部特征并大大减少网络的训练参数.传统的CNN结构包括输入层、卷积层和池化层的交替、全连接层和输出层,卷积层和池化层的交替通过不同的卷积核和池化步长能够实现自动特征提取与数据降维,全连接层获得高维空间数据的表达.CNN算法的核心是前向传播和反向传播,其中,前向传播计算损失函数,反向传播利用梯度下降法进行参数更新.前向传播过程由预测分类y,批训练的样本个数n和标签y*共同计算出损失函数.交叉熵损失函数的计算方法为

由损失函数计算各层误差并反向传播更新卷积层的权重和偏置,权重w和偏置b的更新公式为

式中α是学习率,指定了反向传播过程中梯度下降的步长.

1.2 SPP

CNN网络中卷积层和池化层对输入数据的尺寸没有限制,但是全连接层要求输入的特征长度必须固定.如果全连接层输入特征向量的长度不定,则无法确定全连接层的神经元个数,导致网络的动态变化,无法实现参数训练的目的.传统的CNN用于心律失常分类时,在预处理阶段要把分割的心拍进行重采样或者编码等使心拍长度相等,重采样会使原始心拍特征发生形变并且增加整体算法的复杂度.

SPP是一种非常有效的多分辨策略,解决CNN网络输入需要固定尺寸的图像问题[16].SPP将最后一层卷积层输出的特征进行复制,用不同的步长对复制的特征进行池化,最后将池化得到的特征融合为一个尺寸固定的特征作为全连接层的输入.SPP层不仅可以解决CNN网络需要输入图像尺寸固定的问题,还可以以不同的池化步长在多个尺度上二次挖掘图片的特征,加深模型对图像的理解[17].SPP的工作原理见图1,N是最后一层卷积层的输出特征图,复制4份利用4种不同的池化步长得到池化特征,最后对池化特征进行融合得到SPP层输出特征图M.

图1 SPP的工作原理

1.3 ELM

ELM是2004年由南洋理工大学提出的.它是一种特殊的前馈神经网络,具有学习速率快、泛化能力强的特点.随机初始化输入权重和偏置且初始化完成后不需要调整,与反向传播算法相比减少了运算量.单隐层的ELM学习的目标是确定一个输出矩阵,使得标签和输出的误差最小,这一过程由广义的矩阵求逆运算得到.一个有l个隐层节点的单隐层神经网络可以表示为

矩阵表示输出误差最小为

Hβ=T.

式中:j=1,…,n代表n个样本;g(x)为激活函数;w为随机初始化的输入权重;b为神经元的偏置;β是需要计算的输出权重;o为输出;H为隐层节点的输出;T为期望输出.

输出权重矩阵的计算方法为

β=H+T.

式中H+是矩阵H的Moore-Penrose广义逆矩阵.

2 数据来源与处理

2.1 数据来源与评价指标

本文的实验数据来自MITDB,该数据集包含48条时长为30 min,采样频率为360 Hz的心电信号记录.每条记录由两个导联组成,两位专家对心电信号进行标记和注释.排除102、104、107和217四条杂乱且具有节奏性心跳的ECG记录,对余下44条ECG记录的心拍按照美国医疗仪器促进协会(American Association for the Advancement of Medical Instruments, AAMI)的标准分成4类:正常或束支传导阻滞心跳(N)、室上性异常心跳(S)、心室异常心跳(V)和融合心跳(F),对这4类心律失常进行自动识别.表1所示是MITDB中4种类型心拍划分的具体信息与得到的心拍个数.

按照AAMI标准用于评价心律失常分类性能的指标有:混淆矩阵、准确率(accuracy, Acc)、敏感度(sensitive, Se)、特异性(specificity, Sp)和精度(precision, Pp).混淆矩阵可以更详细地观察分类器对每一类别的分类情况,根据混淆矩阵可以计算其他4个指标,每个指标的计算方法如下式:

式中:TTP表示被分类为正样本,实际也是正样本的个数;TTN表示被判定为负样本,实际也是负样本的个数;FFP表示被判定为正样本,但实际是负样本的个数;FFN表示被判定为负样本,但实际是正样本的个数.

表1 AAMI标准对MITDB心拍的4分类

2.2 数据预处理

MITDB提供的原始心电数据已经经过60 Hz工频干扰的处理和0.1~100 Hz的带通滤波去噪,故本文所提出的模型省略了预处理阶段的去噪.将MITDB的44条心电记录按照专家标记的R峰位置和R-R间期的长度对心拍进行动态分割,以获得更完整的包含P波、QRS波和T波的心拍.结合医学特征以及心动周期各特征波的波形特点和持续时间划分心拍.P波时长一般不超过0.12 s,QRS波的时长不超过0.11 s,T波持续时间一般为0.05 ~ 0.25 s之间,取R峰位置前一个R-R间期的45%和R峰位置后一个R-R间期的55%组成一个完整的心拍,图2是心拍分割的示意图.由于动态心拍分割的心拍长度不固定,为了在训练阶段构建CNN网络的输入矩阵,将动态心拍分割的长度进行截取和补零使每个心拍长度为1 s,也有研究表明补零操作有利于CNN网络对特征的提取.

为了统一心拍的分布性,降低信号分布变化的影响,提高模型的收敛速度,在将心拍矩阵送入CNN网络之前对信号进行归一化,计算方法为

式中,xmax为ECG信号的幅值最大值,xmin为ECG信号的幅值最小值.

图2 根据R-R间期进行动态心拍分割

3 CNN-SPP-ELM心律失常分类模型

本文提出一种CNN-SPP-ELM混合模型用于AAMI标准的心律失常4分类研究,图3是提出的混合模型结构.该模型结构主要由3部分组成:CNN的卷积层和池化层、SPP层和ELM分类器.CNN的卷积层和池化层用于特征提取和降维,最后一层卷积层的输出作为下一层的输入.由于输入层信号长度不同,最后一层卷积层输出的信号长度也不同,无法直接作为全连接层的输入,所以引入SPP层对最后一层卷积层的输出特征进行处理.将最后一层卷积层的输出特征复制3份,每份特征以不同的池化步长进行空间金字塔池化,将池化得到的3份特征进行融合得到固定长度的SPP层输出特征.SPP层一方面能够将不同长度的特征图融合为相同长度的特征图,解决CNN需要固定长度输入的问题;另一方面SPP层以不同的池化步长在多个尺度上二次挖掘图片的特征,加深模型对图像的理解.ELM作为分类器,可以减少训练时间,提高模型的泛化能力.

图3 CNN-SPP-ELM混合模型结构

输入层、卷积层、池化层、SPP层以及ELM的参数设置如表2所示.卷积核大小、滤波器数量和池化步长的设置是通过不断试验保持一个变量变化,其他两个不变,来选择最优分类结果.SPP层尝试采用4级金字塔结构,但是与3级金字塔结构相比,这样设置大大增加了训练时间但分类精度却提高得很小,故最终采用3级金字塔结构.SPP层的池化方式选择最大池化,因为与平均池化相比,最大池化更加稳健[20].

表2 CNN-SPP-ELM混合模型的参数设置

训练阶段选择批量梯度下降算法进行参数优化,批量大小选择为16.研究发现,批量样本数越少会导致更快地收敛,而且批量越小越有可能收敛到平坦的最小值,增强模型的泛化能力,但是批量样本数越少也会相应地增加训练时间.综合考虑选择批量大小为16,既可以保证较快的收敛又不会增加很多时间消耗,而且实验结果表明,批量大小为16可以达到更高的分类准确率.经过实验验证,卷积层激活函数为ReLU函数时,学习率设为0.01最为合适,更大的学习率会造成梯度爆炸,更小的学习率会使得收敛时间变长.模型卷积层权值的初始化由He初始化得到,能够实现更快地模型收敛[18].

4 实验与结果分析

4.1 CNN、CNN-SPP与CNN-SPP-ELM模型的对比分析

本文实验平台为MATLAB 2016a,软件环境为Inter(R) Core(TM) i3-3320 CPU @3.30 GHz 16 GB.为了样本均衡,避免某一类样本数量太多,对F类和S类的样本进行数据扩充[19].扩充后选取N类7 000个样本,S类5 000个样本,V类7 000个样本以及F类5 000个样本作为模型的输入.

为了验证混合模型的有效性,设计两组对比实验.对比实验1是传统的CNN心律失常分类模型,卷积层和池化层提取特征和特征降维,Softmax层输出最后的分类结果.对比实验2是CNN-SPP心律失常分类模型,卷积层和SPP层提取特征和特征降维,Softmax层来输出分类结果.CNN模型和CNN-SPP模型与混合模型区别是CNN模型用平均池化层和Softmax层代替SPP层和ELM分类器,CNN-SPP模型用Softmax层代替ELM分类器,其他层参数设置与CNN-SPP-ELM混合模型完全相同.70%作为训练集,30%作为测试集记录30次迭代的CNN、CNN-SPP和CNN-SPP-ELM3种模型4分类的准确率,准确率对比曲线见图4.

图4 三种模型的准确率对比曲线

由图4可知,CNN-SPP模型和CNN-SPP-ELM模型的准确率整体都比CNN模型高,这是因为SPP层不同的池化步长可以学习到更多的特征.表3所示是3种模型在相同软件环境下的训练时间和准确率的对比.与CNN模型相比,CNN-SPP-ELM混合模型能在相同迭代次数下获得更高的准确率;与CNN-SPP模型相比,CNN-SPP-ELM混合模型能以更少的迭代次数获得更高的准确率.

表3 三种模型在相同软件环境下的对比

4.2 CNN-SPP-ELM与其他模型的评价指标对比

保存CNN-SPP模型迭代3次之后的卷积层的权重,将其作为CNN-SPP-ELM模型卷积层权重的初始化值,利用十折交叉验证方法得到CNN-SPP-ELM模型心律失常4分类的评价指标.十折交叉验证方法的实现过程为:

1)将4分类的全部样本数据和标签按照相同的随机数打乱后,随机分成10份,选取其中的9份作为训练集,1份作为测试集.

2)CNN-SPP模型迭代3次,记录梯度下降算法优化得到的卷积层权重和偏置,将其作为CNN-SPP-ELM混合模型的初始化权重和偏置.

3)CNN-SPP-ELM混合模型的ELM分类器隐藏层神经元个数设置为500,记录AAMI标准4分类的评价指标.

4)不重复地选取其他9份作为训练集,另外1份作为测试集,进行10次试验,结果取平均值得到最终的CNN-SPP-ELM分类的评价指标如表4所示.

表4 CNN-SPP-ELM混合模型的评价指标

实验结果表明,混合模型的分类总体准确率为99.16%,4种分类的敏感度均大于98%,特异性均大于98%,精度均大于98%.

表5总结了本文分类算法与其他算法心律失常4分类的结果,所对比的文献数据集全部来自MITDB,评价指标是整体准确率和各分类的敏感性.与对比文献相比,本文算法经过数据扩充后选取的4类样本数量更加均衡,得到的整体准确率更具有说服力.由表5可知,本文算法对异常心拍识别的敏感性都高于其他参考文献.其中PCA为主成分分析,R-R为R-R间期,SVM-PSO为粒子群优化的支持向量机,WPE为小波熵,RF为随机森林,ResNet为残差网络,SVM为支持向量机.

表5 本文分类效果与其他方法对比

4.3 讨 论

传统机器学习的方法用于心律失常分类时,需要手动进行特征提取和特征选择.PCA、S变换、WPE等结合R-R间期的特征提取方法提取到的特征维度大,而且特征选择困难,算法的整体准确率较低,对异常心拍的敏感性不高.基于CNN的深度学习方法用于心律失常分类时,可以自动提取特征.LSTM和CNN的并行组合可以自动提取时序特征和局部相关特征,将两种特征融合到全连接层最后由Softmax层来输出分类结果.结合ResNet的深度残差卷积神经网络,ResNet的加入有效缓解了深层网络收敛难、调优难的问题.CNN和ELM的混合模型不需要通过不断更新权重来找到最优解,这在一定程度上减少了计算复杂度,优化了训练时间.

本文提出的CNN-SPP-ELM混合模型的输入信号是可变长度的心拍,与固定长度的输入信号相比能保留更完整的P、QRS、T段的信息.特征处理和分类过程分开进行,CNN自动提取局部相关特征之后,SPP层通过不同的池化步长降维和进一步提取特征,最后提取到的特征送入ELM分类器实现心律失常的4分类.与LSTM和CNN的并行组合、CNN和ResNet混合模型、CNN和ELM模型相比,本文提出的模型对特征进行了二次提取,能提取到更深层次的特征,整体准确率和异常心拍的分类都高于这几种模型,ELM分类器使得模型的计算复杂度相对也比较低,缩短了训练时间.

5 结 论

本文提出一种用于心律失常分类的CNN-SPP-ELM混合模型结构,输入信号是依据R-R间期和医学信息动态分割的ECG心拍,每个心拍的长度不同,更完整地保留了ECG信号的特征波.CNN和SPP自动提取心拍特征,ELM分类器最终实现心律失常的4分类.与CNN-SPP模型相比ELM分类器能缩短训练时间,更快达到收敛;与CNN-ELM模型相比,SPP层能实现变长的心拍输入并且二次提取卷积层输出的特征.实验结果表明所提出的方法能有效提高心律失常异常心拍的识别准确率、敏感性、特异性和精度,在最终测试集上整体分类的准确率达到99.16%.

本文所提出的基于CNN-SPP-ELM的心律失常分类的混合模型为心律失常的自动诊断提供一种可行的方案.在未来工作中,网络层数的加深、卷积核的大小、数据平衡问题对分类结果的影响都值得进一步研究.之后将尝试采用合成少数过采样技术实现数据扩充和使用本文提出的模型实现心律失常的更多分类.

猜你喜欢
池化步长分类器
基于高斯函数的池化算法
学贯中西(6):阐述ML分类器的工作流程
卷积神经网络中的自适应加权池化
自然梯度盲源分离加速收敛的衡量依据
基于Armijo搜索步长的BFGS与DFP拟牛顿法的比较研究
一种改进的变步长LMS自适应滤波算法
基于朴素Bayes组合的简易集成分类器①
基于特征选择的SVM选择性集成学习方法
基于卷积神经网络和池化算法的表情识别研究
用于手写汉字识别的文本分割方法