基于机器学习的心电自动诊断算法综述
2022-06-18张宁宁马金刚樊昭磊张汉明
张宁宁,马金刚,樊昭磊,张汉明,李 明*
(1.山东中医药大学智能与信息工程学院,济南 250355;2.山东众阳健康科技集团有限公司,济南 250101)
0 引言
目前,我国心血管疾病的患病率不断上升,致死率也居高不下。心血管疾病不仅影响患者的生活质量,也给患者家庭带来长期的经济负担[1]。因此,对心血管疾病的早发现、早治疗成为研究者最关注的问题之一。
心电图(electrocardiogram,ECG)是一种以非侵入方式在人身体表面获取的一维医学信号,反映了心脏跳动过程中心肌细胞的电生理信号变化情况。由于ECG 使用方便、经济有效、安全无害,因此广泛应用于心血管疾病的临床诊断。
临床中,医生需要快速、准确地分析ECG,并给出诊断报告。然而,分析ECG 需要丰富的心电学知识,且十分耗时,长时间的识图工作会使医生产生疲劳,进而导致分析错误。近年来,医疗信息技术的飞速发展促进了远程心电网络的建设[2],大量ECG 数据从基层医疗机构涌入上级医院,加重了上级医院医生的负担。目前,机器学习技术发展迅猛,在医疗领域发挥着巨大的作用,将机器学习技术应用在ECG 自动诊断领域,有助于减少医生工作量,降低医生误诊率。机器学习包括传统的机器学习和目前蓬勃发展的深度学习。传统的机器学习主要关注如何学习一个预测算法。运用传统的机器学习解决问题时,一般需要人工从数据中提取出一组特征,然后将这些特征输入到预测算法中,最后输出预测结果。即传统的机器学习并不能从数据中学习到特征,其往往只能根据已有特征进行预测。而深度学习能够从数据中自动学习到有效的特征。深度学习通过多层的特征转换,从原始数据中学习到更高层次、更抽象的特征,并能够将这些特征输入到预测函数中得到预测结果。由此可见,传统的机器学习无特征学习能力,而深度学习能够从原始数据中自动学习特征,这也是传统机器学习和深度学习的主要区别。运用传统的机器学习算法进行ECG 的自动诊断[3]首先需要医生根据医学知识设计专家特征,然后将这些特征输入到支持向量机(support vector machine,SVM)[4]等传统机器学习算法中对数据进行分析与预测。而深度学习具有强大的数据学习能力,可以自动从数据中获取高层次、抽象特征,自动化程度进一步提高。目前,卷积神经网络(convolutional neural networks,CNN)和循环神经网络(recurrent neural network,RNN)是最主要的深度学习算法,广泛应用于医学图像处理[5-6]、自然语言处理[7-8]领域。
近几年,已有研究人员对ECG 自动诊断进行了综述,如文献[9]从疾病角度分析了ECG 自动诊断的发展,文献[10]综述了智能诊断在ECG 诊断的发展历程,文献[11]介绍了深度学习在ECG 自动诊断方面的研究进展,但这些文献未对传统机器学习在ECG自动诊断方面的研究进行综述。为了弥补上述文献的不足以及更加全面地阐述机器学习在ECG 自动诊断方面的研究情况,本文分别从传统机器学习算法和深度学习算法的角度对ECG 自动诊断方法进行阐述,并对现有研究存在的问题进行讨论,给出解决对策,以期促进ECG 自动诊断早日实现临床应用。
1 传统机器学习在ECG 自动诊断中的应用
传统机器学习算法缺乏自动提取特征的能力,因此在分类前需要进行特征提取。特征提取通常由心内科医生进行,包括标记各个波形的位置、描述波形的形态、计算各个波形的幅值以及心律等。除了心内科医生标记的特征,ECG 特征还包括信号处理算法提取的时域特征、频域特征,这些时域和频域特征为传统机器学习算法提供了更多的分类信息,能够提高分类准确率。分析ECG 信号的传统机器学习算法主要包括SVM 算法、K 近邻(k-nearest neighbor,KNN)算法等,这些算法在推动ECG 自动诊断方面发挥了重要作用。
1.1 SVM 算法
SVM 算法是一种有监督学习算法,在分类任务中表现良好。在ECG 分类任务中,SVM 算法需要与特征提取算法结合使用。Kumari 等[12]将离散小波变换(discrete wavelet transform,DWT)算法与SVM 算法相结合,进行窦性心律、充血性心力衰竭以及心律失常的诊断研究。其首先利用DWT 算法可以根据频率改变窗口大小的特性来平衡时域和频域特征,从信号中提取出190 个特征;然后将这些特征输入到SVM 算法中,以训练分类器;最后利用分类器对窦性心律、充血性心力衰竭以及心律失常3 种类型的ECG信号进行分类,分类准确率达到了95.92%。在ECG信号的分类研究中,Ratnadewi 等[13]则提出了一种新的使用ECG 信号和RR 间期(相邻R 波的时间间隔)的数字图像检测心律失常的算法,首先计算RR 间期,再利用离散余弦变换提取ECG 特征,并计算信号与正常ECG 信号的欧氏距离和曼哈顿距离,最后使用多分类SVM 对RR 间期和欧氏距离或RR 间期和曼哈顿距离进行分类。在分类实验中,ECG 信号类别分为正常、房性早搏、心房扑动、心房颤动4 类,最终分类器对这4 类信号的总的分类准确率为81.9%。
1.2 KNN 算法
KNN 算法是一种主要的传统机器学习算法,既能用于回归任务,又能用于分类任务。与SVM 算法一样,KNN 算法在使用过程中也需要与特征提取算法结合使用。张丹等[14]提出了一种结合了KNN 算法和变分模态分解(variational mode decomposition,VMD)算法的ECG 信号分类算法,在信号预处理时,首先使用VMD 算法将ECG 信号分解为多个模态分量,然后去除包含基线漂移和工频干扰的模态分量,最后重构剩余模态分量得到降噪后的ECG 信号。完成信号预处理工作后,再对所有信号做8 层的VMD,提取信号分解后的模态能量作为分类特征,最后使用KNN 算法对信号进行分类。为了证明所提算法的有效性,其分别使用反向传播(back-propagation,BP)神经网络算法和SVM 算法进行了对比实验。结果表明,KNN 算法的分类准确率优于BP 神经网络算法和SVM 算法。Wannawijit 等[15]在检测异常ECG 研究中引入了Hjorth 参数,并对其进行改进,即在活动性(activity)、移动性(mobility)、复杂度(complexity)的基础上,引入混乱度(chaos)和风险度(hazard),形成高阶Hjorth 参数,然后再将从ECG 信号中提取出的高阶Hjorth 参数作为特征向量输入到KNN 算法中。最终结果表明,基于高阶Hjorth 参数的KNN 算法能够有效识别异常ECG 信号。
传统机器学习算法推动了ECG 自动诊断的发展,在信号类别数量较少的分类任务中获得了较高的准确率,但当信号类别数量较多时分类效果不佳。这是因为传统机器学习算法不能自动提取特征,分类效果较大程度取决于是否提取出有效的分类特征。而深度学习算法拥有强大的特征提取以及分类能力,在ECG 自动分析任务中显示出了良好的应用前景。
2 深度学习在ECG 自动诊断中的应用
深度学习是机器学习的一个重要分支,其有着强大的特征提取与数据处理能力,很多研究人员将其应用到医疗领域,以辅助医务工作人员更好、更快地解决临床问题。相比于传统的机器学习算法,深度学习算法拥有强大的表示学习能力,这使得ECG 自动诊断应用于临床成为可能。当前用于ECG 自动诊断的深度学习算法主要包括CNN、RNN、U 型网络(U-Net)、生成对抗网络(generative adversarial network,GAN)等,本文分别从以上几种算法的角度对深度学习在ECG 自动诊断方面的研究进行综述。
2.1 CNN 算法
CNN 是一种深度前馈神经网络,具有权重共享和局部连接等特性。CNN 通过设置不同尺度的卷积核对数据做卷积运算,从而从数据中提取到不同尺度的特征信息。ECG 是一维信号,研究人员使用一维卷积构造一维卷积神经网络(one-dimensional convolutional neural networks,1-D CNN)算法对ECG 信号进行分类。Kiranyaz 等[16]提出了一个能够快速、准确地对特定患者的ECG 进行分类与检测的1-D CNN算法。为了使该算法对特定患者的ECG 信号具有良好的分类效果,其在公开数据集中加入特定患者ECG记录的前5 min 信号片段,其中患者本身的信号使得算法能够适应特定患者的数据模式,公开数据集使得算法能够学习到未包含在患者数据中的其他心律失常模式。使用这种融合公开数据集和患者自身ECG 信号的数据集训练出的针对特定患者的专用算法,不仅能够对患者的长时间ECG 信号进行分类,还能实现ECG 信号的实时监测。利用该算法基于麻省理工学院-贝斯以色列医院(Massachusetts Institute of Technology-Beth Israel Hospital,MIT-BIH)心律失常数据库进行ECG 信号分类实验,结果显示,与其他用于检测室性异位搏动(ventricular ectopic beat,VEB)和室上性异位搏动(supraventricular ectopic beat,SVEB)的算法相比,该算法具有更好的分类性能。在随后的针对特定患者的ECG 信号分类的研究中,Li 等[17]引入了预训练策略,其首先使用大量单个心跳周期的ECG 数据训练出一个通用卷积神经网络(generic convolutional neural network,GCNN),然后使用包含身份信息的ECG 数据进行微调,得到调整专用卷积神经网络(tuned dedicated convolutional neural network,TDCNN)。为了提高分类的速度及准确率,该研究选用了小尺度卷积核以及更深层次的CNN 架构,其中小卷积核可以提高分类速度,更深层次的CNN 架构能够提取到层次特征,从而提高分类准确率。利用该算法基于MIT-BIH 心律失常数据库进行分类实验,结果显示,TDCNN 可以准确、快速地对VEB 和SVEB进行分类,且TDCNN 较低的计算复杂度使其能够部署在可穿戴设备上,实现对异常心跳的分类及心脏状况的监测。
2.2 RNN 算法
RNN 是一种具有短时存储能力的神经网络,其神经元也可以接收其他神经元的信息,这一特性使得RNN 适合处理ECG 这种时间序列信号。同时,RNN 可以处理长度不同的数据,因此,应用RNN 处理ECG 信号无需担心因为截断或填充信号会导致信息的丢失问题。研究人员经常将RNN 与其他深度学习网络融合,以期达到更好的分类效果。
叶兴扬等[18]提出了一种融合双向长短期记忆(bi-directional long short-term memory,Bi-LSTM)网络和残差网络(residual network,ResNet)的ECG 信号分类算法,其网络结构如图1 所示。其中,ResNet 能够提取并整合ECG 信号的层次特征,Bi-LSTM 网络则用来提取ECG 信号的上下文信息。为了融合这2 种算法,该研究删除了34 层ResNet 的最后一层卷积层之后的全连接层和输出层,然后将Bi-LSTM网络叠加到ResNet 中,这一改变有效提升了算法性能。利用Bi-LSTM+ResNet 算法基于PhysioNet Computing in Cardiology Challenge 2017 数据集进行五折交叉检验,结果显示,其平均F1 值达到0.857 1,优于ResNet、SVM、随机森林等算法。值得注意的是,该研究同时对临床ECG 数据进行实验以验证Bi-LSTM+ResNet 算法的性能,结果显示,平均F1 值为0.885 2,证明了Bi-LSTM+ResNet 算法具有良好的泛化能力。
图1 深度神经网络融合结构[18]
Lih 等[19]融合1-D CNN 与长短期记忆(long shortterm memory,LSTM)网络,并用其进行冠状动脉疾病(coronary artery disease,CAD)、心肌梗死(myocardial infarction,MI)、充血性心力衰竭(congestive heart failure,CHF)的分类研究。该研究设计了一个16 层的CNN-LSTM 算法,算法具体参数见表1,并采用十折交叉验证法选出测试误差最小的算法。最终,CNNLSTM 算法获得了较高的分类准确率、特异度和敏感度,其结果分别为98.51%、97.89%、97.33%,充分证明了CNN-LSTM 算法可对CVD、MI、CHF 3 种疾病进行有效的分类。
表1 CNN-LSTM 算法参数[19]
另外,ECG 的诊断信息并不存在于整条信号序列中,若分类算法拥有关注关键特征的能力,就能够提高分类准确率。Li 等[20]引入注意力机制,提出BiLSTM-Attention 算法,该算法可以提取心跳信号全局序列特征,关注关键特征,并能有效简化特征提取过程。研究结果表明,BiLSTM-Attention 算法可有效提高心跳分类准确率,并拥有更高的可解释性。
2.3 GAN 算法
GAN 由Goodfellow 等[21]提出,包含2 个模块,分别为生成器和判别器,其中生成器根据真实数据生成样本,判别器则用来判断生成器生成的样本为真的概率。为了使生成样本接近于真实样本,需要不断地迭代训练,最终判别器将无法区分真实样本与生成样本。近几年,GAN 在图像领域、自然语言处理领域应用颇多,也有研究人员探索将其应用于ECG 自动分析研究中[22-23]。
由于GAN 算法具有生成样本的能力,研究人员使用GAN 算法进行数据增强,以解决ECG 数据中存在的标签不平衡问题。如Wang 等[22]堆叠多个小内核的一维卷积层构造辅助分类器生成对抗网络(auxiliary classifier generative adversarial network,ACGAN)算法,并用该算法生成数据集中样本数较少的数据。又如Rath 等[23]设计了GAN-LSTM 算法在标签不平衡数据集上进行心脏病的诊断研究。由于数据集中异常数据远少于正常数据,该研究使用GAN 算法生成异常数据,并将生成数据与真实数据共同输入到分类器中训练。最终,利用GAN-LSTM 算法基于德国物理技术研究院(Physikalisch-Technische Bundesanstalt,PTB)诊断数据集进行实验,F1 值高达0.994。
由于类别不平衡问题广泛存在于ECG 数据集中,在无法收集到更多少数类别数据的情况下,GAN算法仍是解决该问题的首选,未来也必将在更多领域发挥更大的作用。
2.4 U-Net 算法
U-Net 算法广泛应用于图像分割领域,其采用了编码器与解码器结构以及跳跃连接结构,能够以少量数据进行训练并实现精准的分割。He 等[24]提出了一种基于U-Net 和Bi-LSTM 的检测QRS 复合波的新算法,先用均值滤波和小波变换滤除噪声,然后将预处理后的信号输入到分类器中。利用该算法基于MIT-BIH 心律失常数据集对QRS 复合波进行识别,准确率达到了98.29%,基于2019 年中国生理信号挑战赛数据集对QRS 复合波进行识别,准确率达到了78.73%,证明了融合U-Net 和Bi-LSTM 的新算法在识别QRS 复合波任务上的有效性。Zhou 等[25]在U-Net 基础上进行改进,提出U-Net++算法,在减少参数量的同时,也保证了图像分割的精度。杨春德等[26]将一维U-Net++算法用于心律不齐信号识别。其在研究中优化U-Net++算法并将其用作深度卷积生成对抗网络(deep convolutional generative adversarial networks,DCGAN)的生成器实现数据扩充,并使用softmax 函数作为算法最后的分类层。实验结果显示,优化的一维U-Net++算法的整体准确率达到了98.10%,比U-Net 算法的准确率高了1.05%,证明了改进的U-Net++算法在ECG 分类任务中的有效性。
3 讨论
近年来,深度学习的迅速发展使得其在众多行业有了较为成功的应用。临床中,深度学习已经用于影像辅助分析、院感预警等场景中。在ECG 自动诊断方面,研究人员不断改进传统机器学习算法和深度学习算法,提高了ECG 自动诊断的准确率。根据上述内容,本文对机器学习在ECG 自动诊断方面的研究加以总结,具体见表2。
表2 本文提到的ECG 诊断算法性能比较
然而,ECG 的自动诊断也面临诸多问题,这些问题阻碍了ECG 自动诊断的临床应用,具体如下:
(1)ECG 数据类别不平衡。ECG 的诊断疾病种类多达数百种,而现有数据集中的疾病标签覆盖面非常小,多数数据集的标签不超过20 种,无法通过这些数据集训练出一个能够覆盖全部或者大多数病种的模型来满足临床需求。针对类别不平衡问题,可通过以下2 种方法来解决:①从医院收集大量临床数据,丰富小样本数据;②以现有数据为基础进行数据增强,如使用GAN 生成小样本数据。
(2)ECG 数据质量问题。一些ECG 数据集存在诊断缺失、信号记录不佳等数据质量问题,但ECG自动诊断算法研究人员缺乏医学知识,难以发现这些问题,从而影响算法性能。建议ECG 自动诊断算法研究人员与心内科医生合作,进行跨学科合作研究,一方面可以弥补医学知识缺乏的问题,另一方面可以了解到临床的实际应用需求,推进该领域临床应用进程。
未来,随着深度学习的进一步发展,以及研究人员在数据收集、模型优化等方面取得更多显著的成果,一定会出现一种病种覆盖全面、准确率高、足以满足临床需求的ECG 自动诊断算法,从而大大地减轻医生负担、提高诊疗效率。
4 结语
从以往的研究中可以看到,尽管机器学习已经成为ECG 自动诊断的主要研究方向,并且有着较高的准确率,但是仍然无法满足实际临床需求,这需要研究人员在未来的工作中收集更多的小样本数据来均衡样本分布。同时,由于单一算法存在局限,融合多种算法并将专家知识引入诊断系统,减少算法局限性对算法整体性能的影响成为ECG 自动诊断的研究热点。相信通过研究人员与医务人员的共同努力,未来必会实现ECG 自动诊断的临床应用。