杨倩茹,李金莲,付洺宇,侯凤贞*
(1.中国药科大学 理学院,江苏 南京 211198;2.南京晓庄学院 环境科学学院, 江苏 南京 211171)
睡眠是人类一种重要的生理现象。健康的睡眠有益于人体生理及心理健康[1]。睡眠呼吸暂停(Sleep Apnea, SA)是一种十分常见的睡眠呼吸疾病。患者睡眠期间反复发生的呼吸暂停、低通气等事件不仅影响人们的睡眠质量,还与人体其他脏器系统的损害密切相关[2]。准确高效地检测此类睡眠呼吸事件,对于保障人类生命健康具有重要意义。
在连续7小时的睡眠中发生30次以上呼吸暂停,或平均每小时发生低通气超过5次,定义为SA[3]。呼吸暂停指口鼻气流停止至少10秒[4]。低通气指呼吸气流降低至正常水平的30%~50%,并伴有不低于3%的血氧饱和度(SpO2)下降[5]。根据病因及多种临床特征,SA分为中枢性(Central Sleep Apnea, CSA)、阻塞性(Obstructive Sleep Apnea, OSA)和混合性(Mixed Sleep Apnea, MSA)。OSA最为常见。临床上对于这些异常睡眠呼吸事件的检测是评估睡眠质量、诊断睡眠相关疾病的重要途径。夜间多导睡眠图(Polysomnography, PSG)是诊断睡眠障碍疾病的金标准,基于PSG的多种生理信号被广泛用于SA的诊断[6-12]。传统的方法主要由医师根据不同睡眠呼吸事件对应的PSG信号特征来进行人工识别,诊断效率较低[13,14]。随着机器学习的广泛应用,研究人员尝试将PSG中提取的信号特征与不同的机器学习算法相结合来构建检测模型[15],极大提高了诊断效率。然而,这些模型均需手动选择特征集合,涉及大量计算,耗时且泛化能力弱。
深度学习是一种基于数据的方法,它可以通过对大量数据的学习,自动提取出数据的特征,从而无需事先手动设计和选择特征。因此,一些研究尝试将原始的PSG信号直接输入深度神经网络进行训练,通过反复训练迭代的过程,网络自动学习并提取最相关的特征,从而完成睡眠呼吸事件的自动检测。Erdenebayar等[16]构建了一个3层深度置信网络(Deep Belief Network, DBN),使用SpO2信号作为模型的输入,来进行睡眠呼吸事件的检测。Yeh等[17]基于一维卷积神经网络(Convolutional Neural Network, CNN),使用PSG中的单导心电图(Electrocardiogram, ECG)信号作为输入,构建了SA自动检测模型。Zhang等[18]在CNN模型的基础上加入长短时记忆网络(Long Short-Term Memory, LSTM)来构建OSA事件检测模型。Hu等[19]也使用单导ECG信号作为输入,提出了一种基于自注意力机制的混合Transformer模型,来完成对OSA事件的检测。Liu等[20]结合CNN和Transformer构建OSA事件检测模型,使用单导ECG信号作为输入,对OSA事件的检测性能提升明显。但是,现有的这些研究大多仅使用单种睡眠信号来构建深度学习模型,很少对多种信号的组合使用进行深入探究。多项研究结果表明,相比于单信号输入模型,基于组合信号的睡眠呼吸事件模型具有更好的检测性能[21,22]。
且在PSG信号的选择上,现有研究多倾向于ECG信号,然而ECG信号的采集过程较为麻烦,通常需要将电极粘贴到患者的胸部,复杂的导线与电极会对患者的舒适度和自由度产生限制,进而影响患者的正常睡眠与信号采集的质量,也不利于睡眠呼吸事件自动检测工具的落地应用。而口鼻气流信号通常采用口鼻气流传感器来监测,口鼻气流传感器只需放在鼻孔附近,便可检测呼吸时的气流量和速度变化。对于胸腹活动信号,一般使用胸腹活动传感器来采集,只需要将传感器固定于患者的胸腹部,便可利用电阻或压力传感器来测量呼吸时的胸腹运动变化。相比于ECG信号的采集,口鼻气流及胸腹活动的采集过程更加舒适、便捷,有助于可便携式的睡眠呼吸事件自动检测工具的开发与应用。且有研究表示口鼻气流、胸腹活动等生理信号更能直接表征睡眠呼吸事件[23],而目前使用这3种生理信号来检测睡眠呼吸事件的研究还相对较少。
因此,本文较为创新地组合使用了这3种睡眠生理信号(口鼻气流、胸部活动和腹部活动),构建了一个基于双向长短时记忆网络(Bidirectional Long Short-Term Memory, BiLSTM)的多输入睡眠呼吸事件二分类模型,以提高睡眠呼吸事件的监测与诊断效果,为进一步开发SA自动筛查工具提供参考。
本研究使用了两个开源数据集。其中一个是都柏林大学学院(University College Dublin,UCD)睡眠呼吸暂停数据集[24]。该数据集包含25名受试者的夜间PSG记录,包括21名男性,4名女性。受试者没有心血管相关疾病,无自主神经功能障碍,且没有服用过干扰心率等生理信号的药物。受试者年龄范围为28~68岁,呼吸暂停低通气指数(Apnea Hypopnea Index, AHI)范围为1.7~90.9(24.1±20.3)。
另一个数据集是来自美国国家睡眠研究资源(National Sleep Research Resource,NSSR)的Heart Biomarker Evaluation in Apnea Treatment(HeartBEAT)数据集[25]。该数据集包含317名受试者的两个阶段的夜间PSG记录,分别为初始阶段和进行3个月相关治疗之后的随访阶段。受试者主要是患有SA并存在心血管疾病风险的人群。在该数据集中,有6名受试者信号不完整(受试者编号:700112、700131、700205、700250、700266、700288),因此本文共收集到311名受试者的信号。受试者年龄范围为45~75岁,AHI指数范围为7.3~65.0(26.2±8.8)。
本文对这两个数据集中的口鼻气流、胸部活动和腹部活动信号进行研究。UCD数据集和HeartBEAT数据集的信号采样频率分别为8 Hz和50 Hz。
将数据输入模型前,需要进行预处理,主要是对信号的滤波和分割。睡眠期间,低频段是检测睡眠呼吸暂停的主要频段,因此在提取不同部位生理信号时,使用截止频率为0.3 Hz的低通有限脉冲响应(Finite Impulse Response, FIR)对信号进行滤波,以减少信号中的高频噪声。
图1 信号裁剪示意图
对于信号的分割,本文按照30 s一段进行划分。在每一段中,若睡眠呼吸事件的持续时间不少于10 s,则将该段标记为睡眠呼吸事件段;否则,视为正常事件段。通常情况下,在一个完整的睡眠过程中,睡眠呼吸事件只占很少一部分。因此,睡眠呼吸事件与正常事件的比例往往很不平衡。为减少数据类别不平衡对分类模型的影响,本文对每个受试者的信号进行裁剪。裁剪过程如图1所示,将受试者整晚睡眠中的第一个睡眠呼吸事件作为开始,最后一个睡眠呼吸事件作为结束,舍弃两端所有的正常事件,只保留始末之间的信号用于后续分析与实验。
按上述方法对数据集进行处理后,得到各数据集的标签种类如表1所示。对于UCD数据集,正常事件和呼吸事件之比约为4∶1;对于HeartBEAT数据集,正常事件和呼吸事件之比约为2.6∶1。
表1 不同数据集标签之间的数量分布
由于使用到的3种生理信号本质都是时间序列,本文基于能够双向捕捉序列数据长期依赖关系的BiLSTM,构建多输入睡眠呼吸事件检测模型。并设计了一个由三层BiLSTM组成的单输入网络模型,来探究这三种信号单独输入时模型的检测性能。
1.3.1 双向长短时记忆网络
BiLSTM由两个传统的单向LSTM组成。LSTM是一种能够捕捉长时依赖的特殊RNN结构[26]。图2展示了LSTM的一个单元结构,称作记忆单元。其中,水平贯穿顶部的路径C为LSTM的主线,也就是长期记忆线(细胞状态)。h可以看作是短期记忆(隐藏状态),x代表事件信息,也就是输入。LSTM在主线的基础上添加3个“门”结构即遗忘门、输入门和输出门,以控制信息的流动和存储。
遗忘门,顾名思义,就是要遗忘或丢弃一些信息。遗忘门查看ht-1(前一个单元输出)和xt(当前输入),接受上一个长期记忆Ct-1,并决定要保留和遗忘这个长期记忆Ct-1中的哪些信息。输入门的作用是确定什么样的新信息要被存放在细胞状态中。针对遗忘门中丢弃的属性信息,在本单元模块找到相应的新的属性信息,添加进去,以补充丢弃的属性信息,得到更新的细胞状态Ct。输出门主要用来确定该单元需要输出的信息。首先通过一个Sigmiod函数来去确定细胞状态的哪部分需要输出,然后把细胞状态Ct通过tanh层处理,两者相乘得到最终我们想要输出的信息ht。
图2 LSTM网络结构
整个LSTM网络就是通过将多个记忆单元和门控机制连接在时间序列上来构建的。每个时间步都会根据上一个时间步的输入和隐藏状态来更新细胞状态和隐藏状态,从而实现对时间依赖关系的建模。
BiLSTM与普通LSTM在本质上没有区别。LSTM可以捕获输入数据顺序的关联性,而BiLSTM则是从数据两个方向建立数据关联性[27]。BiLSTM通过两个独立的单向LSTM分别从时间序列的两端对数据进行读取,并对两个方向的输出结果进行融合,使其不仅存储了某一时间节点之前的序列特征信息,而且存储了某一时间节点之后的序列特征信息。充分利用前后两端的时间信息能更好地完成时间序列的表征。
BiLSTM的计算过程可以通过下式表示:
(1)
(2)
(3)
1.3.2 睡眠呼吸事件识别模型构建
对于两种及以上信号的组合使用,本文构建了多输入BiLSTM网络,结构如图3所示。经过FIR低通滤波后的信号先分别由两层BiLSTM提取序列特征,随后将这些特征合并,作为整体再输入三层BiLSTM网络,且在每层BiLSTM之间,加入Dropout层以降低过拟合的影响。最后,通过全连接层和softmax层输出预测事件类别的概率。
图3 多输入网络模型的结构
对于信号的单独使用,本文构建了三层BiLSTM网络作为检测模型,结构如图4所示。输入的信号分别经过三层BiLSTM,最后由全连接层和softmax层输出预测事件类别的概率。
图4 单输入网络模型的结构
本文基于受试者对数据进行划分,按照4∶1的比例,将数据集随机划分训练集和测试集。同时,使用五折交叉验证的方法来评价模型的泛化能力。通过网格搜索的方法选择模型最优参数。优化器为自适应矩估计[28],损失函数为分类交叉熵。对于30 s一段的生理信号,不同的采样频率对应不同的采样点数。UCD数据集采样率为8 Hz,对应30 s一段的生理信号包含240个采样点;HeartBEAT数据集采样率为50 Hz,对应30 s一段的生理信号包含1500个采样点。在输入BiLSTM模型前,本文将输入信号划分成输入维度与时间步长组成的矩阵,设定输入步长为5,则UCD信号对应的输入维度为48,HeartBEAT信号对应的输入维度为300。多输入模型提取信号特征的BiLSTM层神经元数量设定为256,合并信号特征后输入的BiLSTM层神经元数量设定为512,Dropout层丢弃率为0.2。单输入模型每层BiLSTM的神经元数量设定为256,Dropout层丢弃率为0.2。
本文神经网络使用Keras(version 2.3.1)、TensorFlow (version 2.2.0)进行搭建。训练和测试过程在一台64 GB RAM、8 GB 1080 Ti GPU的Windows Server服务器上进行。
1.3.3 模型评价指标
对于模型性能的评估,本文分别使用了整体指标和类别指标。整体指标包括准确率(Accuracy),宏观F1得分(F1-score,MF1),卡帕系数(Kappa,κ)以及ROC曲线下面积(Area Under Curve,AUC)。类别指标包括各个睡眠分期的精确率(Precision),灵敏度(Sensitivity)和类别F1得分。对于准确率、F1得分、精确率和灵敏度,本文通过混淆矩阵进行评价。
在混淆矩阵中,准确率是分类模型预测正确的结果占总样本的百分比(式4)。精确率(Precision)又叫查准率,指所有被预测为正的样本中,实际为正的样本的概率(式5)。灵敏度又叫召回率(Recall),指实际为正的样本中被预测为正样本的概率(式6),该指标反映了模型预测负类样本的能力。F1得分是精确率和灵敏度的加权调和平均(式7),能够综合考虑这两个指标。
(4)
(5)
(6)
(7)
式中:TP、TN、FP和FN分别代表“真阳”、“真阴”、“假阳”和“假阴”。
本文组合使用PSG中的口鼻气流(Flow,F)、胸部活动(Thoracic,T)和腹部活动(Abdominal,A)信号构建睡眠呼吸事件检测模型,并以这三种信号单独使用或两两组合使用时训练的模型作为对比。各模型在两个数据集上的整体性能如表2所示。各模型的评价指标为五折交叉验证后的均值。由表中结果可知,对于不同的信号组合,同时使用三种信号构建的检测模型具有最优性能。在UCD数据集上的准确率、卡帕系数、宏观F1值分别达到了87.98%,0.596和79.70%;在HeartBEAT数据集上的准确率、卡帕系数、宏观F1值分别达到了88.49%,0.759和87.94%。显然,模型在HeartBEAT数据集上的检测效果优于在UCD的。
表2 不同网络模型的整体性能
为进一步了解各模型的检测效果,本文分析了不同模型的分类性能,结果如表3所示。可以发现,不管是对于正常事件(Normal, N)还是睡眠呼吸事件(Apnea and Hypopnea, AH)的检测,在两个数据集上,都是同时使用三种信号构建的模型展现了最优的分类性能。而对于睡眠呼吸事件的检测,由HeartBEAT数据集训练的各种模型的分类指标均远高于UCD数据集的。同时使用三种信号在HeartBEAT数据集上构建的呼吸事件检测模型的精确率、灵敏度和F1值分别达到了86.12%,84.92%,85.38%。
表3 不同网络模型的类别性能
图5是各模型分别在UCD数据集和HeartBEAT数据集上的ROC曲线。对于ROC曲线的构建,本文采用的测试集为5折交叉验证中结果最优的一折。可以发现,对于组合信号的使用,各模型在两个数据集上的分类性能表现出较高的一致性。无论是在UCD数据集还是HeartBEAT数据集上,都是同时使用三个信号构建的模型取得最高AUC值。对于信号的单独使用,在UCD数据集上,分别使用胸部活动或腹部活动构建的模型取得较高的AUC值;而在HeartBEAT数据集上,仅使用胸部活动构建的模型却取得了最低AUC值。这可能与HeartBEAT数据集中的受试者均患有心血管疾病有关。由于受试睡眠期间的心跳运动并不规律,从而会对胸部活动信号产生一定的影响。
图5 各模型在不同数据集预测结果绘制的ROC曲线
此外,本文还探究了不同信号在模型构建中的贡献程度。图6展示了在UCD数据集上,不同信号构建模型的准确率维恩图。可以看出,在仅使用单个信号时,用腹部活动信号构建的模型准确率最高,为85.61%;其次是使用胸部活动信号构建的模型,准确率为84.73%;使用口鼻气流信号构建的模型准确率为83.94%,略低于胸部活动信号构建的模型。在同时使用两种信号时,与腹部活动组合的信号可以为模型提供较高的准确率。而由胸部活动和口鼻气流两个信号训练的模型,准确率甚至低于仅用腹部活动构建的模型,该情况进一步表明腹部活动对模型的检测性能具有较高的贡献度。同时使用三个信号时,构建的模型准确率最高,为87.98%。
图7展示了在HeartBEAT数据集上,不同信号构建模型的准确率维恩图。从该图中可发现与图6一致的情况,即腹部信号对构建的模型做出了较大贡献,同时使用三个信号构建的模型具有最高的准确率。单独使用口鼻气流信号构建的模型准确率最低,这是因为口鼻气流信号容易受噪声影响[29,30],因而该信号产生的贡献十分有限。
图6 UCD数据集不同信号构建模型准确率的维恩图
图7 HeartBEAT数据集不同信号构建模型准确率的维恩图
表4统计了同样使用UCD数据集构建分类预测模型的相关领域文献[31-39]。这些研究构建的模型也均为二分类检测模型。可以发现,对于睡眠呼吸事件的检测,多数研究倾向于使用ECG或SpO2信号来构建模型;相比基于特征工程的方法,深度学习模型通常能取得更优的检测性能。本文提出的基于胸部活动、腹部活动以及口鼻气流组合信号的多输入分类模型取得了较为出色的准确率。
表4 基于UCD数据集的同类研究比较
睡眠作为一种重要的生理现象,关乎人类生命健康。准确高效地检测异常睡眠呼吸事件,是评估睡眠质量、保障人体健康的重要途径。本文基于BiLSTM构建多输入睡眠呼吸事件检测模型,组合使用PSG中的口鼻气流、胸部活动和腹部活动信号作为模型的输入,在UCD数据集和HeartBEAT数据集上进行训练与测试。实验结果显示,相比于单信号输入的模型,组合使用三种信号作为输入的模型具有最优检测性能,在UCD和HeartBEAT数据集上的准确率、卡帕系数、宏观F1值分别达87.98%、0.596、79.70%和88.49%、0.759、87.94%,表明了本文构建的多输入睡眠呼吸事件检测模型的有效性,可为睡眠呼吸疾病领域的自动化诊疗提供一定参考。
在SA自动检测领域,现有的大多数研究均倾向于采用单输入信号来训练模型。然而,多项研究结果表明,相比于单信号输入模型,基于组合信号的睡眠呼吸事件模型具有更好的检测性能[21,22],本文的实验结果也进一步证明了这一观点。且在PSG信号的选择上,现有研究多倾向于单一的ECG或SpO2信号,对于更能直接表征睡眠呼吸事件的口鼻气流、胸腹活动等生理信号却少有研究[23]。美国睡眠医学会也建议将胸腹活动信号作为检测呼吸暂停的主要信号[40],本文的实验结果也证明了此建议的合理性,胸腹活动信号在模型的构建中具有较高贡献度,表明了将胸腹活动信号纳入睡眠呼吸事件检测中的必要性。
本文构建的多输入模型在两个数据集上的准确率相差不大,但是在UCD数据集上的卡帕系数和宏观F1值却远低于在HeartBEAT数据集上的。这可能与UCD数据集数据不均衡有关。UCD数据集中的正常事件与呼吸事件之比为4∶1,这使得模型在UCD数据集上的表现更容易受到正常事件的影响,从而能取得较出色但具有一定误导性的准确率。且在评估模型的真实分类性能时,在UCD数据集上进行训练的各模型对于正常事件的检测效果均远优于对睡眠呼吸事件的检测效果,进一步表明数据不均衡对实验结果的影响。而卡帕系数和宏观F1值则不会受此干扰,能更为真实准确地反映模型的分类性能。
本文关注睡眠呼吸障碍患者的睡眠状况,采用深度学习方法构建多输入睡眠呼吸事件检测模型,旨在为进一步开发SA自动筛查工具提供参考。实验结果显示,组合使用口鼻气流、胸部活动和腹部活动三种生理信号进行训练的模型能取得最佳检测性能,在UCD和HeartBEAT数据集上的准确率分别达到了87.98%和88.49%,表明了本文构建的检测模型的有效性。此外,本文还探究了不同睡眠信号在构建睡眠呼吸事件检测模型中的贡献程度,进一步证实了将胸腹活动信号用于睡眠呼吸事件检测的必要性。在将来的工作中,本文的模型还可以扩展到分类更为细致的睡眠呼吸信号中去,如分辨OSA、CSA和MSA事件,为睡眠呼吸疾病领域提供一个更加完整的自动化检测方法。