栗伟松,汤敏芳,何征岭,王 鹏,杜利东,方 震,陈贤祥
(1.中国科学院空天信息创新研究院,北京 100190; 2.中国科学院大学电子电气与通信工程学院,北京 100049)
人的睡眠过程十分复杂且对人体的自我修复至关重要。睡眠不足会导致各种健康问题,引发中风、脑损伤等疾病[1]。多导睡眠图(Polysomnography, PSG)是睡眠监测研究的“金标准”,睡眠专家基于多导睡眠仪获取的多通道生物电信号,以30 s为单位将睡眠过程分成觉醒期(Wake, W)、快速眼动期(Rapid Eye Movement, REM)和非快速眼动期(Non-Rapid Eye Movement, NREM)。其中NREM又包括S1~S4这4期,S1和S2期被称为浅睡期,S3和S4期被称为深睡期[2]。尽管多导睡眠监测准确度高,但操作繁琐耗时且舒适度低,故低负荷的睡眠分期方案研究具有重要的现实意义。
早期的低负荷睡眠分期研究以单通道脑电(Electroencephalogram, EEG)信号为基础进行,但监测EEG信号时,脑电电极导电胶置于头皮层上易引起被测者的不适,对其正常唾眠造成影响,且EEG信号受运动、出汗伪影等干扰严重[3-4]。研究表明,可以反映人体自主神经系统的心电(Electrocardiogram, ECG)信号可以较好地反映睡眠状态,随着可穿戴生理参数监测设备的不断发展,低负荷的睡眠分期方案多基于ECG信号、呼吸信号及瞬时心率(Instantaneous Heart Rate, IHR)序列等ECG衍生信号进行[5-7]。心电图12导联体系包括6个肢体导联(Ⅰ、Ⅱ、Ⅲ、aVR、aVL和aVF)和6个胸导联(V1~V6)。一般多导睡眠仪只记录一个导联的ECG,通常为Ⅰ导联、Ⅱ导联或V5导联。基于多导睡眠仪采集的单导联ECG信号、呼吸信号及ECG信号衍生信号等,研究者们在睡眠分期领域进行了大量研究并取得了显著的成果。Redmond等[8]通过提取ECG及呼吸信号特征,较早通过机器学习方法实现睡眠分期。Yucelba等[9]对采用奇异值分解、变分模式分解等方法从ECG信号中提取特征,经最佳优先搜索算法特征选择后,利用随机森林分类器对数据集进行分类,得到模型睡眠三分类平均准确度为78.78%,四分类的平均准确度为73.09%。王爱波[10]利用隐马尔可夫模型提取ECG信号RR间期序列数据并依据心率变异性(Heart Rate Variability, HRV)指标变化情况实现睡眠自动分期。冯静达等[11]基于从ECG信号提取的时域、频域和非线性特征,构建4层神经网络模型,获得睡眠三分类准确率为83.90%。
上述基于传统机器学习的睡眠分期方案关键在特征的提取、选择以及分类器的设计构建上,过程复杂且对原始信号的特征提取不够充分。随着深度学习算法研究的深入,深度神经网络被广泛应用于睡眠分期等的研究[12-17],深层次提取信号粗粒度与细粒度特征,采用端到端的卷积神经网络(Convolutional Neural Networks, CNN)、长短时记忆(Long Short Term Memory, LSTM)网络、门控循环单元(Gated Recurrent Unit, GRU)等算法实现自动睡眠分期,通常具有更高的分类准确度。Wei等[18]构建基于堆叠自编码器(Stacked Autoencoder, SAE)的深度神经模型,得到睡眠三分类预测准确率为77.00%。Radha等[19]利用LSTM基于单导联ECG提取的时域、频域特征实现睡眠分期,得到六分类准确率为76.30%。
当前基于单导联ECG信号的自动睡眠分期研究已经取得了一定成功,但相关研究缺乏对ECG信号片段内部时间关联性特征提取,也缺少对基于同一样本集的机器学习和深度学习算法分类结果的对比分析。
针对上述问题,本文提出一种结合自注意力机制的深度神经网络模型以实现自动睡眠分期。该模型包含4个CNN模块、2个双向GRU(Bidirectional GRU, Bi-GRU)模块和1个自注意力机制(Self-Attention, SA)模块,研究对该模型性能进行评估,同时将该方案与经典机器学习睡眠分期方案进行对比分析。实验结果表明SA模块的引入进一步提取ECG信号片段内部时间关联性特征,且相较于传统机器学习睡眠分期方案,本文模型能较好地实现基于单导联心电信号的特征提取与睡眠分期,有助于基于单导联心电信号的低负荷睡眠监测技术的推广应用。
本文基于自注意力机制的深度神经网络自动睡眠分期算法流程如图1所示,将原始单导联ECG数据进行简单滤波及零均值归一化预处理后以30 s为单位划分片段,送入包含CNN模块、Bi-GRU模块和SA模块的深度神经网络模型,输出最终的睡眠分期结果。
图1 模型实现自动睡眠分期流程图
本文提出的算法模型主要由4个CNN模块、2个Bi-GRU模块和1个SA模块构成。使用一维CNN模块提取信号空间特征后,由Bi-GRU模块提取序列前后相关信息,SA模块对每个时刻Bi-GRU单元的输出重要度加权来提取序列每个单元的相关信息。
算法详细流程如图2所示,其中输出特征维度基于SHHS2数据集计算获得。
图2 算法模型流程图
模型结构及参数具体描述如下:
1)卷积模块:使用一维卷积神经网络作为特征提取器,获取ECG信号空间特征。
每个CNN模块包含2个卷积层(Convolution, Conv),采用全零填充以保持输入特征图的尺寸不变。使用一个最大池化层(Max-Pooling),减小特征维度,提高所提取特征的鲁棒性并缓解过拟合。
在最后一个CNN块后连接一个丢弃层(Dropout),在网络前向传递过程中关闭一些神经元和它们的连接,以提高神经元的学习能力并防止过拟合。引入随机生成概率向量r,r服从参数为p的伯努利分布。
2)Bi-GRU模块:特征提取能力强大,捕捉特征的内部相关性,获取ECG信号时间特征。
模型包含2个Bi-GRU模块,每个Bi-GRU模块结构如图3所示,Bi-GRU层包含正反2个方向的GRU,提取出ECG序列的前后相关信息。GRU和LSTM网络都通过设计避免了长期依赖问题,拥有记忆长期信息的能力。且相比于LSTM,GRU网络参数量更少,模型更易训练,提高了训练效率。Bi-GRU网络通过2个方向完全独立的GRU处理前后两端的ECG信号,深入挖掘双向时间结构信息。
(a) Bi-GRU结构图
(b) GRU结构图图3 Bi-GRU模块结构图
对于i时刻的输入xi,GRU的输出hi的计算过程如式(1)~式(4)所示:
ri=σ(Wxrxi+Whrhi-1+br)
(1)
zi=σ(Wxzxi+Whzhi-1+bz)
(2)
(3)
(4)
最终输出hi′由前向GRU输出hif和后向GRU输出hib共同决定,由下式(5)计算获得,其中“[ ]”表示2个向量相连。
hi′=σ[hif,hib]
(5)
3)SA模块:在长序列中对Bi-GRU每个单元的输出重要度做出打分,捕捉片段内部信息相关性。
Bi-GRU提取了序列的前后相关性特征,但却无法在长序列中凸显重要的信息,SA模块的引入弥补了这一缺点,自动捕捉长序列内部的关联信息,增强了模型对ECG信号时序特征的提取能力。此外,SA模块权重计算不存在依赖现象,可并行计算,大大提高了计算效率。
注意力模型可以宏观上理解为一个查询(Query, Q)到一系列键-值(Key-Value, K-V)对的映射,本质上是对源数据元素的V进行加权求和,而Q和K用来计算对应V的权重系数。对于自注意力机制而言,查询向量序列Q、键向量序列K和值向量序列V这3个矩阵均来自同一输入,信号经自注意力机制前后具有相同的维度[20]。
用X=[x1,x2,…,xn]表示N个输入信息,Q、K和V通过式(6)~式(8)所示的线性变换获得,其中WQ、WK和WV是可以学习的参数矩阵,输出序列为与输入X同等长度的H=[h1,h2,…,hn]。
Q=WQX
(6)
K=WKX
(7)
V=WVX
(8)
根据Q和K计算权重系数,为防止Q与K之间的点乘积结果过大导致softmax函数进入无梯度区域,模型采用了缩放点积注意力模型,结构如图4所示。输入特征X维度为(DX,N),经参数矩阵WQ、WK和WV线性变换后获得Q、K和V这3个矩阵的维度分别为(DQ,N)、(DK,N)和(DV,N)。缩放点积注意力模型相对于点积模型多了一个键向量维度DK的平方根以起到调节作用,让训练过程中具有更稳定的梯度。利用softmax函数将其结果归一化为概率分布,然后再乘以矩阵V就得到权重求和的表示。输出特征维度为(DH,N),每个列向量hi计算如式(9)所示。其中i,j∈[1,N],为输出和输入向量序列的位置;s(ki,qi)是注意力打分函数,Dk是键向量维度。
图4 缩放点积注意力结构
(9)
(10)
在网络的最后引入批标准化(Batch Normalization, BN),是为了加快网络的训练和收敛速度,防止梯度爆炸和梯度消失,同时也防止过拟合。经过BN之后,将输出结果展开送入全连接层(Dense)输出类别概率分布。
本研究实验数据来源于睡眠数据网站(网址为:https://www.sleepdata.org)[21-23]提供的睡眠心脏健康研究(Sleep Heart Health Study,SHHS)数据库、动脉粥样硬化的多民族研究(Multi-Ethnic Study of Atherosclerosis,MESA)数据库及美国麻省理工多导睡眠数据库(MIT-BIH Polysomnographic Database, MITBPD)[24]。SHHS数据库数据由约翰霍普金斯大学的睡眠心脏健康协调中心在不同时间收集获得,包含SHHS1和SHHS2这2个数据集,分别包含了5793名受试者和2651名受试者的原始多导睡眠图数据。MESA数据库数据由美国国立心脏、肺和血液研究所提供,包含了2056名受试者的多导睡眠图数据。MITBPD是美国麻省理工采集的包含睡眠期间多种生理信号的多导睡眠数据库,包含了16名受试者多导睡眠图数据。ECG记录在SHHS1、SHHS2、MESA及MITBPD数据集中分别按125 Hz、250 Hz、256 Hz和250 Hz采样。上述数据集被标记为6个睡眠阶段,包括唤醒、REM、S1、S2、S3和S4期。研究将睡眠阶段进行四分类,故将S1和S2结合标记为浅睡眠(Light Sleep)阶段,S3和S4结合标记为深睡眠(Deep Sleep)阶段。在SHHS1、SHHS2及MESA数据集中均随机选取了1000名受试者的单导联ECG信号数据进行非独立被试研究。表1睡眠统计了所选SHHS2数据集数据不同睡眠时期片段数量,可知各睡眠片段分布不均,Wake和Light Sleep时期片段比例较高。
表1 SHHS2数据集不同睡眠时期比例
此外由于心电信号是一种相对微弱的生理信号,存在基线漂移、工频噪声和肌电干扰等噪声,为便于研究和比较,对数据进行简单滤波及零均值归一化处理,将原始数据映射到均值为0、标准差为1的正态分布。根据睡眠分期准则[2],将数据划分为30 s的片段以进行后续研究,每个片段对应睡眠分期的一个标签。
本文所有实验基于Python语言编写代码,使用深度框架TensorFlow2.0搭建深度学习网络。采用自适应矩估计(Adaptive Moment Estimation, Adam)优化器更新网络权值。采用多分类交叉熵函数作为损失函数实现睡眠片段四分类。模型训练时采用五折交叉验证的方法,将数据集片段均分为5份,每次不重复地选取一份作为测试集,其余作为训练集,获得模型睡眠分期各指标结果,取五折测试结果的平均值作为模型的性能指标。利用网格搜索法寻找学习率、批大小和迭代次数的最优组合,学习率(Learning Rate)设为0.0001,批量(Batch)大小设置为128,迭代次数(Epoch)设为500。CNN模块每个卷积层采用12个5×1的卷积核,Max-Pooling层的树池选用3×3的矩阵,Dropout层p为20%。Bi-GRU模块每个GRU记忆单元个数为12。SA模块键向量维度为24。
模型训练过程中的损失函数(Loss)和准确率(Accuracy, Acc)变化情况如图5所示,经多轮迭代,损失值和准确率逐渐收敛并趋于稳定。
(a) Loss变化曲线
(b) Acc变化曲线图5 模型训练过程中Loss与Acc变化曲线
研究采用准确率、精确率(Precision, P)、召回率(Recall, R)、F1值(F1-score)和相关性系数(Kappa)5个指标来衡量模型整体分类效果[25],采用Acc衡量子类分类效果,同时绘制混淆矩阵进一步观察模型分类效果。
以TP、FP、FN和TN分别表示被分类正确的正样本数(True Positive, TP)、被分类错误的正样本数(False Positive, FP)、被分类错误的负样本数(False Negative, FN)、被分类正确的负样本数(True Negative, TN),给出如表2所示的混淆矩阵定义。
表2 混淆矩阵定义
1)准确率为模型分类正确样本数占测试集总样本数的比例,计算公式为:
(11)
2)精确率又称查准率,为模型正确预测为正例样本数占全部预测为正样本数的比例,计算公式为:
(12)
3)召回率又称查全率,为模型正确预测为正的样本数占全部样正本数的比例,计算公式为:
(13)
4)F1值为模型分类精确率与召回率的调和值,计算公式为:
(14)
(15)
5)Kappa系数基于混淆矩阵计算得到,取值范围在-1~1之间,通常大于0。Kappa系数用于衡量模型预测结果和实际分类结果是否一致,Kappa≤0.40表明二者一致性差,0.40 (16) 其中,po为每类正确分类的样本数量之和除以总样本数,即实际一致率,pe为所有类别分别对应的实际与预测数量的乘积总和,除以样本总数的平方,即理论一致率。 模型性能由多指标进行评估,模型分类准确率、精确率、召回率、F1值和相关性系数越高,模型性能越好。 本文采用结合自注意力机制的深度神经网络模型进行自动睡眠分期研究,并在SHHS1、SHHS2、MESA和MITBPD数据集上分别选取了1000、1000、1000和16名受试者的单导联心电信号数据进行训练和测试获得睡眠分期四分类(Wake, Light Sleep, Deep Sleep和REM)五折交叉验证平均结果如表3所示。 表3 各数据集上模型分类结果统计 为进一步探究本文提出的深度学习模型分类效果,研究同时基于选取的SHHS2数据集ECG信号构建了睡眠分期的机器学习模型。对ECG信号预处理后采用PT算法检测信号的QRS波群提取R波波峰[26],获得ECG信号的HRV信息,进而获得IHR时间序列和心电导出呼吸(ECG Derived Respiration, EDR)信号。参考文献[27-30],提取HRV、IHR及EDR信号时域、频域、熵等特征共计99维,如表4所示。 表4 提取的ECG信号特征 完成特征提取后采用极端随机树(Extremely Randomized Trees, ET)进行特征的重要性度量,选择重要性较高的特征,使用逻辑回归(Logistic Regression, LR)、决策树(Decision Tree, DT)、K近邻(K-Nearest Neighbor, KNN)算法、随机森林(Random Forest, RF)和梯度提升树(Gradient Boosting Decision Tree, GBDT)分类器采用五折交叉验证实现基于机器学习的睡眠分期。 通过对比保留重要度在前10、前20、前30、前50及全部特征的睡眠分期结果,保留重要度在前20的特征得到的睡眠分期效果最佳,故提取保留重要性在前20的特征用于后续分析,保留的特征包括9个时间窗口内RR间期10分位数(rr9pct10)和25分位数(rr9pct25)、5个时间窗口内RR间期10分位数(rr5pct10)、9个时间窗口内RR间期75分位数(rr9pct75)、EDR信号25分位数(edrpct25)、3个时间窗口内RR间期中位数(rr3med)、EDR信号75分位数(edrpct75)、EDR信号中位数(edrmed)、IHR信号功率谱密度最大值(ihrfmax)、9个时间窗口内RR间期75分位数与25分位数差值(rr9rg25-75)、相邻RR间期的差方和的均值的平方根(rmssd)、EDR信号标准差(edrstd)、9个时间窗口内RR间期97.5分位数与2.5分位数差值(rr9rg2.5-97.5)、9个时间窗口内RR间期均值(rr9mean)、IHR最大值(ihromax)、3个时间窗口内RR间期75分位数(rr3pct75)、EDR信号75分位数与25分位数差值(edrrg25-75)、5个时间窗口内RR间期均值与中位数差值(rr5mean-med)、9个时间窗口内RR间期90分位数与10分位数差值(rr9rg10-90)和连续RR间期间隔差大于20 ms的数量(nni20)。保留特征对应的归一化后的重要度如图6所示。 图6 保留特征及其对应的重要度 以SHHS2数据集为例分析,本文提出的CNN-BiGRU-SA模型与未添加SA的CNN-BiGRU模型以及几种机器学习模型算法子类分类准确度及总体分类情况对比结果如表5~表6所示,各分类指标均给出了五折交叉验证测试结果的平均值和误差范围(以“±”后数据表示误差范围),其中“Weighted Acc”为结合标签权重获得的分类准确率的加权平均值。可知,提出模型对睡眠分期的总体分类准确率、精确率、召回率、F1值和相关性系数相比于其他分类算法均得到了提升。准确度、精确率和召回率分别达到了81.01%、82.16%和80.94%,相比未加SA模块的CNN-BiGRU模型分别提升了6.43个百分点、6.70个百分点和6.46个百分点,相比其他机器学习模型的最优模型GBDT分类准确度、精确率和召回率分别提升了4.57个百分点、4.92个百分点和4.38个百分点。 表5 算法子类分类准确度对比 表6 总体睡眠分期结果对比 图7给出了采用GBDT、CNN-BiGRU和本文提出的CNN-BiGRU-SA模型进行睡眠四分类得到的混淆矩阵,其中W、L、D和R分别代表睡眠分期的Wake、Light Sleep、Deep Sleep和REM阶段。结合图7分析,可知SA模块的引入使得Wake和Light Sleep子类的分类准确度相比CNN-BiGRU模型均有提升,其中Light Sleep子类的分类性能得到了显著提高,这是由于提出结合Bi-GRU和SA模块捕捉了ECG信号的空间特征及对睡眠分期的重要程度,提取的特征信息更加全面,更有针对性。从上述分类结果中可以看出,提出模型明显优于常用的未添加SA的CNN-BiGRU模型,体现了研究在模型结构上所作的改进。 (a) GBDT模型混淆矩阵 (b) CNN-BiGRU模型混淆矩阵 (c)CNN-BiGRU-SA模型混淆矩阵图7 模型睡眠分期混淆矩阵 但各个模型对Deep Sleep和REM阶段的分类准确度都不够高,是由于数据集中Deep Sleep和REM片段比例较低,由表3给出的统计数据可知,Deep Sleep片段仅占全部睡眠片段的9.05%,REM片段仅占全部睡眠片段的11.61%,数据集中2类片段较少导致分类器对二者特征学习不够充分,分类准确度较低。 为进一步说明SA模块的引入对模型性能的改进情况,图8展示了引入SA模块前后模型训练过程中损失值和准确率变化曲线。通过比较添加SA模块前后模型训练过程中Acc与Loss变化曲线,可知SA模块的引入可以提高模型的收敛效果,并提升了分类准确率。 (a) Loss变化曲线 (b) Acc变化曲线 图9以热力图形式给出了引入SA模块前后ECG片段特征图,将Bi-GRU模块特征输出矩阵、SA模块特征权重系数矩阵及SA模块特征输出矩阵数据以热力图形式绘制出来,形象地展示了引入SA模块前后提取的ECG片段数据特征分布及变化情况。以SHHS2数据集为例,该数据集ECG采样率为250 Hz,以30 s为单位匹配标签,即7500个数据对应一个标签,输入数据维度为(7500,1)。ECG片段经4个CNN模块后,提取的特征维度为(92,12),再经2个Bi-GRU模块后,输出特征矩阵维度为(92,24)。即ECG片段经模型CNN模块和Bi-GRU模块提取特征后得到的特征输出是一个二维矩阵,提取了24个通道的92维信息。SA模块在CNN模块和Bi-GRU模块提取的ECG片段特征基础上捕捉片段内部时序信息,对Bi-GRU每个时刻单元的输出重要度做出打分,获得片段特征权重系数,SA模块给出的特征权重系数矩阵维度为(24,24),经SA模块后特征矩阵为Bi-GRU模块输出特征矩阵与特征权重系数矩阵的点积,维度仍为(92,24),结合特征权重系数矩阵更新了24个通道的92维信息。通过Bi-GRU模块输出特征矩阵与SA模块特征权重系数矩阵乘积运算获得的SA模块的特征输出图,即加权平均后的ECG片段特征图,提取了片段内部信息相关性。 图9 引入SA模块前后ECG片段特征热力图 为进一步分析SA模块的引入对模型特征提取过程的影响,图10绘制了引入SA模块前后ECG片段特征通道图,ECG片段经CNN模块和Bi-GRU模块提取特征得到24个通道的92维信息,分别绘制每个通道的92维信息如图10(a)所示,经SA模块给出的特征权重系数更新提取的特征信息后,提取的ECG片段特征维度仍为(92,24),同理分别绘制出24个通道的92维特征图像。通过对比引入SA模块前后ECG片段特征通道图可知,通道02、通道03、通道05、通道06、通道07、通道09、通道10及通道12等多数通道的特征数据分布都发生了大的变化。SA模块通过改变不同通道不同的特征权重系数更新了提取的特征信息,调整了数据的特征分布,赋予重要特征更高的权重系数,捕捉了片段内部时序信息及重要程度。 (a) Bi-GRU模块后ECG片段特征通道图 (b) SA模块后ECG片段特征通道图图10 引入SA模块前后ECG片段特征通道图 图11为引入SA模块前后ECG片段特征分布图,显示了Bi-GRU模块输出特征和SA模块输出特征经TSNE数据可视化工具降维处理后的数据特征分布情况,对比分析可知SA模块的引入使得ECG片段Wake和Light Sleep时期数据特征的界限更加清晰,结合图7模型睡眠分期混淆矩阵分析可知,SA模块的引入使得ECG片段Wake阶段分类准确度提升了5.60%。但由于数据集中Deep Sleep和REM阶段片段比例较低,由表3给出的统计数据可知,Deep Sleep片段仅占全部睡眠片段的9.05%,REM片段仅占全部睡眠片段的11.61%,数据集中2类片段较少导致Deep Sleep和REM阶段数据特征的界限不明显。 (a) Bi-GRU模块后ECG片段特征分布 (b) SA模块后ECG片段特征分布图11 引入SA模块前后ECG片段特征分布图 表7给出了本文研究结果与近年基于ECG信号的睡眠分期相关研究结果的对比情况,为便于与同类研究实验结果进行对比,本文给出了基于自注意力机制的深度神经网络模型在SHHS1、SHHS2、MESA及MITBPD数据集上实现睡眠分期三分类的准确率和Kappa系数结果。 表7 相关研究与提出模型结果对比 对比分析可知,非独立被试情况下,本文提出的基于自注意力机制的深度神经网络算法在基于单导联心电信号的睡眠分期三分类准确率、四分类准确率和Kappa系数均有提升,验证了模型的可行性。 睡眠分期对于人们认识睡眠结构、评估睡眠质量以及通过某些节律的异常发现隐患和疾病对睡眠疾病进行诊断都具有重要意义。本文提出了一种基于自注意力机制的深度神经网络模型,结合Bi-GRU模块和自注意力机制在传统CNN结构提取的ECG片段特征基础上捕捉片段内部时序信息及重要程度,基于单导联ECG信号实现端到端的自动睡眠分期。本文使用SHHS1、SHHS2、MESA及MITBPD数据集获取的单导联ECG信号数据对模型训练与验证,最终得到睡眠四分类结果。为评估模型的性能,基于同一数据集提取ECG信号的时域、频域等特征并采用LR、KNN和GBDT等传统机器学习算法实现睡眠分期,并将传统机器学习分类方法与本文基于自注意力机制的深度神经网络模型分类效果进行了对比,实验结果表明本文模型总体分类准确度优于传统机器学习算法分类结果,验证了提出模型的有效性。 基于单导联ECG信号的睡眠分期研究对于低负荷睡眠监测以及可穿戴设备进行生理参数监测技术研究都具有重要意义。但囿于环境因素、个体差异等条件的制约,提出的基于单导联ECG信号的睡眠分期模型仍存在改进的空间。未来的研究可以关注样本的个体差异性以及睡眠标签之间的关联性,更加充分地提取信号特征,寻求更好的睡眠分期方法。2.4 实验结果与分析
3 结束语