1. 引言
心电图(ECG)是一种有效的无创、低成本的心血管体外监测工具,它可以通过检测和记录心脏电信号活动来诊断一系列的心脏疾病。然而,由于心电信号的形态和时间特征在不同身体状况下的不同患者中存在明显的差异,因此心电信号的分类是一个难题。此外,两种不同的疾病在心电图信号上可能具有大致相同的性质。同时,在整个ECG分析过程中,由于医生的疲劳和心电信号诊断需要深入的知识,可能会出现一些不可避免的个人错误,从而给患者带来无法预料的误诊后果。因此,ECG自动分类已经被广泛应用于临床医学实践中。
ECG自动分类可以将ECG信号分类到不同的心律失常类别中。在临床实践中,已经提出了许多机器学习方法,包括决策树 [1] 、随机森林 [2] 和支持向量机 [3] 。在这些方法中,需要数据预处理和手动特征提取来从原始信号中获得各种特征。近年来,随着深度学习技术的发展和广泛应用,卷积神经网络(CNN)和循环神经网络(RNN)等端到端的深度学习模型已被用于从原始信号中提取高水平特征来实现ECG诊断。Rajpurkar等人 [4] 设计了一种深度卷积神经网络使用91,232个单导联心电图进行12种心律失常的分类。Xiong等人 [5] 通过使用短时傅里叶变换(STFT)来转换ECG信号,将其表示为频谱图,并结合CNN模型实现准确的心律失常分类。Gao等人 [6] 使用长短期记忆(LSTM)网络在非平衡的ECG数据集上检测心律失常,利用LSTM捕捉心电信号的长期依赖关系,模型能够准确地识别心律失常的存在并进行分类。
然而,在以前的大部分工作中,ECG诊断被视为单一标签分类,它们忽略了在临床实践中同一个患者多种心律失常并发的可能性。这意味着一个心电信号记录中可能出现多个心律失常,这使得心律失常的自动诊断具有挑战性。例如,“心房颤动”和“右束支传导阻滞”通常同时出现,但“正常”和“右束支传导阻滞”很少同时出现 [7] 。Ran等人 [7] 认为不同类型的心律失常之间可能存在相关性,采用标签关联性嵌入技术,引导网络在训练过程中学习到更准确的标签表示。Ge等人 [8] 引入了包含通道注意力的SE模块。该模块通过学习特征通道之间的相关性来增强对重要特征的关注,并减少对不相关特征的依赖。Natarajan等人 [9] 提出了一种用于多导联心电图分类的无卷积的纯Transformer方法,由多个自注意力模块和全连接层组成,通过学习波形之间的关联和重要特征,实现ECG分类任务。为了能够解决多标签分类任务带来的类别不均衡挑战,我们提出了一种基于多种注意力机制的一维卷积神经网络仿真模型,本文的主要贡献如下:
1) 对于多标签任务的长尾分布现象,对原始多标签样本适当地进行Synthetic minority over-sampling technique (SMOTE) [10] 重采样技术以平衡数据集。
2) 采用通道–空间交叉注意力机制(CSCA),结合Transformer中的全局稀疏多头自注意力,充分利用心电信号不同通道和空间位置之间的相关性的同时融入全局信息,提高分类仿真模型对与心律失常有关特征的关注程度。
3) 在计算不同类别的加权损失时嵌入标签相关性信息矩阵,提高模型在误分类情况下的惩罚权重。
2. 数据集与仿真模型
2.1. 数据集
我们选择了两个目前心律失常分类任务中最常用的多标签数据集来验证我们的模型能否在一条心电记录上识别多种心律失常类型。CPSC2018 [11] 是2018年中国生理信号挑战赛提供的官方数据集。该数据集由11家医院收集而来,官方公开的训练集中包含了6877条记录,其中男性3699条,女性3178条。信号的采样频率为500 Hz,每条记录包含标准12导联。由于各条记录不等长,最短的有6 s,最长的达到了144 s。通过简单的数据处理,将不足10秒的记录复制该记录扩充到10秒,超出10秒的记录截取前10秒,以此得到相同维度的实验数据。PTB-XL [12] 心电图数据集是来自18,885名患者的21,837个临床12导联心电图的大型数据集,其中52%为男性,48%为女性。采样频率为500 Hz,长度为10秒,每条记录包含标准12导联。两个数据集均按照8:1:1的比例随机划分为训练集、验证集和测试集。
由于多标签数据集中普遍存在类别样本数不均衡现象,常见的几个多数类别高频出现,而更多的低频类别罕见于样本中。这将导致模型倾向于将低频类别误分类为高频类别,进而影响模型性能。为了缓解数据集长尾分布带来的消极影响,我们在上述两个ECG多标签数据集上采用SMOTE重采样技术,对含有低频类别的样本进行过采样,对含有高频类别的样本进行欠采样。
图1展示了以CPSC2018数据集为例,重采样前后第一个标签对应的9种不同心律失常类型的样本数。临床上,一条ECG数据可能同时包含低频和高频类别的心律失常,因此经过重采样之后的数据集类别分布只能达到一个相对平衡的状态。
2.2. 损失函数
上述的两个公开数据集经过简单的预处理用于作为网络的输入,通过导联采集到的ECG信号可视为时间序列,因此在训练过程中模型的输入可以表示为
,其中n表示训练集包含n条ECG记录,
表示训练集中的第i条ECG记录。输入还包含用于表示心律失常信息的标签矩阵
,
表示训练集中的第i条ECG记录对应的标签信息,其维度为
,向量中每个数值均为1或0,这将引导模型学习不同心律失常类型的特征。在模型训练的过程中,通过最小化二分类交叉熵损失函数的值来矫正模型,使预测结果逐步趋向于标签。通过调整损失函数中不同类别的权重来平衡样本不同类别的贡献,调整权重之后的损失函数如公式(1)所示:
(1)
其中,n代表ECG记录数量,q为类别数量,
为类别c的标签,
为类别c的模型预测概率。
为类别c的权重,计算方法如公式(2)所示:
Figure 1. Class distribution before and after resampling
图1. 重采样前后的数据集类别分布
(2)
在此基础上,考虑到临床上对于不同类别的心律失常错误分类的代价不同。由于人为给定误分类代价矩阵需要较高的临床经验,本文设计了一种误分类代价计算方法。在计算模型对每个样本全部类别的分类损失基础上,增加了一项误分类惩罚系数
,使模型提高了误分类代价较高时的分类性能。该计算方法先将包含每个类别one-hot形式的标签矩阵A乘以可训练的高维嵌入矩阵B,得到包含每个类别高维向量矩阵标签C,用余弦相似度来衡量这些向量之间的相似性。计算方法如公式(3)所示:
(3)
其中,
和
分别代表矩阵C的第i行和第j行向量,
表示向量点积,
表示向量的范数。
定义误分类惩罚系数的计算方式如公式(4)所示:
(4)
其中,N表示预测结果与真实标签不一致的标签对数量,
为可训练的权重矩阵。
总损失函数的计算方式如公式(5)所示:
(5)
2.3. 仿真网络模型
2.3.1. 网络整体结构
本文提出了一种涵盖多种注意力机制的一维卷积神经网络,如图2所示,网络主体包含四个阶段(S0~S3)。
Figure 2. Overall structure of the network
图2. 网络整体结构图
12导联的ECG信号首先在S0阶段的三个分支分别使用1 × 3的一维卷积、平均池化和最大池化进行下采样为原始特征的一半,并使用1 × 3的一维卷积在仅改变通道数的基础上进一步提取特征;S1~S3阶段使用相同结构的Max-attention ViT模块,堆叠的次数分别为1、1、2,包含CSCA-Conv、Window-Attention和Grid-Attention三个模块。假设x是CSCA-Conv模块的输入特征,为简单起见,省略了归一化层和激活层,计算公式如公式(6)所示:
(6)
其中,
和
表示在两条支路上分别使用一维平均池化和深度可分离卷积下采样一半,并使用1 × 1的一维卷积进行通道数翻倍,
表示通道–空间交叉注意力机制。
S3阶段输出的特征展平后输入全连接层,最终经过Sigmoid函数输出每个类别的分类结果。
2.3.2. 注意力模块
受到Tu等人 [13] 的启发,本文提出的Max-attention ViT模块涵盖三种注意力机制。在CSCA-Conv模块中,采用通道–空间交叉注意力机制(CSCA),如图3所示,空间注意力 [14] 和通道注意力 [15] 作为一种局部的应用,可以分别在空间维度和通道维度上学习输入图像中不同位置以及不同通道之间的重要性。
Figure 3. Overall structure of the network
图3. 网络整体结构图
其中,
表示向量按元素乘积,
表示向量按元素相加,将输入CSCA模块的特征图设置为
,经过上面的分支之后变为
,如公式(7)所示:
(7)
相应的,输入的特征图经过下面的分支之后变为
,如公式(8)所示:
(8)
其中,通道注意力的通道放缩比例为12:1。输入特征在经过两个分支后得到的
和
在对应位置上进行元素相加得到进行通道注意力和空间注意力计算的高级特征,这将有利于模型学习ECG记录中的不同心律失常类别的有效信息。
借鉴Transformer结构的多头自注意力机制,在Window-Attention模块中,使用含有局部多头自注意力的Window-SA模块来降低计算复杂度的同时允许模型捕捉不同位置之间的长距离依赖关系。如图4所示,窗口自注意力将CSCA模块输出的特征图在空间维度上划分为多个不重叠的窗口,计算每个窗口中特征向量之间的局部相关性,提取更深层的局部特征信息,然后将特征图恢复为原始维度。
将输入Window-Attention模块的特征图设置为
,计算公式如公式(9)所示:
(9)
其中,
为包含线性层、激活层和
层的多层感知器,
的多头自注意力计算如公式(10)所示:
(10)
其中,
分别为查询矩阵、键矩阵和值矩阵,
为输入向量的维度,
为相对位置偏置矩阵。
Figure 4. Window-Attention module structure diagram
图4. Window-Attention模块结构图
不同于Window-Attention的局部多头自注意力,在Grid-Attention模块中,采用全局稀疏自注意力的策略,使用Grid-SA模块在降低计算复杂度的同时允许模型捕捉全局不同位置之间的依赖关系。如图5所示,网格注意力在划分为多个不重叠的窗口的基础上,将不同窗口的特征向量合并到同一个网格中计算特征向量之间的全局相关性,提取更深层的全局特征信息,然后将特征图恢复为原始维度。
Figure 5. Grid-Attention module structure diagram
图5. Grid-Attention模块结构图
将输入Grid-Attention模块的特征图设置为
,计算公式如公式(11)所示:
(11)
3. 实验结果与分析
3.1. 实验设置
本文实验是在一台配备6G内存的NVIDIA GeForce 3060LaptopGPU显卡上进行的,该模型使用Pytorch框架搭建。在训练过程中,采用随机梯度下降(SGD)算法来优化模型,初始动量为0.9,epoch设置为150,batch size设置为8,随着训练的轮数增加,学习率从初始的0.1逐渐降低到0.001,将网络中全连接层之前的dropout层的数值设置为0.5。通过上述超参数的组合,模型达到了最佳分类性能。
3.2. 评估指标
本文实验使用macro-F1、准确率(Accuracy)、精确率(Precision)、召回率(Recall)和汉明损失(Hamming Loss)来作为评估仿真模型在多标签ECG分类任务中的评估指标,计算公式如下所示:
(12)
(13)
(14)
(15)
(16)
其中,
和
分别代表样本总数和每个样本的类别数,
和
分别表示第
个样本中第
个类别的真实值和预测值,
代表真阳性,
代表假阳性,
代表真阴性,
代表假阴性。除此以外,与参考文献 [16] 一致,AUC(ROC曲线下的面积)也被用于评估仿真模型在PTB-XL数据集上的性能。
3.3. CPSC2018数据集实验结果
本文在公开的CPSC2018多标签数据集上评估我们的模型分类性能,使用训练好的模型在测试集上进行分类并计算各项评估指标。使用上述5个评估指标对比了近几年在该数据集上多标签分类性能排名靠前的一些研究方法,具体内容如表1所示。其中部分研究中仅有以macro-F1为主的个别指标,macro-F1指标是衡量ECG多标签分类的主要指标,因此本文主要以此为标准进行对比。参考文献 [7] 汇总了包括其提出的LCEGNet在内的7种网络结构的性能指标,相比之下,本文提出的涵盖多种注意力机制的一维卷积神经网络模型在macro-F1指标上提升了6.46%~15.63%。Ge et al. [8] 的网络结构中同样使用注意力模块,但所使用的数据集在预处理过程中,不同于大部分研究使用的是10秒的心电记录,其使用60秒的心电序列作为模型的输入,这意味着模型能够学习的特征更多,为此我们使用其方法在10秒输入数据集上进行实验,macro-F1指标最终为0.813,下降了1.5%。Chen et al. [17] 作为CPSC2018比赛中的第一名,分别针对九类心律失常类型训练出最优模型,通过结合多个基本模型的预测结果,以实现更好的性能表现。相比之下,我们的模型在简单高效的基础上macro-F1提升了0.43%,其余指标也比表格中的研究方法在不同程度上有所提高,证明了我们的方法更适合用于ECG的多标签分类任务。
本文提出的仿真模型在CPSC2018测试集上计算并绘制了多标签混淆矩阵,如图6所示,展示了模型在不同类别上的正确分类和误分类情况,颜色越深表示程度越高。
Table 1. The comparison of different models on the CPSC2018
表1. CPSC2018数据集上不同模型的性能对比
Figure 6. The confusion matrix on the test set of the CPSC2018
图6. CPSC2018测试集上的混淆矩阵
3.4. PTB-XL数据集实验结果
为了验证模型的泛化能力,我们在第二个公开的数据集PTB-XL上评估模型的分类性能。数据集具有5个超类、23个子类和44个诊断类,由于在23个子类和44个诊断类分类标准下,少部分类别的样本数极少,现有的不均衡处理技术效果不显著。为了减轻类别不均衡的影响,本次实验仅在5个超类上进行模型的训练和测试性能,并将其与现有研究进行对比,如表2所示。除Precision以外,在其余几个主要指标上均高于现有研究方法,充分说明本文提出的方法在多个数据集上具有良好的泛化性和分类性能。
Table 2. The comparison of different models on the PTB-XL
表2. PTB-XL数据集上不同模型的性能对比
3.5. 消融实验
为了验证仿真模型中S1~S3阶段使用的多种注意力机制的有效性,以CPSC2018数据集为例,进行了一系列消融实验,具体内容如表3所示。首先,将Max-attention ViT模块中三种注意力机制均替换为提出的CSCA,将其与现有研究中的几种注意力机制在同一模型结构下进行实验对比;其次,将Max-attention ViT模块中最后两个注意力机制分别全部替换为Window-Attention和Grid-Attention;最后,将Max-attention ViT模块中最后两个注意力机制分别依次替换为Window-Attention和Grid-Attention,即图2所示的模型结构,达到了最佳分类性能。
Table 3. Ablation experiments on different attention mechanisms
表3. 不同注意力机制的消融实验
4. 结束语
为了能够在多标签ECG自动分类任务中精准分类出多种心律失常,本文提出了一种涵盖多种注意力机制的一维卷积神经网络仿真模型。使用到的数据集包括CPSC2018和PTB-XL两个公开的多标签数据集,针对多标签任务普遍存在的数据集长尾分布现象,在数据处理层面,对原始数据集的样本适当地进行SMOTE重采样技术以平衡数据集;在算法优化层面,在计算不同类别的加权损失时嵌入标签相关性信息矩阵,提高模型在误分类情况下的惩罚权重,引导模型正确分类。除此以外,在网络结构中添加了三种不同的注意力机制,使得模型同时加强对局部信息和全局信息的感知学习能力,能够学习到与不同类别相关的高级特征,达到精准分类的目的。未来的研究工作将考虑调整网络结构和参数设置,有望进一步提升心律失常识别领域的性能,并为实践提供更多有针对性的方法和指导。
基金项目
本文由国防基础研究计划项目(JCKY2019413D001)、上海理工大学医学工程交叉项目(10-21-302-413)、上海市自然科学基金项目(19ZR1436000)部分资助。