李逸群,谷雪莲,孙毅勇
(1.上海理工大学 医疗器械与食品学院,上海 200093;2.上海微创电生理医疗科技股份有限公司,上海 201318)
房颤(Atrial Fibrillation,AF)是一种常见的心律失常疾病,容易诱发心力衰竭、脑卒中、心肌梗死等疾病,导致较高的致残率和死亡率,危害人类健康与生命安全[1]。对于一些发作时长较短或无症状的阵发性心律失常,传统心电监护设备不易捕捉,致使临床诊断较为困难、漏诊率增加[2]。单导联心电仪作为一种模拟人体胸导联动态实时监测心电信号的装置,相比传统的心电图机,具有长时记录连续采集、易操控、易佩戴、可提供异常心电回放等功能,因此使用单导心电记录仪检测阵发性房颤具有重要的临床意义。
房颤发作时,心电图表现为不规则的RR 间期,P 波消失,代之为F 波。经典检测方法主要通过RR 间期分析[3],时域法或频域法分析P 波形态[4-5]。Steven 等[6]通过期望最大化算法构造P 波高斯混合模型以判断P 波消失,其灵敏度、特异性分别为98.09%、91.66%;Du 等[7]使用QT 间期中RR 间期差、F 波均值、标准差作为特征来检测,其灵敏度、阳性精确率、准确率分别为94.13%、98.69%、93.67%;Lian等[8]通过RR 间期和两个相邻RR 间期差为特征构造平面直角坐标系,每条数据划分为包含32、64、128 个RR 间期的连续时间窗口,并对每个窗口进行AF 检测,其灵敏度、特异性分别为95.90%、95.40%;孟丹阳等[9]先利用信息熵和连续小波变换筛选出奇异波形并识别出R 波,然后构建BP神经网络将其时域特征作为训练数据用于阵发性房颤识别,最终使用AFDB 数据库进行验证,其灵敏度、特异性、准确率分别为96.45%、95.03%、96.05%;魏晓玲等[10]提取心房信号的递归矩阵和两个相邻信号的相干谱作为特征,利用多特征融合与卷积神经网络结合的方法来识别房颤,最终使用MIT-BIH 数据库进行验证,其灵敏度、特异性、准确率分别为99.88%、91.36%、95.62%。这些方法主要依赖人工提取特征,其过程可能丢失重要信息,从而难以反应数据的内在属性导致算法性能下降,无法适用于庞大的群体。同时,人工特征提取计算代价较大,不利于临床实时检测。
近年来基于深度学习技术的模型可自动挖掘数据间的关联信息并学习有效特征,在语音识别、图像分类、文本翻译等领域表现出色。Liman 等[11]设计两个独立的神经网络,分别从ECG 和心率中提取相关特征,最终合并至递归神经网络用于描述相关序列,然后通过支持向量机(SVM)进行最终决策,其灵敏度、特异性分别为72.30%、98.70%;Hong 等[12]利用谱聚类算法构造中心波并提取相关特征,结合13 层深度残差网络用于房颤检测,使用数据为2017 计算心脏会议(Computing in Cardiology,CinC)提供,其中官方F1 分值为0.84;高硕等[13]利用卷积神经网络自动提取心电特征,通过投票法和学习法的集成策略识别房颤,最终使用中国心血管病数据库进行验证,准确率为94.60%。高鲁棒性模型依赖于大量的数据,而实际采集的数据大多为正常窦性心律样本,房颤只占少数。相比其他类样本,房颤样本分布不平衡,且许多非房颤节律表征出与房颤类似的不规则RR 间期,导致房颤识别准确率下降。现有文献算法中训练集和测试集均源于同一数据集,虽表现出较高的识别精度,但面向临床数据则效果下降,导致模型泛化能力弱,且数据预处理阶段耗费大量时间,难以应用在单导心电记录仪进行阵发性房颤检测。
缩减特征工程,使用端到端的训练方式尽可能使模型从原始输入到输出,可给予模型更多的自动调节数据空间,以增加模型的整体契合度。因此,本文设计一种端到端的神经网络,并与移动式单导心电记录仪相结合进行阵发性房颤检测,首先通过MIT-BIH 数据库验证算法可行性,然后使用临床数据验证算法泛化能力,提高检测效率,使模型具有更高的普适性。
经典的机器学习先经过人工特征提取然后训练分类器模型进行预测。人工特征设计需要大量的专家知识,Lecun 等[14]最早提出卷积神经网络(Convolutional Neural Networks,CNN)并用于手写数字识别。近年来,CNN 作为一种广泛应用的分类器在语音识别、人脸识别、姿态分析、自然语言处理甚至脑电波分析等方面均有突破。标准CNN 包含卷积层、池化层和全连接层。
本文实验数据来自MIT-BIH 标准心电数据库。为改善算法鲁棒性,本文从多个数据库中选取不同类型的数据,如心律失常数据库(MIT-AD)[15]、恶性室性心律失常数据库(MIT-MVA)[16]、房颤数据库(MIT-AFD)[17]、持续性房颤数据库(MIT-LAFD)[18]、正常窦性心律数据库(MITNSR)等[19],同时将上海远心医疗科技有限公司自主研发的单导心电记录仪(Ryhthm WatchTM)采集的60 例数据作为全新的未知数据来测试算法泛化能力,数据采集得到伦理委员会批准和患者知情同意[20]。该数据集以医生判定结果作为标准判断算法分析检测的正确与否。受试者包含男 性37 例(71.7%),女 性23 例(38.3%),年 龄37~76(64.12±9.13)岁,其中临床诊断为阵发性房颤32 例,正常窦性心律28 例。每例采样率为256Hz,时长为30s。
本文将数据集中训练集记为TR,验证集记为TE,表示为:
因心电信号为离散的时间序列,故将训练数据作为输入样本表示为:
其中,xi(t)表示为第i个样本信号,xi(t)={xi[ 1 ],xi[ 2 ],…,xi[t]},记t时刻采样点值为一个特征值,xi(t)∈ℜ1250,∧为信号索引集合,yi作为信号类别,yi∈[0,1],其中1为房颤,0为非房颤。本文模型采用3 个局部区域块用来表示特征,每块含M个滤波器,尺寸为(Sb,b=1,…4)不等,通过输入特征向量进行卷积运算,其输出作为下一块输入,可表示为:
其中,t=(1,2…1250 -Sb+1),权重wk∈ℜΜ@Sb,bk∈ℜΜ为滤波器所对应的偏置系数,输入信号xi(t)经过线性运算后再由非线性激活函数Relu 进行线性修正以保证网络稀疏性,加速模型收敛,其过程可表示为:
为了降低下一层输入维度,约减参数,本文对结果C 采取最大池化操作,其本质是起到平移不变性作用,舍弃不明显特征,剔除信号扭曲变形带来的影响,减少计算代价。同时,为了防止每一层经过线性修正后的输出值范围发生变化,可对池化后结果进行归一化处理,使得训练集批量样本分布服从标准正态分布,减小梯度弥散,网络更加稳定[21]。
将“分布式特征表示”映射到样本标记空间,故本文设计Lk(k=1,…,5) 层感知器,如图1 所示(彩图扫OSID 码可见,下同)。在C3 卷积层经过池化操作得到M个2 维特征图,再计算每个特征图的平均值,得到一个Vm(m=1,2,…,130)特征向量。该向量为输入信号xi(t)的抽象特征表示,通过权重矩阵连接至L1~L4,其每层输出通过式(4)计算的结果作为下一层输入。本文最后采用逻辑回归分类器将L5层作为输出层,该层输出结果s 通过Sigmoid函数计算出预测结果,可表示为:
式(5)中P为分布式特征属于类别yc的后验概率,θ为回归系数。通过优化θ使得代价函数J(θ) 最小,以此刻画预测值和真实值的接近程度,表示如下:
Fig.1 CNN structure diagram with 3 convolution layers图1 具有3 层卷积层的CNN 结构
本文从MIT-AD、MIT-MVA、MIT-AFD、MIT-LAFD、MIT-NSR 共5 个数据库中选取数据集DS={NSR、AF、AB、AFL、B、BI、HGEA、IVR、NOD、P、PM、PREX、SBR、SVTA、T、VF、VFIB、VFL、VT}的19 种心拍类型作为实验数据。根据Mar 等[22]建议本文采取跨患者方式DS1={AF } 定义为房颤类,将DS2定义非房颤类,即有DS2=DS-DS1。为减小计算代价,适应神经网络输入,设定每个数据序列长度为10s,同时根据节律注释对每个序列进行标注。由于不同数据库的采样频率存在差异,故对采样率重新下采样至125Hz,插值使用Matlab R2014 内置的resample 函数。因正常心拍人群远远大于病态人群,故数据分布是类不平衡的。本文数据集中AF 类共12 184 例,除去NSR 和AF 的其他类属于少数类,此类样本共计4 875 例。为了增强算法鲁棒性,本文对非AF 类进行过抽样以保证类平衡,非AF 共计为12 203 例,其中包含NSR 类为7 328 例。
因数据集来源于多个数据库,具有不同的单位量纲,为提升模型的收敛速度和精度,去除数据的单位限制,本文进行归一化处理,转化为无量纲的纯数值以便不同单位或量级的指标能够进行比较和加权。常见的归一化方式有Min-max 标准化、z-score 标准化两种。本文采用z-score标准化,先求出原始数据的均值μ,标准差σ 经过如下转换:
使Z 符合标准正态分布,如图2 所示。
本模型将80%数据集用于训练,20%用于验证,采用二元交叉熵作为损失函数,Adagrad 作为优化器,初始学习率设为0.06。初始训练代数为150 轮,每代训练样本为275例。本文采用早停法获取最佳模型,同时在卷积层和全连接层使用dropout,其系数设为0.5 以防止模型过拟合,架构使用Keras 和Tensorflow 作为后端实现。为减少模型学习时间,本文采用英伟达GTX 2080 Ti GPU 作为硬件计算平台。通过计算灵敏度(SEN)、特异性(SPE)、阳性精确率(PPV)、准确率(ACC)4 个指标来评估模型分类性能[23],然后经过5 折交叉验证,求得其平均值作为最终评估指标。其中:
其中,TP 为将房颤预测为房颤样本数,FP 为将非房颤预测为房颤样本数,TN 为将非房颤预测为非房颤样本数,FN 为将房颤预测为非房颤的样本数。
Fig.2 Data before and after normalization图2 归一化前后数据
训练集与验证集比例差异使得模型在验证集上的性能变化明显,同时从整个数据集中按照一定的比例随机选择验证集会造成模型的不稳定性,特别是数据集相对较小的情况下。为此本文采用K(K=5)折交叉验证来评估模型稳定性。本文将DS划分为5 个大小相等的互斥子集,即DS=S1⋂S2⋂S3⋂S4⋂S5且Si⋂Sj=∅(i≠j),依次将4 个子集选为训练集,剩余一个为验证集,经过5 次独立实验得出各评估指标最终求出的平均值来验证算法有效性。
本算法在MIT-BIH 数据库经过5 折验证后的结果如表1 所示。从表1 可以看出,模型在第二次划分的数据集(K=2)下效果最好,灵敏度、特异性、阳性精确率、准确率分别99.23%、98.16%、97.81%、98.64%。其验证集的平均灵敏度、特异性、阳性精确率、准确率分别为98.41%、97.76%、97.74%、98.07%。最后使用5 次不同的验证模型分别对60例临床数据进行测试,首先设置10s 的时长窗口,其移动步长S 分别以10s、8s、5s、3s、1s 为单位对每例数据进行重叠截取,如图3 所示。此时发现步长为1s 时算法泛化性能最好,其平均灵敏度、特异性、阳性精确率、准确率分别为96.88%、89.29%、91.18%、93.33%,如表2 所示。为更进一步验证本文算法的可行性,选取有代表性的Erdenebayar等[24]的二分类模式方法进行对比实验。首先基于本文数据集进行网络训练,其验证集性能表现与本文对比结果如表3 所示。最后,模型采用单导数据进行测试并与文献方法进行对比,结果如表4 所示。从表4 可知,虽然本文的总体灵敏度相比文献低1.25%,但其特异性、阳性精确度、准确率比文献方法高,从而验证了本方法在阵发性房颤检测中的是有效性。
Table 1 Performance of algorithm in verification set表1 算法在验证集的性能表现
Fig.3 Clinical data(30s duration)图3 临床数据(30s 时长)
Table 2 Algorithm performance in real data表2 算法在临床数据的性能表现
Ta ble 3 Comparison of the performance of the literature algorithm with algorithm of this paper in the verification set表3 文献算法与本文方法在验证集上的性能对比
本文算法与近几年其他同类算法结果如表5 所示。Erdenebayar 等[24]先对数据进行带通滤波和离散小波变换以去除基线漂移和高频分量,最终基于7 层CNN 模型进行分类,虽然该研究在MIT 数据集上取得较高的分类性能,但其原始样本仅包含房颤类与正常类,样本来源较为单一,难以反映实际临床情形,最终因算法鲁棒性较差无法应用至临床检测。本文采用文献[24]方法基于同一测试集进行对比研究,表4 的结果表明本文指标整体上要优于文献算法。文献方法预处理数据要30s 时长,而本文仅需要10s;Fan 等[25]采用两种不同滤波器的卷积流分别提取ECG特征,最终将融合特征通过3 层感知层映射为2 个标记空间,其数据来源于CinC,数据时长为20s,最高灵敏度、特异性、阳性精确率、准确率分别为93.77%、98.77%、91.78%、98.13%;Wang[26]提出一种CNN与修改动态递归网络(ENN)堆叠的方法,该方法引入调节上下文单元反馈信息的权重值α,同时考虑来自上下文单元的信息与全部隐含层信息反馈,最高灵敏度、特异性、准确率分别为97.90%、97.10%、97.40%。尽管Fan 等在训练集中复制房颤类样本以阻止网络学习非相关特性以增强梯度方向效果,但该做法并未引入新的特征信息,不具备总体样本代表性;文献[27]所采用的数据集中存在房颤类样本占比少、类间分布不平衡问题;文献[28]采用个体内分类模式,忽略了个体间的差异[29],导致算法普适性差难以在临床检测中应用。本文采用端到端的神经网络,剔除了人工提取形态特征易错、易漏等问题[30-31],与Wang 所使用的原始ECG 序列相比,虽让采用了带通滤波消除基线漂移及肌肉噪声的干扰使得相关特征更加明显,但其预处理因增加了计算代价因而降低了房颤的实时检测效率。与传统的房颤识别相比,尤其像基于RR 间期识别算法需要40s-120s 数据,本文采用10s 数据更好地提高了效率,方便了临床诊断,同时进一步验证了本文方法在阵发性房颤检测中的有效性。特别是本文使用的模型基于图形处理器计算平台,对单个样本的处理时间为5ms 左右,可为单导心电记录仪及实时云计算应用提供参考。
Table 4 Performance comparison of algorithm in this paper and the literature algorithm in clinical data表4 本文和文献算法在临床数据的性能对比
本文提出基于一维卷积神经网络的阵发性房颤识别方法,该方法将CNN 自动提取的心电特征输入到二元分类器中再进行房颤识别。采用MIT-BIH 数据库进行实验,结果表明算法可行,在单导心电记录仪采集的数据上进行测试,结果表现出算法良好的泛化优势,对单个样本的处理时间也表明该方法具有较高的计算效率,可为移动式单导心电记录仪及实时云计算提供参考,也可为临床提供辅助诊断。但该方法在二分类情况下噪音类数据对精度的影响是后续需研究的问题。下一步拟从以下几方面研究更进一步优化模型:①扩充实际临床样本验证算法精度、采用多途径数据集测试模型泛化能力;②加入噪声数据,由二分类变为四分类问题,提升模型鲁棒性;③结合循环神经网络进行建模分析。
Table 5 Presentation of similar studies in recent years表5 近几年同类研究结果展示