葛 靖,刘子龙
(上海理工大学 光电信息与计算机工程学院,上海200093)
近年来,睡眠呼吸暂停症(Sleep Apnea Syndrome,SAS)越来越受到人们关注。SAS是发生在睡眠过程中的一种常见的睡眠障碍,一般由上气道塌陷或其他气道阻塞引起的呼吸气流减少或消失且反复发作引起。据研究表明,SAS可能导致多种疾病,如糖尿病、慢性肾病、抑郁症等,严重的甚至会导致猝死。通常来讲,最好的睡眠呼吸暂停筛查和诊断方法为多导睡眠图(Poly Somno Graphy,PSG),但获取PSG需要病患夜间在医院进行睡眠监测并记录各种生理信号,不仅操作不便,且成本较高[1]。
研究人员已经提出多种使用较少生理信号的检测方法来简化呼吸事件自动检测,这在一定程度上克服了PSG的缺点。这些方法多基于生理记录,例如心电信号(Electro Cardio Graph,ECG)、血氧饱和度、鼾声,呼吸信号等[2]。目前大多数替代研究都集中在从生理信号中提取时间特征、光谱特征和非线性特征,以及各种特征选择方法。传统机器学习分类方法的人工特征识别能力较好,特别是许多监督学习方法如支持向量机和神经网络等,已被广泛应用于SAS检测。
深度学习方法在近几年逐渐受到人们的青睐,它们在各领域应用中表现出优异的性能。传统的分类学习方法在睡眠呼吸紊乱事件的自动检测方面取得了较高的性能,但手动特征提取仍需要相关专业知识且劳动强度大。深度学习无需使用任何领域知识即可自动从输入信号中学习并查找特征,有着强大的学习能力[3]。
本文选用单导联心电信号来进行睡眠呼吸暂停综合症的检测。心电信号易受到SAS事件的影响,其检测也相对普及,可由各种可穿戴设备精准测量。本研究选择使用卷积网络(Convolutional Neural Networks,CNN)和长短时记忆模型(Long-Short Term Memory,LSTM)来进行呼吸暂停事件的检测。
本研究中用于分析的心电信号均来自于的Physionet Apnea-ECG数据库。医学专家对该数据集做了专门的标注信息,具有较强的权威性。每个记录都带有一组参考呼吸暂停注释,注释记录每分钟内呼吸的状态。这是专家根据同时记录的相关信号得出的,并提供总呼吸暂停低通气指数。
该数据库分为训练集和测试集,采样频率为100 Hz,每组包含35条患者数据记录,每条记录具有大约8个小时的ECG数据。本实验共有32位受试者,包括男性25位、女性7位。受试者年龄在27~63岁之间,体重在53~135 kg之间。“N”和“A”是专家标记的注释(A代表呼吸暂停,N代表非呼吸暂停)[4]。
如图1所示,信号预处理分为两个阶段。第一阶段主要任务为去除ECG记录中的噪声。从数据集得到的信号存在多种干扰等,如基线漂移、工频干扰等。为了保证噪声心电分类的准确率,需要对噪声进行处理。首先,ECG信号通过60 Hz的陷波滤波器滤波;然后使用截止频率分别为5 Hz和35 Hz的带通二阶ButterWorth滤波器滤波。每个样本为1 min的ECG信号,划分好相应的训练集和测试集,处理后的ECG信号作为卷积模型的输入。
第二阶段从每段ECG信号中提取了RR间隔和ECG派生呼吸(ECG Derived Respiration,EDR)信号。由数据集注释信息得到每段ECG信号的R波发生时间,由此得到RR间期信息和EDR信号。EDR信号的获得经过以下步骤:先滤波后的心电信号进行样板插值,根据R波峰的幅度变化得到R波的幅度调制信号;然后经过平滑处理和下采样得到EDR信号[5];最终根据数据集注释信息和处理好的ECG信号,得到数据集每60 s的ECG信号的间接特征。RR间期和EDR信号。此外,还需从数据集注释中选取部分与SAS事件有关的其他特征,例如年龄、性别、身体质量指数等。
图1 数据处理流程图Figure 1. Flow chart of data process
完成所有数据预处理程序后,第一、二阶段的信号分别作为两个模型的输入。
CNN与LSTM的选择参考双方的优点:CNN模型优点是自动进行特征提取,处理高维数据无压力,在处理初始ECG信号有很好的优势,且在多份SAS研究文献中显示达到较好的检测效果;LSTM模型具有时序记忆优点,但时间跨度很大时,序列过长会使得准确率下降,无法有效解决梯度问题。所以原ECG信号(6 000×1)作输入时无法发挥它的优点。当把ECG派生特征R-R间期当作输入,则大幅降低了数据量。在时序上,ECG信号是有一定的联系的,例如心率变异性(Heart Rate Variability,HRV)是由两个相邻的R-R间期时间长短决定的,HRV在SA事件上存在变化[6]。LSTM在时序上的特征提取在本文目标上相对优于CNN空间特征提取。
1.3.1 CNN模型
使用一维CNN对时间序列心电信号进行分类,可无需进行任何手动特征提取和后处理,即通过适当的训练,卷积层即可学习提取特定于患者的特征。CNN层由1个卷积层、池化层和隐藏层组成。通过卷积运算输出特征图,卷积层为这些层学习激活输入信号中特定模式的滤波器(内核)。内核在输入信号上滑动时与输入信号卷积。通过卷积运算输出特征图,一维卷积层的第i个神经元输出如下
(1)
式中,b为偏置;f为卷积层的激活函数;m为卷积核的个数;xi为输入的序列;wj为卷积核的权重矩阵[7]。
图2 卷积网络模型结构Figure 2. Architectures of CNN model
表3表1 CNN模型的网络配置Table 1. Network configuration of CNN model
用于本研究的一维CNN的模型结构如图2所示。CNN模型将预处理后的心电段作为输入,每个样本6 000点(60 s×100 Hz),输入层的维度是 6 000 × 1。Relu被用作激活函数,每个卷积后都有一个激活函数,并且通过卷积层之间的池化层对特征进行压缩,简化网络复杂度。在卷积前进行一个BN层来标准化参数,每个池化层之后都进行一个Dropout来防止过拟合[8]。最终通过一层全连接层结合sigmoid激活函数输出预测结果。
从表1看到的模型参数将3种内核大小应用于卷积层50×1、30×1、10×1。卷积层的内核大小从第一个逐渐减小到最后一个。当所有内核尺寸都太小或统一大时,则会提取不必要的特征或丢失主要特征以降低识别率。
1.3.2 LSTM模型
LSTM属于循环神经网络(Recurrent Neural Network,RNN)的一种改良,方便学习时间相关性的数据随着时间的推移。LSTM基于一个内存单元,通过输入门处理其内部状态的读、写和重置功能(it),此外还有输出门(ot)和遗忘门(ft)。每个门的工作是记住何时以及在多大程度上应该更新内存中的权重。遗忘门处理单元的内部状态,其自适应地忘记或重置单元的内存。这些门的功能如以下表达式所示。
it=σ(Wxixt+Whiht-1+bi)
(2)
ft=σ(Wxfxt+Whfht-1+bf)
(3)
ot=σ(Wxoxt+Whoht-1+bo)
(4)
gt=σ(Wxcxt+Whcht-1+bc)
(5)
ct=ft·ct-1+it·gt
(6)
ht=ot·φ(ct)
(7)
其中,c是细胞激活载体;σ是非线性双曲正切函数;xt是在时间t到存储单元层的输入;W是权重矩阵;bi、bf、bc、bo是偏置量。
表2 LSTM模型的网络配置Table 2. Network configuration of LSTM model
图3 LSTM模型结构Figure 3. Architecture of LSTM model
首先把经过第二阶段处理的ECG间接信号作为Input1,通过LSTM 层提取时序特征;接着把每段信号的其他医疗信息年龄性别等作为Input2,设计一个LSTM和FC的组合模型,两个结构并行;最后通过融合(Merge)层连接输出。考虑到输入数据的尺寸不同,先加入批归一化(Batch Normalization,BN)层对数据标准化,即减去平均值并除以每个值周期的标准差来对信号进行归一化。如果不进行标准化,则数据分析的结果将受到要素的不同尺寸单位的影响。在以上两个深度学习模型中,归一化用于在0和1之间转换数据;最后对所有模型进行训练,直到过度拟合开始发生。根据模型的训练情况一步步对超参数进行调整,不断优化模型。如果验证损失在长时期内没有得到改善,则停止训练,并将权重恢复为在验证集中达到最佳性能的值。
本文使用Tensorflow为后端的Keras和Python3.6来实现深度学习方法。Keras是一个深度学习库,用于构建和评估设计的深度学习方法。每种方法的培训和测试都是在Win10环境中使用GTX1050Ti的硬件规范进行的。深度学习方法的训练完全由反向传播算法监督。基于ADAM更新规则,通过最小化交叉熵损失函数对模型参数进行优化,将数据分割为256个数据段的小批,以优化培训和测试过程。在对每个小批进行训练之后,使用此配置计算一个累积梯度。
本文有3类评价指标:准确率(Accuracy)为被正确分类的样本所占的比例;精准率(Precision)是预测出来为正样本的结果中,有多少是正确分类;召回率(Recall)为所有正例中被正确分类的比例,衡量了模型对正例样本的识别能力
Recall=TP/TP+FN
(8)
Precision=TP/TP+FP
(9)
Accuracy=TP+TN/TP+TN+FP+FN
(10)
其中,TP、TN、、FP和FN分别代表“真阳性”、“ 真阴性”、“ 假阳性”和“假阴性”。
表3 CNN模型和LSTM模型的评价性能
由表3可以看出,LSTM优于CNN模型。CNN模型使用原始ECG信号作为输入,指标分别为 75.3%、78.1%、80.7%;而LSTM模型的指标分别达到 87.4%,84.2%,85.5%,在ECG长时序分段上从衍生信号自动提取特征更具有优势。
从表4可知,本文方法的性能具有一定的优越性。文献[19]使用了隐马尔可夫和DNN模型,指标分别为84.7%、88.9%、82.1%,精准率和本文相近,准确率上本文较优。文献[4]使用传统的SVM达到了91.29%的准确度和89.84%的灵敏度,但其在信号处理上过于复杂繁琐。特征的提取多达十几种,涉及到了信号的时域、频域和非线性特征的特征集。而基于LSTM的方法准确度尽管低于SVM传统分类方法,但仍具有较好的性能,并结合了人工特征提取和LSTM的模型优点,相比传统机器学习分类方法更为简便,有作为呼吸暂停综合征患者初筛手段的潜力。
表4 与传统方法的性能比较
本文也分析了深度学习CNN 模型的不足。在对比了其他多个使用CNN方法的文献[8,10,12,14]后,研究者认为在输入为原始ECG信号时,CNN相比其他模型更为适用,且相对ECG时间较短的分段效果更好,其在特征提取时会提高针对性。尽管CNN模型在本文所得精度较低,但当选用第二个模型LSTM以原始ECG信号段作为输入时,分类效果反而不如CNN模型,存在着诸多问题如精度更低且模型训练时间长等。使用CNN方法的研究多以原始ECG信号段作为输入,实验效果较好。本文的CNN模型也对其做了参照,但并未能达到其所示效果,原因可能为数据库与处理方式不同。具体地,文献[10]等选用的是每10 s一个样本,本文所选的数据库是基于60 s一次的分段标注,带来的问题是信号数据太多,不能使卷积网络更有针对性的提取特征,导致最终的训练结果不太理想。
LSTM模型输入则在原始数据集的基础上做了二次处理,从ECG中提取了EDR信号和RR间期。它们和SAS事件的发生时序上都有着联系,且使模型的特征提取和学习更为精准。考虑到LSTM的记忆性会得到更好的效果,故文中设计了此模型,且该模型在训练指标上优于CNN模型。
本文基于输入ECG信号的处理差异,以深度学习方法设计了相应的最优模型CNN和LSTM用于检测呼吸暂停事件的发生。通过对比后发现,LSTM模型通过ECG衍生信号作为输入,结合了人工特征信号提取和LSTM的优点,在长时序分段信号上从衍生信号自动提取特征更具有优势,具有更好的效果。本文方法提高了SAS检测的实用性、准确性,更加适用于长时序分段的心电信号。本研究的不足之处在于数据来源不够广泛,且模型输入相对依赖R峰的精准检测。在未来的工作中,可以验证样本ECG时间段的长短划分是否具有对应的最优模型,并进一步扩展数据来源,优化网络结构及参数,提高泛化能力。