基于CNN和BLSTM的房颤识别算法
2022-05-23包志强黄琼丹吕少卿
包志强,白 莹,黄琼丹,吕少卿
(西安邮电大学 通信与信息工程学院,陕西 西安 710121)
0 引 言
房颤即心房颤动(atrial fibrillation,AF),作为临床上最常见的一种持续性心律失常,其本身并不可怕,但由它引起的脑卒中、心力衰竭等往往会直接威胁人的生命健康[1]。随着科技发展,计算机辅助心电图(electrocardiogram,ECG)分析方法[2]已经成为目前诊断房颤等心律失常的最便捷手段。
近年来,由于人工智能技术的兴起,各种各样的机器学习算法被用于心电信号检测与分类识别。这其中主要包括两大类方法,即逐步(step-by-step)的机器学习和端到端(end-to-end)的深度学习。类似于Li等[3]使用的随机森林之类的传统机器学习方法大多需要手动提取特征,当原始信号因为噪声过多等情况而难以进行手工特征提取时,端对端的深度学习就表现出明显的优势。例如Teijeiro等[4]使用循环神经网络(recurrent neural networks,RNN)对房颤样本进行识别与分类时可将原始心电信号作为输入,然后直接输出分类结果,去掉了手工特征提取的环节。
传统机器学习算法提取复杂心电信号特征存在一定难度,而深度学习可以对数据背后的隐藏特征进行深层挖掘并端对端地完成自动分类。针对于此,本文设计将擅长处理图像的卷积神经网络(convolutional neural network,CNN)用于心电信号的处理,在进行特征提取之后与适合处理时间序列的双向长短期记忆网络(bidirectional long short-term memory,BLSTM)结合起来,对The Physionet/Computing in Cardiology Challenge 2017(PCinCC2017)挑战赛数据进行分类训练,完成对原始信号的自动分类并在一定程度上提高了分类准确率。
1 相关理论
1.1 CNN简介
CNN是一类包含卷积运算且具有深度结构的前馈神经网络[5]。作为深度学习的代表算法之一,CNN已经成为人脸识别、图像处理、模式分类甚至是自动驾驶等众多领域的研究热点。由于其避免了对图像复杂的前期预处理,可以直接输入原始图像,因此在模式分类领域的应用尤为广泛。CNN强大的特征提取能力与它的局部感知和权值共享特性息息相关[6],其结构通常为卷积层和池化层的交替组合加上全连接层的形式。卷积层中的卷积核就相当于一个特征提取器,利用它在前一层输出上滑动窗口来计算当前的卷积输出。池化层主要是进行下采样,对特征图进行稀疏处理,从而减少数据运算量,池化方式一般有最大池化和平均池化两种。全连接层则根据需求来输出结果。对于多分类问题,最后一个全连接层的激活函数通常选择Softmax函数,从而得到样本属于各个类别的概率分布情况。
1.2 BLSTM算法原理
长短期记忆网络(long short-term memory,LSTM)是一种特殊的RNN。相比于普通的RNN,它可以有效解决长序列训练过程中易出现的梯度消失和梯度爆炸问题[7],也就是说它可以长时间记住信息,因此特别适合于处理和预测时间序列中间隔和延迟非常长的重要事件。LSTM单元内部结构如图1所示。其关键在于细胞状态的更新,也就是图中上方的水平线。细胞状态就好比一条传输高速公路,沿着序列链传递相关信息。LSTM通过隐藏层中的遗忘门、输入门和输出门对细胞状态进行信息的添加或删除。这些门结构通常由一个sigmoid层和一个点乘操作组合而成,因此通过门可以有选择地让信息通过或是不通过。
图1 LSTM单元内部结构
BLSTM可以理解为LSTM的变体,由前向LSTM与后向LSTM组合而成。单向LSTM仅保留过去的信息,它唯一的输入来自过去。而BLSTM可以在任何时间点保存过去和未来的信息,它可以很好地利用双向时间序列信息,生成更具鲁棒性的特征。其时间模型如图2所示。
图2 BLSTM单元时间模型
2 结合CNN和BLSTM的房颤自动识别与分类方法
本文针对心电信号的时序特性,将CNN和BLSTM结合,建立一种新的一维深度网络模型,通过数据预处理和特征降维将PCinCC2017挑战赛数据送入本文所设计的网络模型,在利用CNN的多次卷积和池化操作快速提取心电数据局部深层特征的同时,也利用BLSTM提取数据依赖于时间的时间特征,最终实现房颤的自动识别分类。
2.1 PCinCC2017数据集
PCinCC2017数据是使用AliveCor设备[9]采集的短时单导联手部心电信号,采样频率为300 Hz。其中训练集包含8528条单导联心电图记录,时间从9 s到61 s不等。测试集包含3658条相似记录,由于官方测试集不对外公开,因此本文采用的数据集是训练集数据,其具体的分布信息见表1。
表1 PCinCC2017挑战赛数据样本分布信息
2.2 数据预处理
心电信号是人体的一种微弱生理信号,在对其采集的过程中,极易受来自体内和体外环境的影响,因此通常采集到的心电信号会伴随有基线漂移、工频干扰、肌电干扰等噪声的影响[10]。基线漂移是由测量电极接触不良、呼吸引起的低频干扰信号,其频率在0.05 Hz~2 Hz之间。工频干扰主要来自供电设备,其频率为50 Hz。肌电干扰通常来自于肌肉的收缩和颤动,其频率在5 Hz~2000 Hz。不过由于本文所设计的深度网络模型能够自动挖掘心电信号的深层次特征,因此在数据预处理阶段仅进行简单滤波即可。首先将原始信号经过一个5阶的巴特沃斯带通滤波器,通带截止频率为3 Hz~45 Hz,由此来消除基线漂移和高频噪声的影响。此时数据中不存在50 Hz的交流电干扰,无需设计相关的陷波器。之后把所有样本数据从中间分为前后两端,分别计算其峰值,使用较小的峰值对每一个样本数据进行归一化,这样做可以避免野值对信号的影响。本文选取了2.1节数据库中A00057号数据的10 s信号数据,进行了以上操作的效果展示,如图3所示。
图3 心电信号滤波归一化前后对比
此外,在采样频率为300 Hz的条件下,采样时间从9 s到 61 s,这说明样本数据的长度大小不等,而深度学习网络需要输入的尺寸一致,因此对样本数据进行统一处理,把所有样本长度限定为8192点,对超出的进行截取,不足的分别在两边进行补零操作。为了提高网络模型的运算速度,在时域上对样本数据进行降采样,即每两个采样点取一个,则最后输入网络的特征数据是长度为4096的一维特征向量。另外由于数据集中只有少量的噪声数据,因此将其进行剔除,最终将经过以上处理的正常节律、房颤节律和其它节律3类样本数据送入网络。
2.3 结合CNN和BLSTM的深度网络模型
本文根据心电信号的一维时序特性,将BLSTM单元融入所构建的深层CNN网络中,设计一种基于心电信号的一维深度网络模型,使模型发挥二者的独特优势,在自动提取所选数据集深层特征的同时可以更好地利用双向时序信息去完成长期记忆任务,实现对房颤的识别与输入信号的自动分类。本文所设计的深度网络模型具体结构如图4所示。
图4 网络模型结构
本文模型中的CNN参考了VGG16网络框架,考虑到模型的泛化能力,设计了13个一维卷积层,每个卷积层都使用修正线性单元(rectified linear unit,ReLU)作为激活函数,通过ReLU函数能够使稀疏后的模型更好地挖掘相关特征,拟合训练数据。在每个卷积层后面添加批归一化层(batch normalization,BN),加快模型的收敛速度。为了在一定程度上防止过拟合问题的出现,在相应的卷积层之后加入可以对特征数据进行降维的最大池化操作,设置一定概率值的Dropout。在连续卷积操作之后,将最后一个一维卷积的输出作为BLSTM层的输入,把CNN中提取到的信号特征送入256个单元的BLSTM网络中进行特征学习和映射,最后将所提取到的信号时序特征再送入Softmax分类器中进行训练,最终输出相应的分类结果,完成对原始信号的自动分类,实现对房颤的识别。本文模型的详细参数见表2。
3 网络训练
以深度学习开源框架Keras为基础,采用2.3节中所设计的网络模型,将CNN和BLSTM进行结合,并利用所选取的数据集进行网络训练。为了加快网络的训练速度,采用随机梯度下降(stochastic gradient descent,SGD)算法式(1)在每一次迭代中随机选择一个样本来更新模型参数,使用多分类交叉熵损失函数式(2)计算损失值。网络参数中的学习速率设定为0.001,学习速率的衰减系数设为0.000 001,动量参数为0.92,权重衰减系数为0.0005,批处理大小为10,训练迭代次数设为200次
(1)
(2)
PCinCC2017挑战赛的8528条样本数据在通过2.2节中的数据预处理后,分为训练集和测试集两部分。其中训练集占70%,用来训练2.3节所设计的模型,测试集占30%,用于模型测试。
4 实验结果及分析
4.1 实验配置与评价指标
实验软硬件配置见表3。
针对本文所提出的网络模型,分别采用分类准确率Accuracy和F1度量两个指标来评估其性能。Accuracy表示被分类正确的样本数占所有样本数的比率,F1度量是一种兼顾精确率和召回率的模型衡量指标。其定义分别见式(3)和式(4)
(3)
(4)
式(3)中TP代表真阳性,表示属于该类且被正确分类的样本数量,TN代表真阴性,表示不属于该类且被正确分类的样本数量,FP代表假阳性,表示不属于该类却被错误归为此类的样本数量,FN代表假阴性,表示属于该类却被错误归为其它类的样本数量。式(4)中P代表精确率,表示该类样本中被正确分为此类的样本所占的比率,R代表召回率,表示被分为该类的样本中实际为此类的样本所占的比率。P和R可分别用式(5)和式(6)表示
(5)
(6)
4.2 结果分析与对比
4.2.1 网络训练曲线分析
图5为网络训练过程中损失值随迭代次数变化的曲线图,图中横坐标为迭代次数,总迭代次数为200次,纵坐标为损失值。从图像可以看出,在模型训练阶段,当迭代次数达到100次时,各参数变化趋于稳定,最终损失值下降到约0.32。
表2 网络模型参数
表3 软硬件配置
图5 损失值函数曲线
4.2.2 实验结果对比
通过对本文所设计模型的反复训练和网络超参数的调整,利用训练好的模型对测试集进行预测,输出相应的三分类结果。相应的混淆矩阵见表4,其中N表示正常节律,A表示房颤节律,O表示其它节律。本文使用F1度量和分类准确率Accuracy来评估模型性能。根据PCinCC2017挑战赛的规则,最终评估模型采用的F1度量是正常节律类(F1N)、房颤节律类(F1A)和其它节律类(F1O)三者F1度量的平均值,其计算方式见式(7)
(7)
为了验证算法的有效性,采用交叉验证的方法对本文模型进行检验,将本文算法与PCinCC2017挑战赛和现阶段已有算法的分类性能进行对比,分类准确率Accuracy结果见表5,相同规则下的F1度量结果见表6。由表5可见,本文算法得到的Accuracy值相较于文献[11]所提出的使用数据增强后的两层LSTM和三层BGRU算法以及文献[12]提出的SVM算法有一定的提升。PCinCC2017挑战赛众多参赛队伍所设计的算法在官方竞赛阶段取得的最佳F1度量为0.83[11],Datta等[13]提出的自适应增强算法就是其中的最优算法之一。由表6可见,本文算法得到的F1度量为0.83,与挑战赛中取得最优成绩的算法性能相当。同时也可以从表6中看出,对于本文所使用的数据集来说,将CNN和BLSTM结合的算法性能在一定条件下优于CNN和LSTM单独构造的分类模型性能。
表5 本文算法与其它算法的Accuracy对比
表6 本文算法与其它算法的F1度量对比
5 结束语
本文针对短时心电信号的一维时序特征,将一定深度的卷积神经网络和双向长短期记忆网络进行融合,设计出一种多分类网络模型,在通过预处理的训练数据集上进行网络训练,并在测试集上进行了模型性能评估,最终的实验结果验证了本文算法的有效性。由于本文所选数据集的样本分布存在明显的数据不均衡问题,可能会导致分类结果具有一定的偏向性。因此未来的工作中将考虑相应的数据增强算法,平衡各类别样本数量,提升数据集的多样性,从而生成鲁棒性更好的模型,使模型的泛化能力得到进一步提高。