时间:2024-05-04
朱兆坤 李金宝
1(齐鲁工业大学(山东省科学院)山东省人工智能研究院 济南 250014)
2(黑龙江大学计算机科学技术学院 哈尔滨 150080)
3(黑龙江大学软件学院 哈尔滨 150080)
阻塞性睡眠呼吸暂停(obstructive sleep apnea, OSA)是最常见的睡眠呼吸障碍,被国际睡眠障碍分类划分为第二大类别睡眠障碍[1],它通常是指睡眠过程中上呼吸道气流周期性的部分或完全缺失[2].根据Senaratna等人[3]的统计,OSA在成人中占比在6%~17%之间,男性比例明显高于女性且会随着年龄的增长出现的比例会越高,在高龄人群中男性与女性OSA的占比分别高达90%与78%.当OSA发生时,体内二氧化碳水平升高,促使患者频繁苏醒,影响睡眠质量,导致容易困倦和疲劳[4].OSA也是导致高血压、充血性心力衰竭、中风、糖尿病等医学疾病的一个重要因素[5].因此,早期检测与治疗OSA是十分必要的.多导睡眠仪(polysomnography, PSG)是诊断OSA的黄金标准.使用PSG诊断OSA时,需要患者到专业的睡眠实验室,在睡眠过程中佩戴多个传感器,并在专业人员的指导下完成心电信号(electrocardiograph, ECG)、呼吸信号(respiration)和血氧饱和度信号(blood oxygen saturation, SpO2)等多种生理信号的采集.这些信号将会被睡眠专家人工分析与打分,形成最终的诊断结果.使用PSG检测OSA存在耗时、花费高,以及检测过程中会给患者带来不舒适感等缺点,因此,有超过85%的OSA患者没有得到及时的诊断与治疗[5].
OSA发生时上呼吸道部分或完全阻塞,导致人体吸入氧气量减少,必须加大力度吸气,致使胸腔内负压不断增大,进而破坏睡眠过程中心血管系统的稳定状态,产生心率不齐、心率过缓和心率突变等不良现象.ECG是一种常用的检测OSA的单通道信号.随着科学技术的发展,越来越多的智能设备如智能手环、智能手表等可以通过非侵入式的方式获取到ECG信号,让患者能在家庭环境下以较低的成本、较舒适地完成OSA的检测.因此,有很多使用ECG信号检测OSA的方法被提出.
这些方法大致可以分为两大类别:1)传统机器学习方法[6-10];2)深度学习方法[11-13].传统机器学习方法通常从ECG信号中提取时域、频域和非线性等特征并利用支持向量机(support vector machine, SVM)等分类器对特征进行分类,在低噪声的ECG信号和小数据集上有着较好的检测效果.但传统机器学习方法提取的特征在高噪声的ECG信号和不同个体上的差异较大,因此,在高噪声的ECG信号和大规模数据集上表现较差.深度学习方法通常以ECG信号或从ECG信号中提取的浅层特征信号作为输入,对低噪声的短片段ECG信号有着较好的检测效果.而长片段ECG信号由于含有较多的QRS波群(QRS complex),每个波群具有相同的结构,使长片段ECG信号之间高度相似,致使长片段中OSA表现并不显著.因此深度神经网络直接学习原始ECG信号容易出现不收敛和拟合度较低的现象.而现有利用浅层特征信号的方法一般只使用RR间隔(RR interval, RRI)作为神经网络的输入,只能学习到心率的变化规律,忽略了ECG信号中的其他信息,如QRS波群电压变化规律、呼吸气流变化规律等,也没有考虑预处理方法对实验结果的影响,导致OSA检测效果较差.
针对以上问题,本文提出一种基于多特征融合心电信号的长短期记忆循环神经网络(long short-term memory recurrent neural network, LSTM-RNN)[14]检测OSA.使用从ECG信号中提取的浅层特征信号替代原始ECG信号作为输入.与原始ECG信号相比,浅层特征信号具有更明显的时序变化和更短的信号长度,使其在较长片段和含有较高噪声的ECG信号上的表现优于原始ECG信号.由于单个特征信号只能从一个侧面反映ECG信号的变化.因此,我们将多个浅层特征信号融合,同时从多个侧面捕捉ECG信号的变化,并针对浅层特征信号提出了一种预处理方法,在最大化单个浅层特征信号分类效果的基础上进行融合,获得更好的分类效果.最后,利用LSTM-RNN在时间序列信号上的优异表现和对较大数据集有较好的泛化能力的特点,在融合后的多个浅层特征信号上学习深层特征.
本文的主要贡献有2个方面:
1) 提出一种基于多特征信号信息融合的LSTM-RNN,通过融合多种从原始ECG信号中提取的浅层特征信号作为神经网络的输入,提高模型在长片段和较高噪声ECG信号上的分类准确率;
2) 提出一种针对浅层特征信号的预处理方法,解决神经网络在训练过程中容易不收敛和分类准确率较低的问题.
Fig. 1 The comparision of original and denoising ECG signal图1 原始ECG信号与去噪后的ECG信号对比
传统机器学习方法常用于片段ECG信号上的OSA分类.Cartwright[5]通过提取QRS波群主成分和呼吸心率互信息,结合RRI的标准差和序列相关系数,使用最小二乘支持向量机(least squares support vector machine, LS-SVM)对提取的特征进行分类,在基于片段ECG信号的OSA分类上得到了85%的分类准确率;Varon等人[6]从ECG信号中提取RRI并从中推导出瞬时心率(instantaneous heart rate, IHR),计算IHR多个频带的能量作为特征并使用二次分类器进行分类,在基于片段ECG信号的OSA分类上得到了84.7%的准确率;Babaeizadeh等人[7]利用Hermite基函数近似QRS波群,使用Hermite扩张系数和RRI的均值、标准差和总能量作为特征,并使用LS-SVM对特征进行分类,在基于片段ECG信号的OSA分类问题上得到了84%的分类准确率;Martín-González等人[10]从ECG信号中提取RRI,并从中提取了多种线性与非线性特征,包括倒频谱系数、滤波器组和去趋势波动分析,使用逻辑回归(logistic regression, LR)等对特征进行分类,在基于片段ECG信号的OSA分类问题上得到了84%的分类准确率.传统机器学习方法在低噪声的ECG片段上取得了较好的效果,但在含有较高噪声的ECG信号和较大数据集上因特征值差异较大,分类效果并不理想.
深度学习方法使用神经网络从信号中学习特征,使用的信号包括原始ECG信号以及从ECG中提取的浅层特征等.Cheng等人[11]利用RNN检测OSA,通过从ECG中提取的RRI进行分类,在基于整晚ECG信号的OSA记录筛选上得到了97.8%的准确率,但没有给出ECG片段分类的结果.Li等人[12]使用2阶段的学习方法:第1个阶段使用2层堆叠的稀疏自编码器(sparse autoencoder, SAE)从RRI中学习特征表示;第2个阶段使用人工神经网络(artificial neural network, ANN)和SVM对从SAE得到的特征进行分类,并利用隐Markov模型(hidden Markov model, HMM)对2种分类器的结果进行综合,在基于片段ECG信号的OSA分类问题上得到了84.7%的分类准确率.Urtnasan等人[13]利用卷积神经网络(convolutional neural network, CNN)针对10 s的滑动窗口ECG信号提取特征,然后进行分类,在基于整晚ECG信号的OSA记录筛选上得到了90.8%的分类准确率,但在长片段的ECG信号上因OSA发生与不发生之间差异较小表现不佳,CNN网络容易出现不收敛或拟合度较低的问题.此外,使用原始ECG信号作为神经网络的输入时对ECG信号的质量要求较高,对含有较高噪声的ECG信号表现较差.
本文从长片段ECG信号中提取多个浅层特征信号,并将它们融合作为LSTM-RNN的输入,使LSTM-RNN同时学习特征信号的时序变化和各个特征信号之间的关系,获得更多的深层特征,提高网络对较高噪声ECG信号的OSA检测准确率和对较大数据集的泛化能力.
原始ECG信号中存在基线漂移问题,影响R峰位置的计算.造成基线漂移的噪声信号频率范围在0~1.5 Hz之间,本文使用小波变换方法去除ECG信号基线漂移.对信号进行小波分解,可以得到细节系数(detail coefficient)Cd和近似系数(approximate coefficient)Ca两个部分,分别包含高频部分与低频部分.本文使用的ECG信号的频率为100 Hz,因此需要对该信号的近似系数使用小波迭代分解6次,得到0~1.5 Hz的噪声信号Ca,6.将Ca,6中所有系数值置0后再逐层进行小波重构,可以得到去噪后的ECG信号.本文使用的小波为db6小波[15],对ECG信号的去噪效果如图1所示.
Fig. 2 Comparision on ECG, RRI, RAMP and EDR between normal breathing and OSA图2 正常呼吸片段与OSA片段在ECG,RRI,RAMP,EDR上的对比
本文从ECG信号中提取RRI,R峰幅值信号(R peaks amplitude, RAMP)和由心电信号导出的呼吸信号(ECG-derived respiration, EDR)三种浅层特征信号.首先对ECG信号使用Pan-Tompkins[16]算法检测R峰位置并计算RRI.RAMP取R峰位置左右各25个值中的最大值.通过R峰幅值和QRS波群主成分可以重构EDR信号[17].RRI体现心率的变化,RAMP体现QRS波群电压的变化,EDR信号体现呼吸气流的变化.这3种从ECG中提取的浅层特征信号能够从不同侧面反映OSA发生时信号的变化.我们通过融合这3种信号增加浅层特征信息,有利于LSTM-RNN学习到更多的深层特征.通过实验我们发现,对浅层特征信号上使用常规的数据预处理方法如最小-最大标准化和z-score标准化等,神经网络容易出现不收敛的问题.上述的预处理方法将信号数值标准化在较小数值范围内,缩小了信号在时间序列上的变化.为了解决该问题,我们提出一种有效的预处理方法:对特征信号减去均值后放大值域范围,减去均值可以使信号在正负区间内分布均匀,放大值域范围可以扩大信号在时间序列上的变化.对信号的扩大倍数主要取决于该信号的初始值域范围.因为LSTM-RNN中使用tanh作为神经网络的激活函数,tanh在-3~3的范围内变化明显.当我们将信号的初始值域扩大后,信号的时序变化能够在神经网络中有效地传递,使网络更好地学习特征,具体的实验细节见4.2节.对浅层特征信号进行预处理后,还需要将3种浅层特征信号的采样频率统一,使它们能够融合成一个多维的数据作为神经网络的输入.RRI信号体现心率的变化,一般人的心跳在每秒4次以下;RAMP使用R峰幅值作为采样点,采样频率与RRI信号相同;EDR信号体现呼吸信号的变化,一般呼吸信号频率低于0.5 Hz.所以,我们将RRI,RAMP和EDR信号的采样频率统一至4 Hz,可以最大程度保留浅层特征信号中的信息,并防止因为采样频率过高使信号的细节变化被放大,导致特征信号中保留过多的无用信息.对RRI和RAMP信号,采用二次样条插值方法将采样频率提高至4 Hz.对EDR信号,采用随机下采样方法将采样频率降至4 Hz.图2给出了OSA片段和正常呼吸片段在原始ECG信号和从原始ECG信号中提取的RRI,RAMP,EDR信号的对比.对比图2(a)与图2(b),可以看出在长片段ECG信号上正常呼吸和OSA的ECG信号差异不明显.而对比图2(c)与图2(f)、图2(d)与图2(g)、图2(e)与图2(h)这3组,可以看出浅层特征信号在正常呼吸和OSA的差异较大,更有利于神经网络从中提取深层特征.
RNN[18-20]网络具有记忆能力,可以高效率对序列的非线性特征进行学习.LSTM-RNN是一种被广泛使用的RNN模型,通常由多个LSTM单元串联构成,每个LSTM单元中由记忆单元Cell、遗忘门、输入门和输出门构成,Cell是LSTM单元的主体,门主要通过一个sigmoid函数和一个点乘让信息有选择地通过.LSTM-RNN常被应用于捕捉数据的长期与短期时间依赖,门控单元使其拥有较强的泛化能力,在时间序列数据上有着较好的表现.
本文使用LSTM-RNN学习经过融合的多特征浅层信号,同时捕捉特征信号在时间序列上的变化规律和多个特征信号在同一时刻的关系,LSTM-RNN模型如图3所示.我们将3个浅层特征信号依据时间串联成一个多通道输入数据,使用3个串联的LSTM块从多通道输入提取深层特征,设置LSTM块的时间步长为1.
Fig. 3 The proposed LSTM-RNN model图3 本文使用的LSTM-RNN模型
第3个LSTM块仅返回最后一个时刻的输出,减少深层特征个数,降低参数量.在3个串联的LSTM块后,使用4层全连接网络对深层特征进行分类.使用二元交叉熵作为损失函数:
(1)
其中,Px代表LSTM-RNN对ECG片段x的预测值,Yx代表ECG片段x的真实标签.LSTM-RNN网络输入维度、输出维度与具体参数详见4.3节.
1) 数据集.本文使用PhysioNet的Apnea-ECG数据集作为训练数据与测试数据[21-23],该数据集由菲利普斯大学提供,是一个被广泛使用的基于ECG信号检测OSA的公开数据集.Apnea-ECG数据集中共有70条ECG记录,PhysioNet将其划分为2个子数据集:训练集与测试集,其中每个数据集有35条记录.每条ECG记录的每分钟都带有一个标签A或N,A代表非正常呼吸,N代表正常呼吸,该标签由睡眠专家标注.训练集和测试集分别有17 045个和17 268个被标注的ECG片段,我们去掉数据集中R峰无法检测和RRI<30或RRI>180的异常片段,筛选后训练集和测试集分别保留15 961个和15 938个片段.
2) 实验环境.采用ADAM[24]优化方法,参数beta1和beta2分别设置为0.9和0.999,学习率为0.001.实验环境为基于Windows 10操作系统、Keras2.0.1深度学习框架,使用GPU进行训练,配置NVIDIA CUDA10.0与cuDNN7.6.0深度学习库加速GPU运算,用于训练和测试的软件为Python3.6,硬件配置为AMD Ryzen 1800处理器,Nvidia GeForce GTX1080 GPU,DDR4 32 GB内存.
3) 评估标准.准确率(accuracy,Acc)、敏感度(sensitivity,Sen)和特异性(specificity,Spe),计算方法分别为:
(2)
(3)
(4)
其中,真正例(true positive,TP)代表正例中判断正确的样本数量;真负例(true negative,TN)代表负例中判断正确的样本数量;假正例(false positive,FP)代表正例中判断错误的样本数量;假负例(false negative,FN)代表负例中判断错误的样本数量.准确率越高则说明网络对样本的分类效果越好,敏感度越高则说明网络对正样本的识别效果越好,特异性越高则说明网络对负样本的识别效果越好.
使用长片段原始ECG信号时,LSTM-RNN在训练中损失基本无下降,训练结果如图4所示.
Fig. 4 Training result of denoising ECG by LSTM-RNN图4 去噪ECG信号使用LSTM-RNN的训练结果
在前26轮训练过程损失无明显下降,造成这一结果的原因是ECG信号中的QRS波群具备一定的结构,导致传统的LSTM-RNN无法从结构型的信号中学习有效的特征.本文提出的基于多特征信号融合的方法使用从ECG信号中提取的特征信号作为输入,这些信号没有特定的结构,不需要针对信号本身设计相应的网络模型.
在神经网络中,最常用的数据标准化方法主要有最小-最大标准化和z-score标准化,计算方法分别为:
(5)
(6)
其中,xmin为浅层特征信号的最小值,xmax为浅层特征信号的最大值,xμ为原始浅层特征信号平均值,xσ为原始浅层特征信号的标准差,x为原始浅层特征信号,x*为初始化后的浅层特征信号.
通过实验发现,这2种预处理方法因将信号处理至较小数值,使浅层特征信号在时间序列上变化规律并不明显,会使LSTM-RNN容易出现不收敛的问题.所以,我们通过减去均值并扩大值域范围,使浅层特征信号在时间序列上变化规律更加明显.具体结果如表1所示.当我们对3种特征信号不做任何预处理、做最小-最大标准化和z-score标准化时,LSTM-RNN都无法收敛,说明常用的最小-最大标准化和z-score标准化不适用于RRI,RAMP,EDR信号.在不做任何预处理时,信号在正负区间内分布不均匀,使LSTM-RNN无法捕捉到有效的时序变化.做最小-最大标准化时和z-score标准化后,信号在时间序列上的变化被缩小,导致LSTM-RNN无法从微小的变化中学习到有效的变化规律.我们将所有的特征信号减去均值,使其在正负区间内分布均匀,tanh激活后有更好的数据分布.我们对3种特征信号进行不同程度的放大,从10~100 000倍,探究每个特征信号的最优放大倍数.RRI因为初始信号值域范围较大,在不经过任何放大时获得了较好的分类效果.RAMP和EDR初始信号值域范围较小,在不放大时易出现不收敛现象.RAMP和EDR信号分别放大100倍和10 000倍,得到了最好的分类效果.但对RRI,RAMP,EDR信号继续放大后,分类准确率则会有所降低.因为当信号值域范围过大时,在神经网络中逐层传递值域范围也会较大,但在经过tanh函数激活后的变化较小.另外,我们注意到z-score标准化后扩大100倍的分类结果低于我们提出的预处理方法,造成这一结果的原因是RRI,RAMP,EDR在z-score标准化之后缩小了特征信号在事件序列上的差异.
Table 1 Performance of Different Preprocessing on Feature Signals Based on Per-segment OSA Classification表1 不同预处理方法在片段OSA问题上的分类结果
我们比较了浅层特征信号单个或多个组合的分类结果,如表2所示.EDR信号提供了单通道特征的最好的分类结果,在测试集上的分类准确率达到了81.7%,比RRI和RAMP的分类准确率提高了约2个百分点.当我们融合2个特征信号时,都获得了比单个信号更好的分类准确率,其中RRI与EDR的组合提供了双通道特征的最好分类准确率,达到了83.7%.当我们融合RRI,RAMP,EDR信号时,分类准确率达到了85.4%,好于单个特征信号和2个特征信号组合的分类准确率.实验结果表明,融合多个特征信号可以提高对OSA分类的准确率.
Table 2 Performance of Different Combination of Feature Signals Based on Per-segment OSA Classification表2 不同特征信号组合在片段OSA问题上的分类结果
表3给出了实验中LSTM-RNN获得最好分类准确率时的模型参数.参数dropout和Recurrent dropout的设置通过有选择地激活神经元提高模型的泛化能力,但其数值过大时会导致欠拟合.在LSTM-RNN中不宜使用ReLU激活函数,因为ReLU激活函数会忽略负值,缩小信号的时序变化,导致网络训练时不收敛.
我们还验证了本文方法在OSA记录筛选问题上的准确率,即从所有ECG记录中筛选出患有OSA的记录.在Apnea-ECG数据库的35条测试记录中,采用Apnea-ECG推荐的计算方法,即如果一条ECG记录中存在100 min以上的OSA片段,则该条ECG记录为重度OSA患者;存在10~100 min的OSA片段则为轻度OSA患者;存在5 min以下OSA片段则为健康人.
本文方法能够100%区分健康人与重度患者.但在5个中度患者中,把一名中度患者错判为重度患者,这是因为本文方法倾向于把正常片段判断为OSA片段,我们将在后续工作中引入混合决策机制解决该问题.
Table 3 Parameters Used in LSTM-RNN表3 LSTM-RNN参数
我们从已发表的文献中选择了一些与本文使用相同数据库的文献作对比,如表4所示.已有方法大多使用传统机器学习方法,对于部分片段拥有很高的准确率,但将其应用于较大数据集时,通常不能获得较好的分类准确率.本文使用LSTM-RNN学习经过融合的从ECG信号中提取的多特征浅层特征信号,在分类准确率上达到了85.4%,高于Li等人[12]使用SAE学习RRI的方法,也高于传统机器学习方法.
Table 4 Comparision for Per-segment Classification Between Our Method and Others表4 本文方法与其他方法在片段分类问题上的比较
本文提出多特征信号信息融合的LSTM-RNN和一种针对浅层特征信号的预处理方法,通过融合多个突出时序变化后的浅层特征信号作为LSTM-RNN的输入,使LSTM-RNN能够学习到更多更有效的深层特征,提升对含有较高噪声的OSA片段的分类准确率与较大数据集的泛化能力.在Apena-ECG数据集基于片段的OSA检测问题上得到了85.4%的分类准确率.
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!