唐建军 李兴秀 华 晶 杨富豪
1(江西农业大学计算机与信息工程学院 江西 南昌 330045) 2(江西农业大学软件学院 江西 南昌 330045)
世界卫生组织公布的数据表明:全球有1/3的死亡事例源于心血管疾病,随着人口老龄化,该比例在不断上升。对心电图(ECG)的分析,可以进行生物识别、活动识别,以及更重要的患者筛查和诊断方面的活动[1]。心电图不仅在各种心律失常和心肌梗死等病症的检查、诊断、治疗中扮演着重要的角色,在人们日常的体检以及医疗人员的研究中也具有重要意义。对于心律失常等常见的不健康的心电信号,诊断程序主要依赖于医生或临床技术人员对ECG的视觉检查。然而,有的异常信号缺乏特异性,与健康信号存在的区别非常小,有专业领域知识的医生专家不仅需要花费长时间的观察来寻找病因,在可能无法检测到异常的同时也容易对心电信号形态的识别出现错误判断。
近年来,除了资深医生深入研究病因,从心电图这种生理时间序列中自动检测病理或心理状态已成为新的研究热点,如KNN[2]、决策树、朴素贝叶斯、支持向量机(SVM)[3]、隐马尔可夫模型(HMM)[4-5]、人工神经网络[6]、专家系统混合方法[7]等。SVM和HMM通常与人工选择的特征一起使用,提取特征的质量对所引用的分类/预测策略的可靠性和性能及其结果具有最显著的影响。然而,基于专家知识的特征提取技术是耗时且容易出错的,并且提取的特征在许多变化方面通常不是鲁棒的,例如平移、噪声、缩放和位移等。此外, ECG信号特征高度依赖于主体,提取有效特征通常需要深入的领域知识和专业知识。为了自动检测心电图中的心律失常,算法必须能够隐含地识别不同的波类型并且随着时间的推移识别它们之间的复杂关系。传统的时间序列分类方法高度依赖于提取的特征,但是很难提取捕获时间序列数据的内在属性中正确和关键的信息。深度学习算法对ECG信号的检测一般分为三个步骤:信号预处理,特征学习和ECG分类。经过训练后的网络架构,能够快速检测到心电信号的异常并实现正确分类。深度神经网络的最近应用之一是时间序列分类问题,专门处理大量数据的时间序列分类问题,从而被广泛用于医疗保健系统、自然语言处理、生物信息学、视频动作行为识别等各种应用中。
本文旨在将心电图分类的深度学习算法做详细的文献评述。以前的工作主要探索了能够提高分类精度的算法,如传统自动分类算法和各种神经网络算法。然而本文着重于各种不同模型的性能表现,特别是卷积神经网络和长短期记忆模型的显著优点。
人工神经网络(Artificial Neural Network, ANN)方法能够模拟生物大脑的功能。ANN模型一般由输入层、隐藏层和输出层组成[8],如图1所示,其中:n表示神经元;b表示偏置项。人工神经元中的激活函数充当生物神经元的核,输入信息以及各自的权重分别模拟树突和突触[8],图2为神经元结构。由于人工神经网络添加了一个偏置项,即其可以平移或偏移,将其用作分类器产生的分类结果可能不太准确。因此,产生了人工神经网络的扩展版——卷积神经网络(Convolutional Neural Networks, CNN)。
图1 传统神经网络模型[8]
图2 神经元结构[8]
卷积神经网络可以确保平移或偏移的不变性,在信号特征的提取方面具有很好的性能,是近两年来使用最多的网络结构。卷积神经网络能够提供强大的特征向量,得益于其具有的结构:卷积层,池化层和完全连接层[8]。
卷积层:输入样本与该层的内核(权重)进行卷积,其中步幅控制内核与输入样本卷积的程度。卷积运算通过学习各种输入的信息而充当特征提取器。提取的特征用于后续层中的分类或预测任务。
池化层:即下采样层,采用池化操作可以减少输入样本的空间维度,同时保留重要信息。池化操作可以是最大值池化、均值池化或组合池化,如文献[9]使用最大池化操作实现降维和减少特征空间。
完全连接层:表示前一层中的每个神经元都连接到当前层中的所有神经元上。最后一层中的完全连接的神经元的总数决定了类的数量。神经元都是连接的且每个连接都有一个特定的权重。该层建立前一层的所有输出的加权和,以确定特定目标的输出。
CNN有助于学习数据的层次化表示,并且已被证明在分类任务中非常有效。在汇集层中,通过学习这些特征图来提供类的自动预测,图3展示了其学习过程。CNN有利于提取样本内部形态特征,但不擅长利用节拍之间的信息。循环神经网络不同于前馈网络,其擅长利用时序信息,其网络输出取决于先前的计算。
图3 卷积神经网络
传统的时间序列分类方法高度依赖于提取的特征,但是难以捕获时间序列数据固有属性的所有基本特征和关键特征[10]。循环神经网络(RNN)与经典前馈神经元结构之间的运作不同, RNN为索引的所有项重复相同的任务,具体取决于先前的输出。RNN适合短期依赖性问题,但是在处理长期依赖问题方面经常遇到梯度消失或梯度爆炸问题。引入长短期记忆网络(LSTM)和门控复发单位可以克服RNN的缺点,隐藏层中的每个传统节点都被LSTM细胞单元替换,同时也解决了训练期间的梯度消失或梯度爆炸的问题。LSTM网络是由存储器块和细胞单元,以及它们包含的门单元组成的特殊结构,图4-图5显示了LSTM存储器块及细胞单元内部结构[11]。输入门控制到细胞单元的输入流,输出门控制细胞单元的输出流到其他LSTM块。
图4 LSTM细胞单元的内部结构
图5 LSTM存储器块
遗忘门由简单的单层神经网络控制。其激活公式如下:
f1=s(W[xt,ht-1,Ct-1]+bf)
(1)
式中:xt是输入序列;ht-1是前一个块输出;Ct-1是前一个LSTM块存储器;bf是偏置向量;W表示每个输入的单独权重向量;s是Sigmoid激活函数。遗忘门决定细胞的历史状态信息有多少允许进入当前状态。
输入门:作用于细胞单元状态,决定哪些新的信息被记录到当前单元状态中。输出门:生成当前LSTM单元输出的部分。
it=s(W[xt,ht-1,Ct-1]+bi)
(2)
Ct=ft·Ct-1+it·tanh(W[xt,ht-1,Ct-1]+bc)
(3)
ot=s(W[xt,ht-1,Ct-1]+bo)
(4)
ht=tanh(Ct)·ot
(5)
除了上述常见的三种神经网络外,还有基于BP神经网络的多阶分类算法[12]、多层神经网络的径向基函数算法(Radial-Basis Function,RBF)[13],以及其他多网络架构算法。研究表明,通过使用心电数据库训练过的神经网络,在对未经训练的心电信号分类上都有较好的表现。
使用准确率、灵敏度、特异性、阳性预测性、F-Score作为评估指标,其中:真阳性(TP)为正确肯定的数目;真阴性(TN)为正确被否认的非匹配数;假阳性(FP)为给出的匹配不正确的数;假阴性(FN)为没有找到的匹配数目。
① 准确率(Accuracy,Acc):测量了所有类别节拍的整体系统性能。
(6)
② 灵敏度(Sensitivity,Sen):真阳性率,也称为召回率(Recall),是所有正例事件中被正确分类为正例的比率,衡量模型对正例事件的识别能力。
(7)
③ 特异性(Specificity,Spe):真阴性率,是所有负例事件中被正确分类为负例的比率,衡量模型对负例事件的分类能力。
(8)
④ 阳性预测性(Positive Predictive Value,PPV):也称为准确率(Precision),是在所有检测到的事件中正确分类的事件的概率。
(9)
⑤ F-Score:综合考虑阳性预测性与灵敏度的调和值。
(10)
(11)
当β为1时,称为F1-Score,此时表明,准确率和召回率都很重要,权重相同。若准确率更为重要则调整β值小于1,召回率更为重要则β值大于1。
鲁棒性:是指控制系统在一定结构、大小的参数变动下,维持它某些性能的特性。在异常或危险情况下,该性能是系统生存的关键。
(1) 数据集。影响模型性能的关键是一个大的标注数据集和一个深度神经网络,可以映射一系列心电信号样本中的心律失常标签。心电信号获取方式普遍分为两种:私有数据库;网上公开可下载的数据库,如研究者使用最多的PhysioNet 数据库和MIT-BIH 数据库。
PhysioNet[14]是一个不断扩充、免费提供了大量生理信号及相关处理工具的资源网站。其中大部分数据带有详尽的标签信息,数据来源于正常人及常见多发病种的病人,如心脏猝死、心力衰竭、心律失常等。其拥有50个心电信号的数据库,共10 000个心电信号数据。另外PhysioNet/Computing in Cardiology Challenge 2017(CinC17)[15]在研究者中使用也较为广泛,共包含8 528个心电信号用于公共训练和3 658个私人ECG记录用于测试。
MIT-BIH数据库[16]是国际上公认的可作为标准的心电数据库之一,在文献中应用最为广泛。其包含48条记录,每条记录包含半小时的通道持续时间的双通道ECG信号。信号选自47个受试者,进行24小时记录连续ECG信号,并以0.1~100 Hz进行带通滤波,然后以360 Hz数字化。该数据库的一个心电记录包含3个文件,分别是头文件、数据文件,以及由独立专家验证的时序信息和节拍类信息的注释文件。标注的数据是按每个心电图周期进行标记的,即对每个周期的P-QRS-T波形都进行了标注,部分信号类型记录及节拍数量见表1。
表1 MIT-BIH数据库每种心电节拍的数量
除以上数据集,中国心血管疾病数据库(Chinese Cardiovascular Disease Database,CCDD)[17]被构造用来研究面向临床的ECG分析算法,其中的数据全部来自临床,目前包含近18万条12导联心电图记录,采样率为500 Hz,所有记录都有完整的诊断结论[18]。目前,国内部分学者使用该数据库进行实验,以使网络架构更具有适用性。
除了网络上可用的数据库外,有一些研究工作者使用建模方法,即使用ECG模拟器构建合成数据集,模拟器可以根据设置不同的参数模拟合成不同类型的ECG信号,通过模拟合成大量的ECG信号进行实验,可以评估其提出的网络模型的性能表现,然后再使用公共数据库进行验证或在现实的临床数据上评估其性能[19]。同时,由于数据不够,为满足网络训练的需要,通过增强数据而不会导致过度拟合,还利用神经网络生成心电信息,以满足研究中数据缺乏的问题。
(2) 数据处理。ECG信号预处理包括消除噪声、基线漂移和增强数据等。消除噪声主要有滤波器组、均值滤波、Butterworth滤波、小波变换[20]等。使用均值滤波时,由于增加了平滑点,导致其幅度下降,故而需要采用补偿方法将波信号的幅值补偿到原来数值。文献[21]中指出,Butterworth滤波在幅度上会下降还会在波信号上发生形变,导致信号在一定程度上失真。经验模态分解算法(EMD)是近年来信号处理技术的一个新热点,其可以将给定的数据分解为本质模态函数(IMF),使得隐藏信息暴露,更便于处理[22]。Ji等[23]使用经验分解算法将ECG信号分解成10个本质模态函数(IMF),通过小波变换算法将高频的IMF1和IMF2进行去噪,通过中值滤波算法消除低频的IMF9和IMF10的基线漂移,之后对处理过的IMF模式和剩余的未处理的IMF模式进行重构以获得平滑且无噪声的ECG信号。另外,数据增强可以充当正则化方法以防止神经网络过度拟合,并改善具有不平衡类频率的问题的分类性能[24]。
在对信号经过一定的处理后,对输入到神经网络中的信息还需要进一步处理。心电图分类的一个重要基础是检测R波峰,因此定位心跳节拍,心跳周期如图6所示(心脏电活动的去极化表现为心电图上的P波和QRS波,心脏电活动的复极化表现为心电图上的T波,其中PR、ST分别表示心电图上的P-R段和S-T段)。用于R峰提取的当前算法倾向于使用小波变换计算来自原始ECG信号的特征,其次是基于精细调节的阈值分类器。根据小波理论,R波峰值点对应于模极大值的过零点。通过检测R波的模极大值的位置来定位R波峰值位置,然后根据R峰值位置向前和向后搜索QRS波的起点和终点。此外,离散小波变换结合自适应阈值去噪方法检测心电信号的R波。检测模数最大值和过零点以找到QRS波的位置,然后使用自适应噪声阈值方法来判断检测的峰值是R波还是毛刺。
图6 心跳周期示意图
特征提取即根据信号特征从波形信号提取重要特征,分类器性能最重要的组成部分之一是输入数据的特征。被用于分类的特征可以分为手工提取的特征和神经网络学习得到的特征。基于小波变换(通过小波变换和数字形态学相结合)提取的特征常常和支持向量机、KNN等特定的分类器同时使用。Kumar等[25]使用最小平方支持向量机分类器,对来自小波变换获得的特征进行分类,准确度、敏感度和特异性都达到了99.5%以上。Oh等[26]分解ECG信号提取重要的特征,输入到K最近邻分类,获得的性能超过了Kumar等的表现。另外,主成分分析、高阶统计、独立分量分析和Lyapunov指数(LE)[27]等方法也常用于对ECG信号的提取,表2为部分使用传统自动分类算法的信息。
表2 传统自动分类算法
将分段信号直接用于分类器执行在性能上表现得不是很好,在深度学习领域,特征提取和分类阶段在一个网络中循环执行,以使网络学习提取特征并学会分类。用于网络中的经过预处理之后的信号,有两种方式作为输入信息:第一种是将分割后的节拍信息输入到网络中;第二种是将其转换为时频域进行特征的提取,能够实现更好的分类精度。在关于人工神经网络的相关文献中,Sánchez等[28]开发并评估了两种用于心律失常(Atrial Fibrillation,AF)信号分类的神经网络架构。一种是传统的前馈神经网络(Feedforward Neural Network,FNN)输入时间序列格式的ECG信号,另一种是将归一化的ECG信号经过GASF变换之后的图像输入卷积神经网络。实验结果表明,前馈神经网络中的平均准确度为86.4%,与卷积神经网络的平均精度97.6%相差较远。作者认为其原因是将信号转换为图像之后放大了信号的特征,更容易检测到异常。另外,Jun等[29]使用GASF变换将Q波峰值切片变换成二维灰度图像,获得了99.05%的准确度。
深度学习方法中,与LSTM相比,CNN具有更快的计算时间和更少的复杂性,由此常使用卷积神经网络中的卷积层和最大池化层来提取节段中的重要信息,使用循环神经网络学习节拍时序上的信息,最后通过一个完全连接层(该层常使用Softmax激活函数)进行分类。Logistic回归类标签取值通常为0或1,Softmax回归是在Logistic回归上的扩展。可根据提取到的不同特征,设计相对应的类标签[30]。在对CNN与LSTM的混合模型文献解读中,CNN常用作特征提取器,LSTM网络用作顺序学习,之后使用完全连接层进行分类[31]。
在对网络模型训练中,通常使用Adam优化器和分类交叉熵函数来优化参数。优化训练结果的方法有:
(1) 添加Dropout层。网络中通常会添加一个Dropout层,可以有效防止由于参数膨胀引起的缓慢梯度下降。Dropout是一种正则化技术[32],旨在训练过程中,网络节点以指定的速率随机丢弃,通过概率地减少同一层的节点来减少层之间的依赖性即通过防止单元彼此过于顺从而显著减少过度拟合。文献[33]通过实验发现,与丢弃 20%的LSTM循环连接和输入连接的单元(方案A)相比,丢弃20%的LSTM循环连接和随后的汇集层的单元(方案B)的模型具有更好的泛化能力。
(2) 使用非线性激活函数:ReLU,Softmax函数。Nair等[34]实验表明使用ReLU可以更快地收敛并提高精度。ReLU函数表示为:f(x)=max(x,0)。
(3) 目标复制和辅助输出。文献[35]的实验表明,目标复制[36]和辅助输出都可提高性能并减少过度拟合。目标复制即为在每个时间步复制目标使得整个序列的分类任务更容易,目标复制不仅仅是正则化,而是通过提高本地目标来减少对远程依赖的程度。辅助输出不及目标复制所带来的性能提升显著,但是其正则化效果更大,原因在于其以缓慢的训练为代价。
(4) 批量标准化(Batch Normalization)。批量标准化的位置通常在激活函数之前和卷积层之后应用。而根据文献[29]的经验,在有些情况下激活功能之后放置标准化层有利于心电图心律失常分类。
(5) 改变训练集和验证集的比例。验证集用于确定模型是否已达到给定训练集的足够精度。如果没有验证程序,模型可能会过度拟合。当训练集和验证集的比例发生改变时,可以改变模型的性能。验证数据集用于调整参数并确定设计模型的最佳单元数。
文献[19]与利用人工选择的特征或从原始信号域学习特征的传统方法不同,Zhang等提出了基于深度卷积神经网络的方法(DCNN),使用傅里叶变换将ECG信号变换到时频域后,设计了一个涉及二维卷积的深度CNN架构。其架构针对特定长度的ECG样本训练特定的DCNN,以端到端的方式从时域学习ECG波信号的特征并进行分类。其将ECG信号变换为二维频谱图作为输入,从频谱图中可以得到信号的时频特征,有更好的分类精度。但是其无法学习过去的决策和特征,导致其分类上需要更精细的可视化分类,否则有些聚类会与其他类混合,影响分类结果。李端等[45]将ECG信号经过小波自适应阈值去噪算法之后,使用20层深度残余卷积网络对5种心电图异常进行分类,分类准确度达到了99%以上。文献[46]提出了具有块结构的10层深度卷积神经网络模型,对所有ECG导联信号单独训练和验证。该模型在检测心肌梗死(Myocardial Infarction)上产生了超过99%的准确度和灵敏度性能,适用于可穿戴设备和重症监护病房。Fan等[47]将DCNN结合多尺度融合技术用于单导联短ECG信号,以此筛查心房颤动。
Acharya等[48]提出了一个11层CNN网络模型,该模型不需要去噪及R峰检测。Teplitzky等[31]使用12层CNN模型用于移动遥测全自动心室异位搏动的分类,其特异性和敏感性达到了99%。文献[49]搭建了34层的卷积神经网络,将29 163个心电样本映射到12种类型分类中,其性能超越了专家的诊断。文献[10]将CNN应用于ECG的特征学习机制上,用于筛查患者的信号,其学习机制能够生成具有鲁棒性的特征而无需专业领域知识和特征选择算法。同时,该文献将CNN与其他标准分类器集成,即K-近邻、SVM和多层感知器(MLP)网络进行比较。实验结果得出CNN在端到端上的性能优于CNN与其他分类器集成所达到的性能。在早期,Kiranyaz等[50]使用平移不变的二元小波变换来提取形态特征,为避免维度灾难现象,使用主成分分析方法进一步减少高维数据空间的冗余信息,其网络在MIT-BIH数据库上实现了99%的准确度。表3为近三年使用卷积神经网络进行心电图分类的文献总结。
表3 基于卷积神经网络的心电图异常分类
Saadatnejad等[53]首先将输入的数字化心电样本分割成心跳,提取RR间隔和小波特征,然后将心电信号和特征输入到两个基于RNN的模型中,对每个心跳分类,然后将两个输出混合到MLP中形成对每一个心跳的最终分类。该算法是轻量级的,可用于连续监测心电分类的个人可穿戴设备中。文献[11]提出了深度双向LSTM的网络模型,其通过对ECG信号分类时组成每个ECG搏动的特征向量和Lyapunov指数并输入到循环神经网络分类器进行分类。文献[54]用于ECG分类的RNN方法,使用人工选择特征和RNN网络作为分类器,核心思想是:从ECG记录中的心跳序列中提取多种特征,用作RNN聚合的输入特征,使用Softmax输出层的多层感知器将各个模型的预测混合到每类分类的F1分数中。RNN训练识别其他心律失常主要集中在心律的突然延长的停顿上,以确定该记录最可能是其他心律失常。表4记录了使用循环神经网络进行心电图分类的文献。
表4 基于循环神经网络的心电图异常分类
与文献[22]类似,文献[55]提出的双向LSTM和CNN展现的功能不同。其根据CNN有利于提取内部形态特征但不利于节拍之间信息的特点,将ECG搏动的形态特征用CNN提取,然后通过双向LSTM考虑每个节拍的特征,最后通过完全连接层进行分类。文献[56]应用了叠加CNN和LSTM网络用于CAD心电信号分类,获得了99.85%的准确度,但其局限于少量数据的高准确度。文献[33]使用七层CNN获得特征映射,随后使用LSTM从特征图中提取时间信息,最后通过完全连接层进行心律失常分类,其没有消除噪音而获得了98.1%的分类精度。由于CNN具有提取局部光谱和空间/时间变化不变的特征的能力,文献[24]提出了两种架构进行比较,其中:第一种架构为24层的CNN,使用线性分类器循环训练;第二种架构是用24层CNN和3层LSTM训练。得出数据增强时,CRNN产生了比CNN更高的总体准确度。表5为部分使用多网络架构进行心电图分类的文献总结。
表5 基于多网络架构的心电图异常分类
通过神经网络诊断心电图的诸多研究中,使用最多的是将卷积神经网络作为特征提取器,将长短期记忆模型用于学习心率节拍信息。大部分经过训练的网络都已经表现出了很好的性能,其中许多研究的精度和特异性都超过了99%,甚至针对特定的心电异常信号其精度能达到100%,超过了人类医生的诊断能力。虽然基于神经网络的心电图分类进展已经发展得较好,但是也存在一些问题需要进一步研究解决:(1) 心电信号预处理方面,对是否需要处理存在一定的争论,比如有的研究表明未处理的信号因为噪声等存在一定的失真,而有的研究表明,通过小波变换等处理后的信号特征会有缺失,不能很好地还原原始信号。(2) 有的网络模型的表现仅限于部分心电信号异常分类,其用于训练和验证的数据集非常专一,没有结合临床数据训练网络而不具备泛化能力。(3) 有的网络虽然能够达到很好的性能,如文献[51]的预测精度已经超过了专家评估,但未给出算法的计算效率。(4) 虽然有的网络其性能已经达到非常高的水平,但是目前为止还不能完全替代医生用于实际操作,进一步的确定仍需医生的专业领域知识。
本文对神经网络在心电图分类的应用进行了全面回顾,重点关注了网络架构,特别是对不同类型的神经网络进行了分类研究。给出了神经网络算法和心电检测步骤的介绍,并对网络应用于分类中的性能指标进行了回顾。研究表明,使用深度学习进行自动分类的性能已经达到了比较高的水平,如准确度和特异性都超过了99%。就其表现而言,可替代传统的手工提取的特征与特定自动分类器结合方法。但是,只考虑准确度等指标还远远不足以支持其在临床上得以应用,在未来需要考虑的是优化网络结构以减少计算或者增强其泛化能力。随着轻便式可穿戴医疗保健系统的发展,平台化、用户可操作性、简约化是未来研究中应考虑的问题。国外已经有研究者在开展平台化研究,文献[60]设计了自动检测心律失常的系统和Android健康云平台。 本文提出一个新的方法:即将文献[61]对心电信号不进行预处理直接用于训练,不破坏信号特征的思想,结合文献[57]的网络架构,可建立一个具有强泛化能力并满足准确度的网络架构。未来,在应用深度学习可以接近资深医生的诊断能力之前,仍有许多工作在等待解决。