李兴秀,唐建军,华 晶
1.江西农业大学 计算机与信息工程学院,南昌 330045
2.江西农业大学 软件学院,南昌 330045
根据世界卫生组织提供的数据表明,心血管疾病的死亡率占世界死亡率的1/3,而心律失常是心血管疾病中最常见的一种病症,其表现为心脏功能的不规律,严重时甚至危及生命。因此,研究心律失常是诊治该类心血管疾病患者的重要工作之一。目前,诊断心律失常的有力工具是心电信号分析。通过监测患者的心电图,医务工作者可以识别出心律失常,然而这种通过人工视觉的检测与解释容易出错[1]。利用心电自动分析技术可以在心脏活动的实时监测中及时检测出异常心脏信息[2],在早期检测出心律失常能够提高诊断效率并且节约人力与时间成本[3]。传统的机器学习方法以特征为中心[4],因此分类器的性能很大程度上取决于提取特征的质量。近年来深度学习算法以其自动学习特征的优势,被越来越多地应用于医疗保健领域,如医学影像的识别与分割、时间序列数据的监测与分析等。基于深度学习的心律失常分类技术可以自动提取心电信号的低层和高层特征,以端到端的方式将输入的心电信号自动映射为心律失常的某个类型,避免了分类子过程之间的相互依赖(如QRS 复合波的提取)[5]。现有的心电信号分类方法通常包含小波变换等预处理步骤,但是其计算量会增加实时分类系统的时延。此外,部分方法未按照美国医疗仪器促进协会(Association for the Advancement of Medical Instrumentation,AAMI)标准[6]进行分类。然而AAMI 标准包含了对自动心律失常分类方法的测试和评估方案,使得相关研究具有可比性。针对上述问题,本文提出了一种基于一维卷积神经网络(convolutional neural network,CNN)和双向长短期记忆网络(bidirectional long short-term memory,BLSTM)的分类方法。该方法不需要滤波处理和手工特征提取过程。提出的模型首先使用卷积神经网络学习心电信号的形态特征,获取信号的显著信息,然后利用双向长短期记忆网络获取特征中的上下文依赖关系;最后通过softmax函数实现AAMI 标准的五种心律失常类别的分类。方法采用mish 函数作为激活函数,使得模型在训练过程中更为稳定。在MIT-BIH 心律失常数据库进行五折交叉验证,该方法获得了99.11%的平均准确率,验证了模型的有效性。
心律失常的自动分类方法分为传统的机器学习方法[2,7-10]和基于神经网络的深度学习方法[3,11-17],这些方法主要包括信号预处理、特征提取以及分类三个步骤。传统的机器学习方法通常需要提供手工制作的特征,然而特征的选择或组合不仅需要专业知识且其过程是耗时的[18]。随着深度学习理论与研究的发展,研究者们逐渐倾向使用深度学习算法从数据中自动提取感兴趣的特征。根据网络输入的维度,可将深度学习分类方法分为基于一维心电信号的分类和二维心电图像的分类。
目前,基于一维信号的深度学习算法是心律失常分类任务的研究热点,例如Kiranyaz 等人[11]针对特定患者的心电图开发了一种基于一维卷积神经网络的分类算法,然而该算法对SVEB 类型的心律失常分类灵敏度较低。Rajpurkar 等人[12]提出了一个34 层残差卷积神经网络算法,可从单导联可穿戴设备记录的心电信号中检测到心律失常信息。长短期记忆网络擅长获取时间序列信息,Yildirim[13]将信号分解成小波序列,然后输入到深度双向长短期记忆模型中进行分类,在无噪声环境下实现了99.39%的识别性能,但是其训练时间成本高且分类没有按照AAMI的标准进行。针对此问题,Saadatnejad 等人[14]提出了一种小波变换和长短期记忆网络来自动提取特征的轻量级分类方法,满足可穿戴设备上的连续实时分类要求。Feng 等人[15]提出了基于16 层卷积神经网络和长短期记忆网络的多通道分类算法,在PTB 数据库中的心肌梗死分类准确率达到了95.4%。
基于二维心电图像的深度学习方法中,文献[16]将心电信号中的三个相邻心跳转化为二维耦合矩阵,其整合了信号的形态信息和节拍之间的相关性;Jun 等人[17]将每个心跳转换成二维灰度图像,之后将此作为二维卷积神经网络模型的输入。然而基于二维的方法需要将一维信号转换成二维信息,不仅增加了计算成本,而且存储二维的信息会占用更多的硬盘空间。总之,现有的很多方法要么没有按照AAMI标准进行分类[3,13,15,19],要么预处理过程复杂[20-21],要么时间成本高[13,16-17]。基于此,本文提出了一维卷积神经网络和双向长短期记忆网络组合而成的混合模型(CNN-BLSTM),该模型利用了卷积神经网络具有噪声鲁棒性和长短期记忆网络在时间序列数据上的优势,探索其在未经过任何滤波处理的数据上基于AAMI推荐的五种心电类别分类研究。
现有的心律失常分类研究中,预处理过程通常包含小波变换或滤波器组等滤波操作来得到干净的心电数据。为尽可能保留心电信号的原始特征以增强模型的泛化能力,本文在信号预处理过程中未进行任何滤波操作或特征提取步骤,而是直接将原始信号分割成固定长度的节拍。原始心电信号首先通过mapminmax 函数归一化到[0,1]之间,然后根据MIT-BIH 心律失常数据库中注释的R 峰值位置,按文献[22]方法将信号分割成节拍,并给每个节拍注释对应的标签。为保证输入形状一致,将处理得到的每个节拍统一到长度为256 个采样点的数据段。
将经过预处理之后的节拍X=[x1,x2,…,xn]作为网络的输入,其中n为256。输入X对应的标签y∈{N,S,V,F,Q}。
CNN-BLSTM 由卷积神经网络和长短期记忆网络两个模块组成,其中卷积神经网络的卷积层和池化层能够提取输入的底层特征[23],长短期记忆网络能够捕获输入和目标之间复杂的、时间上的上下文依赖关系[24],适用于心电信号分类等任务。图1 和表1分别给出了本文提出的CNN-BLSTM 结构和对应的详细参数。网络总参数量约为4.7×105,运算复杂度约为6.95×10-4GFLOPs。
Fig.1 Structure of CNN-BLSTM图1 CNN-BLSTM 结构
Table 1 Parameters and details of CNN-BLSTM structure表1 CNN-BLSTM 结构的参数与细节
2.2.1 卷积神经网络模块
卷积神经网络模块由若干个卷积层、池化层以及其他操作组成,如图1 所示。卷积层具有局部连通性和权重共享等特性,可用于提取一维心电信号的局部特征。一维卷积层的公式如下:
其中,wl、bl为l层的权重和偏置,m为卷积核大小。
批归一化层[25]可以使数据分布均匀,加快网络训练。激活层可以得到非线性的变换,提升模型拟合效果,因此在每个卷积层后面添加一个批归一化层和激活层。就激活层而言,大部分研究所使用的是ReLU 激活函数(式(2)),根据其原理可知,ReLU 将负输入都变为0,然而网络处理过程中的数据存在负值,这会导致信息的丢失,故而本文中的激活层采用了一个自正则化的mish 激活函数[26](式(3))。mish函数的曲线图见图2,从图像易知mish 函数是一个非单调的平滑的曲线,保留了少量的负值即信息更完整,这使得网络的性能和稳定性更好。
为保留心电信号中的显著信息同时降低网络计算复杂度,在每个卷积块后添加一个核大小为2,步长为2 的最大池化层。此外,由于丢失层可以通过随机丢弃部分信息来防止模型过度拟合,在最大池化层后加入一个丢失率为0.1 的丢失层。
Fig.2 Image of mish function and ReLU function图2 mish 函数与ReLU 函数的图像
2.2.2 双向长短期记忆网络模块
基于长短期记忆网络在动态数据上的优势,本文在卷积神经网络之后使用了双向长短期记忆网络来获取特征中的上下文依赖关系,网络结构如图3 所示。双向长短期记忆网络包含一个前向LSTM 和反向LSTM 两个网络,每个网络包含相同数量的LSTM单元,本文设置其数量为128。LSTM 单元由输入门、输出门和遗忘门组成,这些门能够通过调节单元中的信息流来增加或删除信息,因此单元可以获取时间流中的信息。LSTM 单元的内部结构如图4 所示。
计算公式如下:
其中,it、ft、ct、ot分别为输入门、遗忘门、单元状态和输出门,ut为状态更新,σ为sigmoid 激活函数。
Fig.3 Bidirectional LSTM network architecture图3 双向LSTM 网络结构图
Fig.4 LSTM unit architecture图4 LSTM 单元的内部结构
紧接着双向长短期记忆网络模块之后是一个丢失率为0.2 的丢失层和神经元数为64 的全连接层,最后通过softmax 函数实现AAMI 标准推荐的5 种心电信号类别的分类任务:
其中,P(Xi)为预测的Xi属于所有可能类的概率分布。
网络训练的最大轮数为80 轮,批量大小为128。利用Adam 优化函数更新权重,初始学习率为0.001,在后期为加快模型收敛,使用衰减比率为0.1 的学习率衰减法降低学习率。
实验数据采用了MIT-BIH 心律失常数据库,该数据库从47 名受试者身上共获得48 个双通道动态心电图记录,每个记录的持续时间约为30 min,采样频率为360 Hz。根据AAMI标准建议,去除使用心脏起搏器收集的102、104、107 和217 这4 个心电记录,将剩余44 条记录分割后,按其类型划分为N(正常搏动)、S(室上异位搏动)、V(心室异位搏动)、F(融合搏动)、Q(未知搏动)五大类,获得节拍总样本数为100 588个,具体类别和数量见表2。
本文在以Tensorflow 为后端的深度学习框架Keras 上进行了模型的训练和测试实验,所有实验均在一台处理器为Intel Core i5-10300H、显卡为Nvidia GeForce RTX2060 的计算机上完成。
使用五折交叉验证策略来评估所提模型的稳定性。总样本被等比例地划分成5 部分,依次抽取其中1 份用来测试,其余4 份用来训练,一共进行了5 次。每一次均评估性能指标(评估指标见3.4 节),最后计算5 次记录的所有评估指标的平均值来获得总体性能度量。
Table 2 Detailed classification of AAMI standards in ECG表2 AAMI标准在心电信号中的详细分类
为评估本文模型的有效性,同大多数方法一样,使用准确率(Acc)、灵敏度(Sen)、特异性(Spe)和阳性预测值(PPV)来评价模型的性能,各评价参数定义如下:
其中,TP(真阳性)表示正确分类的阳性样本数;TN(真阴性)表示正确分类的阴性样本数;FP(假阳性)表示阴性样本被错误分类为阳性样本的数量;FN(假阴性)表示阳性样本被错误分类为阴性样本的数量。
使用MIT-BIH 数据集来训练和评估模型,经过五折交叉验证后,计算各性能指标的平均值作为最终各类别及总体的评估结果,实验结果见表3。由该表可知,本文方法在AAMI 推荐的5 种类别上的整体准确率、灵敏度、特异性和阳性预测值分别为99.11%、92.33%、98.95%和95.46%。
Table 3 Evaluation results of model classified on test set表3 模型在测试集上分类的评估结果
图5 给出了模型在测试集上分类的混淆矩阵,根据混淆矩阵可知,所提出的模型能够正确识别大多数的心电节拍。由于F 类节拍和Q 类节拍样本数量相对于其他3 类(N、S、V)较少,F 类与Q 类的评估结果较低。此外,S 类的灵敏度较低,原因是S 类中的AP 类起源于窦房结以外心房的任何部位,其表现为前P 波的缺失或出现异常的P 波,而其QRS 波群与N类中的RBBB 类波形相似,使得模型无法正确区分。尽管如此,本文方法在S 类和V 类这两个重要的心律失常类别均实现了较好的分类性能。
Fig.5 Confusion matrix of model classified on test set图5 模型在测试集上分类的混淆矩阵
本文模型与先进方法[1,21,27-30]进行了比较,如表4 所示,该表中研究的实验数据均采用MIT-BIH数据库,实验结果来自对应文献[1,21,27-30]。Golrizkhatami 等人[1]首先利用CNN、小波变换和统计学方法来提取心电信号不同层次的特征,之后使用决策层融合这些特征信息以预测心电信号类别。文献[21]首先使用db6 小波去除心电信号中的噪声,之后进行多组对比实验得出13 层的VGGNet 为最优模型,其获得了97.87%的总体准确率。文献[27]开发了一个9 层的卷积神经网络算法来识别5 种不同类型的心跳,在使用db6 去噪的数据集上的准确率为94.03%。Hua 等人[28]提出了在原始心电数据中使用R-R-R 的分割策略,该分割策略能够让网络模型更好地学习到心电信号的潜在信息,在一个平衡数据集上获得了97.45%的平均准确率和97.00%平均灵敏度。Bouny等人[29]将CNN 与小波变换相结合,同时提取心电信号和其小波子带的判别特征,该方法达到了99.11%的总体准确率。Li 等人[30]实现了一个并行的通用回归神经网络(general regression neural network,GRNN)来对心跳进行分类,该方法达到了95.00%的准确率。本文模型在没有扩充或平衡数据集上的分类准确率达到了99.11%,能够在未去噪的心电数据中学习到重要信息,因此可以较好地用于有噪声的心电数据分类任务中。
Table 4 Overall performance comparison of this method and other methods表4 本文方法与其他方法整体性能比较
由于SVEB 类(S 类)和VEB 类(V 类)的心电信号与正常信号存在的差异很小,许多分类器在识别这两类时表现较差,这对于患者而言是危险的。因此,正确识别出S 类和V 类的心律失常是分类器的一项重要任务。表5 给出了本文方法与其他研究对这两类心律失常的识别能力。从表中可知,在灵敏度、特异性和阳性预测值评估指标上,本文方法整体表现优于其他工作,表明了模型的有效性和先进性。
为验证提出的模型和mish 激活函数的有效性,本文做了两组消融实验:第一组为使用CNN-BLSTM、CNN-LSTM、CNN 和BLSTM 模型的消融实验;第二组为激活函数使用mish 和ReLU 的消融实验。
Table 5 Comparison of classification performance between this method and other methods on SVEB and VEB表5 本文方法与其他方法在SVEB 类和VEB 类上分类性能比较
消融实验结果见表6。模型的消融实验是基于CNN、LSTM 和BLSTM 模块的有效组合展开的,其中CNN-BLSTM 首先通过卷积提取信号的形态特征,随后使用双向LSTM 获得特征中的上下文依赖关系,获得了最好的准确率。CNN-BLSTM 组合模型相比于其他模型获得了更好的灵敏度和特异性,降低了分类任务中的假阳性和假阴性错误。相比ReLU 激活函数,使用mish 激活函数获得了更好的分类性能,原因在于mish 激活函数保留了特征中少量的负值,有利于网络学习到更加完整的信息。
Table 6 Comparison of classification performance of activation functions and models表6 激活函数和模型的分类性能比较
为验证本文模型的噪声抗干扰能力,对MIT-BIH数据集进行三种预处理方法,分别是未进行任何滤波的原始信号、经过db6 小波滤波数据以及经过db8小波[31]滤波数据。对比实验数据仅存在是否经过小波去噪的区别,其他处理过程以及模型训练和评估过程完全一致,实验结果见表7。由该表可知,模型对未去噪的分类性能与小波去噪后的结果相近,这表明模型能够从未进行滤波处理的信号中提取到重要特征,验证了本文提出的模型对噪声具有鲁棒性。
Table 7 Comparison of classification performance between original data and denoised data表7 原始心电数据与去噪后的数据分类性能比较
本文提出了一种基于卷积神经网络与双向长短期记忆网络的组合模型,该模型可以根据原始心电信号的单个节拍学习到重要的形态特征及特征的上下文依赖关系,并按照AAMI 标准推荐类别进行分类。在MIT-BIH 数据集上的实验结果表明,该模型能够有效提取一维信号的特征,并实现了高准确率的分类。现有的许多工作都是在一个不平衡的数据集上进行研究,本文亦是如此。在未来的工作中,应考虑扩充数据,在一个较平衡的数据集上完成实验和评估,使模型能更好地完成心律失常分类任务。