1. 引言
根据国家心血管病中心2021年发布的中国心血管健康与疾病年报显示,我国目前心血管疾病患者达到3.3亿,心血管疾病已经成为我国慢性病的“主力军”,严重危害国民健康安全,我国2019年农村、城市心血管病分别占死因的46.74%和44.26%,并且呈年轻化趋势。在诊断心血管疾病过程中,如何预防与诊断有高致死率心血管疾病一直是研究热点。无论心血管疾病的病灶在哪,首先伴随的就是心律失常等问题,最常用的诊断心率失常问题的方法是观察十二导联心电图,来判断波形是否正常,根据心率失常的程度来诊断心血管疾病。在人工智能还未快速发展之前,人工观察是最常用的诊断方式,但由于此方法太过依赖医生个人,诊断水平与个人经验一直是人工方法效率与准确率较低的不稳定因素。在机器学习的发展过程中,对数据进行分析准确率高、效率高的优点使得传统机器学习方法在各领域中都有相当优秀的表现,在心电数据分类任务中也成为了研究热点。目前使用较多的机器学习方法有支持向量机、决策树、随机森林等。Bensaid A M [1] 等人利用ID3诱导的决策树进行分类,达到了73%的准确率;Li [2] 等人使用小波包信息熵、随机森林算法对心电信号五分类,达到了94.61%的准确率;方红帏 [3] 等人利用基于网格状的支持向量机(support vector machine, SVM)分类方法对ECG信号进行分类,最终得到98.01%的准确率。
伴随着深度学习的发展,受传统机器学习过程繁琐、耗费时间的弊端限制,神经网络模型在医学领域的应用也愈发频繁,许诗雨 [4] 等人使用不平衡ECG信号分类的嵌套长短时记忆网络(NLSTM)模型,在MIT-BIHAR数据库上达到了98.34%的准确率;杨德春 [5] 等人将改进的深度卷积生成对抗网络用于数据扩充,将优化的U-Net++用于心电信号识别,最终得到了98.1%的准确率;Zhang [6] 等人使用卷积和长短期记忆网络设计了一个复杂的深度学习网络,最终得到分类准确率达到98.8%。
使用传统神经网络处理多导联心电信号数据时,大多数利用卷积神经网络或者是循环神经网络,其基本目标是为了先提取输入心电信号的特征,然后再进行分类任务。相比于传统机器学习算法,模型复杂性更小且更容易扩展 [7] ,Transformer网络更加注重时间序列数据的连续性,能够更好地捕捉到数据隐藏的深层特征 [8] ,本文后续对比实验所选传统神经网络模型均为基础模型,直接对心电信号数据进行分类,不做其它复杂处理。
本文结合孪生网络对分类器进行改进,在数据选取方面:大多数心电信号数据集都需要进行小波滤噪进行预处理,加大了计算量,也使得数据集使用步骤繁琐,针对此问题,我们使用PTB-XL数据集,该数据集有清晰的心电信号图像进行分类,采集群体分布比较均匀,避免了由不稳定因素导致分类适用性差的缺点;在模型建立方面:结合对比学习的方法,在传统网络基础上利用孪生网络架构建立分类器,提高了模型对输入数据标签的利用率同时缓解了不同类型标签数量不平衡的问题;在模型训练方面:对模型进行预训练,将所得权重转移到二分类任务中进行评估,提高了最终分类器的特征提取能力以及分类的准确率。
2. 数据
2.1. 心电信号
心电图(electrocardiogram, ECG)以时间为单位记录心脏的电生理活动,心电信号通过接触皮肤的电极采集并记录。将所采集的心电信号可视化之后可得到具有规律的波形。心电图的种类通常以导联来区分,临床最常见的是12导联心电图。临床诊断时,心脏专家可根据心电图对患者进行诊断,根据每个导联的波形表现进行分析。如图1所示,如果个体心脏发生病变,其心电波形也将发生改变 [9] 。随着深度学习在医学领域的不断发展,其在心电图识别方面的应用也越来越广泛 [10] ,本文基于12导联心电信号展开研究,对于心电信号来说其具有空间和时间两种特征,心电图可以反应心脏跳动的节律,是检查和诊断异常心脏节律最好的方法,在心肌梗死(MI)的诊断中可以特异性地分辨出心肌梗死的区域。下图为正常心电波形,心肌梗死发病后,在较早期均可出现ST段抬高、异常Q波、冠状T波等特征性心电图的变化。
2.2. 数据预处理
本次实验数据选择的是PTB-XL心电数据库 [11] (Versions 1.0.2)的数据,该数据集包括来自18,869名患者的21,801份10秒长的12导联心电图记录。其中男性占52%,女性占48%,年龄范围从0到95岁(中位数62岁,四分位间距22岁)。该数据集的价值来自于对许多不同并发病理的全面收集,也来自于大量的健康对照样本。数据集内心电信号来自各个年龄段的人,使得实验更具有可靠性。
PTB-XL数据集内每个数据样例包含专家诊断结果以及该心电信号被采样人的其他健康指标,专家诊断结果以SCP-ECG标准 [12] 呈现,涵盖诊断形式和节律语句,数据集官方提供了可直接进行实验的样例,我们在原有基础上对数据进行筛选,这里选择采样率为100的数据进行后续实验,根据诊断标准筛选出诊断正常心电信号数据和心肌梗死心电信号数据,如表1所示。为加快模型收敛速度减小实验误差,在进行模型训练是对筛选后心电数据做标准化处理。数据集所得心电波形如图2所示(选取部分频率区间进行展示)。
Figure 2. Waveform reading ECG data set
图2. 读取心电数据集波形
经过筛选得到正常心电信号和心肌梗死心电数据之后进行数据集的划分,对于本次实验中的传统神经网络直接使用经过筛选的数据,利用scikit-learn工具包进行划分,测试集占比为30%并设置测试集做随机打乱处理。
对于孪生神经网络,利用筛选后数据生成“数据对”,对于每一条心电信号数据都在剩下的数据中随机选择一个与之相同类型的心电信号作为正样本,随机选择与之类型不同的心电信号作为负样本,经过配对合并后所得新样本送入孪生神经网络,数据对生成图3所示:
3. 模型方法
3.1. 孪生网络架构
孪生网络 [13] 架构由Bromley J等提出应用于验证手写数字识别。网络结构由两个结构相同的子网络组成,输入通过两个子网络提取特征并根据提取所得的特征向量之间的距离更新权重参数。孪生网络的两个子网络拥有共同的权重和偏置项,网络进行训练时,两个子网络的权重参数是同时更新的。将孪生网络与时间序列的相似度结合起来能够更好地进行时间序列相似度的度量 [14] ,结合卷积神经网络等特征提取结构先对序列基本特征进行提取,提高了相似度计算的精确度 [15] ,再结合进行对比,充分利用了标签信息。
将原始心电数据匹配之后的心电信号数据对输入网络,经过子网络的前向传播处理,提取原始输入数据的特征。提取特征之后通过计算子网络特征向量的距离来得出样本对中两个心电信号样本的相似度,相似度计算结构如图4所示。
Figure 4. Feature similarity calculation
图4. 特征相似度计算
孪生网络的这一特殊结构使其相比于其他网络更有优势,由于两个子网络完全共享权值和偏置,因此孪生网络能够很好地处理心电信号的时间序列数据并且从中挖掘隐藏的规律与特征。其次模型整体具有良好的鲁棒性,即使输入心电信号存在噪声,网络仍然能够根据相似度准确进行分类。在训练过程中两个子网络相互协作,共同提升模型的特征提取能力,使得模型训练过程更快更有效。对于新数据的输入也能够很好地适应,模型具有较强的泛化能力。两个子网络能够从不同的角度提取心电数据的特征从而捕捉心电数据的内在关系。
3.2. 对比损失
对比损失 [16] 由Hadsell R等人提出,本文所使用孪生网络结构利用对比损失函数对子网络进行参数更新。我们需要对生成的数据对进行判断,两个心电信号是否为同一类,如果是同一类则认为两个心电信号是相似的否则是不同的,这里的相似度对应数据对生成时设置的标签,越靠近1则越相似。我们通过特征提取网络来对输入的心电信号进行特征提取得到特征向量,计算特征向量之间的欧氏距离,如果距离很小则很可能就是同一类心电信号。
对于未分类的数据样本,我们需要减小类内距离,增大类间距离,在心电分类的任务下,我们需要确保最大类内距离小于最小类间距离,这就需要定义一个边距margin,所有正常心电样本应该落入这个margin半径之内,而异常数据则在外面。对于新数据的判断就有了margin作为标准,如果新样本与其他数据的距离在margin之内则为同一类。对比损失函数公式如下m即式(1)中margin。Dw是2个数据之间的相似性度量,此处的Y指定两个给定数据点(
和
)是相似的(Y = 0)还是不相似的(Y = 1)。
(1)
由上述公式,如果
则对模型进行惩罚,如果
则
为负,此时取0即可,这意味着对于不同类数据不强制其距离更远,同类样本的相似度越大越好,不同类样本的相似度越小越好。利用对比损失使正常心电信号与异常心电信号进行分离,从而提高特征质量和下游任务性能 [17] 。
3.3. 1D CNN-LSTM
通过深度卷积神经网络对心电信号进行分类节约了识别成本,降低了观察者之间产生差异的概率 [18] 。利用组合模型对心电信号进行分类,通过对1D-CNN和LSTM组合模型得到心电信号分类器 [19] ,更高效的捕获心电信号的局部特征和时间动态,对于心电信号的特征提取具有良好的优越性。在此模型基础上进行重新设计,由于选取的心电信号的采样率为100,根据采样率缩小Dropout层的占比,同时引入批标准化层,防止出现过拟合现象,减少LSTM层的输出数量。将改进后的网络作为孪生网络的子网络,预训练得到权重参数之后应用于下游任务。
3.4. 神经网络实现
本文实现的孪生网络架构主要分为特征提取、相似度计算以及下游任务三个模块,分类器整体框架如下图5。样本对通过Embedding Network编码得到特征向量,再通过相似度计算来更新孪生网络的子网络权重。进行下游任务时,将预训练好的特征提取网络拼接全连接层得到最终心电信号分类器。
设计Embedding Network结构时考虑到同时提取空间特征和时间特征,为结合模型优点,将1D-CNN与LSTM进行组合,先利用多个卷积层对输入进行空间特征提取,然后利用LSTM提取时间特征,通过融合模型与孪生网络架构相结合得到Siam-CNN-LSTM模型。首先经过一个卷积层,然后经过批标准化层,破坏输入的数据分布,缓解过拟合,防止每批数据中某一样本经常被挑到。再经过一个最大池化层,在保留主要特征的同时减少模型计算量,接着送入第二个卷积层进行特征提取。防止模型出现过拟合或梯度消失问题,添加一个平均池化层和两个全连接层并进行残差连接,对上层输出再次进行批标准化,经过最大池化层降维,然后通过第三个卷积层进行特征提取,经过第二个残差连接结构,通过三个卷积层提取更全局的特征,再通过LSTM层对时间特征进行提取,最后送入MLP,并添加Dropout层防止过拟合,最后一层使用softmax激活函数输出特征向量,除了最后一层其余各个卷积层和全连接层均使用Relu激活函数作为神经元。
得到特征向量之后使用前面所提到的对比损失来对孪生网络的权值进行更新,使得子网络具有更精确的特征提取能力,同时使用预训练模型提高模型的鲁棒性 [20] 。进行下游任务时直接冻结子网络所得权重参数并将子网络拼接一个全连接层得到分类器,对于二分类问题,最后输出层使用Sigmoid激活函数,此时使用单个心电信号数据对新拼接的全连接层进行训练,得到最终的心电信号分类器,网络结构如图6所示。
4. 实验
4.1. 实验设置
本文实验平台为Intel Xeon Gold 6134服务器,操作系统为CentOS7。使用Tensorflow深度学习框架进行模型搭建。除了前文所述Siam-CNN-LSTM模型之外,还选取了传统神经网络1D-CNN,LSTM,RNN,作为对比实验。
训练传统网络模型时直接将预处理之后心电数据送入网络模型,使用Adam优化器并设置学习率为0.0001,batch_size大小为64,epoch为100,训练过程中如果模型在10个epoch内没有明显提升就停止当前训练。训练孪生网络时首先对特征提取模块进行预训练,利用匹配好的数据对进行预训练,设置batch_size为64,epochs为100使用Adam优化器并设置学习率为0.0001,选择对比损失作为损失函数,设置模型超参数margin为1.6,如果模型在10个epoch内没有明显提升就停止训练,冻结模型权重,设置子网络参数不可训练,在子网络的基础上拼接批标准化层和全连接层进行最终分类,训练时其余参数保持不变。
4.2. 评价指标
本次实验各模型使用同一数据集并在相同实验环境下进行实验,模型使用相同的超参数,改变单一变量,仅使用不同的网络模型进行实验,将训练好的模型保存,最后汇总时重新加载在测试集上进行实验评估,选取以下指标进行模型的评价。
混淆矩阵:根据二分类任务,混淆矩阵由两个维度构成,样本实际标签和模型预测标签,两个维度交织形成四种可能情况如表2所示。
准确率,表示所有预测正确的数据在总数据中的占比:
(2)
Precision,在所有预测为正样本的数据中有多少实际为正,表示实际被预测正确的心电信号:
(3)
召回率,实际为正的样本中有多少被预测为正,原本正常的心电信号,多少被预测为正:
(4)
F1-score,兼顾准确率和召回率,用来衡量二分类模型精确度:
(5)
AUC用于衡量分类器优劣的一种性能指标,其中P为正样本数量,N为负样本数量pi为正样本预测得分nj为负样本预测得分:
(6)
灵敏度,即真阳性率,衡量模型发现病人的能力:
(7)
假阳性,指当真实情况未患病时诊断试验结果为阳性,对应模型误诊率:
(8)
假阴性,指当真实情况为患病时诊断试验结果为阴性,对应模型漏诊率:
(9)
4.3. 实验结果
利用上述评价指标对心电信号分类模型进行评价,漏诊率和误诊率越低模型越稳定,其余指标越高越好。对比实验单独使用传统模型对心电信号进行分类,基于孪生网络架构的分类器准确率与模型可靠性均高于传统模型。
对于测试集两类心电类型分类结果的准确率、精确率、召回率F1值、AUC值灵敏度、假阳性和假阴性率指标如表3所列,两种孪生网络模型在测试集上准确率达到96.55%,高于对比实验中的传统神经网络,同时Siam-CNN-LSTM的召回率为93.08%,AUC值为95.54%均为最高,假阳性率6.91%,低于其它模型。就模型灵敏度而言添加孪生网络架构的模型表现较优,这说明以孪生网络架构为基础的模型从真实数据中获取重要信息的能力更强,由于孪生网络模型是根据所提取特征相似度进行分类,从而使得模型与传统模型相比较能够达到更高的精度。
根据实验结果得到PR曲线与ROC曲线,图7和图8展示,根据ROC曲线可得使用卷积神经网络能够更好地处理心电信号数据并捕捉相关波形特征,传统神经网络结合孪生网络结构后得到的模型稳定性优于传统网络模型,特征提取网络经过时间提取与空间提取相结合使得分类器的分类能力有所提高,模型鲁棒性和稳定性得到提升。
5. 结论
采用孪生网络结构提高了模型的准确率,训练网络时使用数据对进行相似度比较能够更好地发挥数据本身的优势,平衡了不同种类数据的数量差异,突破了传统分类网络所使用的损失函数对模型的局限性,心电数据的自身特征能够更好地被利用,降低了分类的错误率。针对心电信号数据的特点,在卷积层之后结合LSTM网络,更好地提取心电信号的时空特性,进一步增强了子网络的特征提取能力,在智能诊断和大数据的背景下,本文所提出的模型能够更好地利用大量正常心电信号数据,更高效地对心电信号完成分类,相比于传统网络模型具有更好的实用性。
对于孪生网络架构,数据预处理时进行数据匹配生成数据对,增加了样本的数量,可进一步将该网络应用于对于小批量样本的研究中,研究在数据不足或数据量较少的情况下其分类能力。在数据同等的条件下研究模型,对比学习的能力。