睡眠分期是研究睡眠疾病的重要途径,近年来受到了广泛关注。传统手工标记方法与传统机器学习算法存在效率低下、泛化性不足的问题,虽然近期流行的深度学习网络模型依靠其学习复杂特征的能力改善了睡眠分期结果,但仍存在着忽略片段内时序信息与通道相关性的问题。本文提出了一种混合注意力时序网络,利用循环神经网络取代较为传统的卷积神经网络,从时间角度提取多导睡眠图的时序特征;然后采用片段内时序注意力与通道注意力机制,实现信号片段内时序特征融合和通道相关性特征融合;再基于循环神经网络与片段间时序注意力机制,进一步实现信号片段间时序上下文特征融合;最终根据上述混合特征完成端到端自动睡眠分期。本文采用开源数据网站上包含多个多导睡眠图的睡眠数据集进行对比实验,实验结果表明本文模型能够优于 10 种典型基线模型,睡眠分期准确率分别可达到 0.801、0.801、0.717,平均 F1 分数可达到 0.752、0.728、0.700,验证了本文模型的有效性。
引言
人的生命中有 1/3 的时间用于睡眠。近年来,由于生活压力不断增大,越来越多的人开始关注睡眠健康问题[1]。多导睡眠图(polysomnography,PSG)是研究睡眠疾病的有效信息载体,其本质为多通道时序生物电信号,可反映出人体不同部位随时间变化的体征信息。根据美国睡眠医学会的睡眠分期准则[2],每 30 s 的 PSG 可按波形规律标记为清醒期(wake,W)、非快速眼动 1~3 期(non-rapid eye moment 1~3,NREM1~3)或快速眼动期(rapid eye moment,REM),准确地实现该过程是分析睡眠规律、诊疗睡眠疾病的前提[3]。正常人夜晚睡眠时间为 6~8 h,人工实现睡眠分期的工作量繁重。因此,利用计算机实现睡眠分期具有更广阔的应用前景。
早期的睡眠分期算法主要为传统机器学习算法,例如采用小波变换(wavelet transform,WT)等信号处理技术提取 PSG 片段的时频特征或非线性特征,再结合支持向量机(support vector machine,SVM)实现睡眠分期[4-6]。这类方法提取的特征单一且耗时耗力,导致了泛化性不足、效率低下的问题。
随着深度学习技术的兴起,基于卷积神经网络(convolutional neural networks,CNN)提取 PSG 片段内时域或时频域高维非线性表征的方法[7-11]、基于循环神经网络(recurrent neural network,RNN)或长短期记忆网络(long short-term memory,LSTM)学习 PSG 片段间高维时序表征的方法相继提出[12-15]。这些方法的网络结构单一,无法同时考虑片段内和片段间的表征信息,存在信息丢失、准确率不高的问题。因此,有学者设计了采用 CNN 提取片段内表征、RNN 进一步提取片段间表征的方法[16-20],以改善睡眠分期结果。虽然 CNN 抓取局部特征的能力较强,但是本质上无法充分提取片段内关键的时序信息。Phan 等[21]考虑到了这一问题,利用门控循环单元网络(gated recurrent unit,GRU)对短时傅里叶变换(short-time Fourier transform,STFT)后的时频图提取片段内时序表征,但其仅仅是将各个通道时频图进行堆叠,忽略了通道间相关性,并且随着通道数的增加,可能会引发维度灾难问题。
为解决上述问题,本文提出了一种混合注意力时序网络(hybrid attention temporal sequential network,HATSN),利用 GRU 取代传统的 CNN,从时间角度提取 STFT 时频图的时序表征,结合注意力机制先后从时间和通道两个维度实现 PSG 片段内时序特征融合和通道相关性特征融合,采用 GRU 与时序注意力机制进一步融合出片段间时序上下文表征,旨在利用上述混合表征实现更高准确率与效率的自动睡眠分期。最终,本文在公开睡眠数据集上与 10 种典型基线模型对比实验,以验证本文模型的有效性。
综上所述,本文将近年来流行的深度学习技术引入睡眠医学领域,为充分挖掘 PSG 各个维度的关键信息提供了新思路,最大程度贴合实际的睡眠分期过程,改善分期效率与准确率,为将来人工智能与睡眠医学领域的有效结合奠定了基础。
1 HATSN 睡眠分期算法
本文算法的主体思路为:先对原始 PSG 进行 STFT;然后提取每个 PSG 片段内时序表征和通道相关性表征;再进一步提取各个片段间的时序上下文表征;最后利用混合高维表征实现端到端睡眠分期。具体框架如图 1 所示,本节将从:① 输入信号、② 信号预处理、③ 片段内时序网络、④ 片段间时序网络、⑤ 睡眠阶段分类,共 5 部分来介绍本文算法。

1.1 模型输入信号
在人工标定某一时刻的片段时,专家会同时考虑当前时刻与前后若干个 PSG 片段的波形信息。因此,模型输入信号为连续多个 30 s 片段组成的序列{X1,···,Xt,···,XL},如图 1 内①号虚线框所示,其中序列长度为 L,当前时刻为 t。
1.2 信号预处理
有效的信号预处理能够减弱噪声干扰,本文采用 STFT 的方法,将信号从时域变换到特征鲜明的时频域,如图 1 内②号虚线框所示,图中只画出当前片段 的预处理流程,序列内其他片段的预处理以 ② 简化表示。
具体而言,本文首先把 Xt 拆分为多个单通道信号序列,即 Xt = {,···,
,···,
}。对每个通道执行 STFT 并取其幅值,以某一通道
为例,变换过程如式(1)所示:
![]() |
其中, 表示二维时频图。
从物理角度上讲,时频图每一列可视为一个时间点出现不同频率的能量值,反映信号在时间轴上的频率变化规律。由此,本文将每个通道的时频图在时间轴上拆分为多个列向量,生成频率信息时间序列,以某一通道时频图 为例:
= {
,···,
}。
1.3 片段内时序网络
为提取 1.2 小节所述序列的时序表征,本文基于双向 GRU 设计了片段内时序网络[21],如图 1 内③号虚线框所示(只展示 Xt 的提取过程,其余片段用③简化表示)。以 对应的序列为例,将序列输入双向 GRU,计算过程如式(2)所示:
![]() |
其中, 代表 GRU 隐层向量。由于各个列向量的频率信息量不同,本文采用时序注意力机制以融合出隐层向量序列的有效时序信息,计算过程如式(3)、式(4)所示:
![]() |
![]() |
其中, 代表
的时序注意力表征,αi 代表隐层向量
对应的注意力权重,Wα 和 bα 是可训练的网络参数。
人体各个部位的关联性使得 PSG 所有通道的时序注意力表征也具有相关性。因此,本文加入了通道注意力机制,进一步融合所有通道的时序注意力表征(计算方式与式(3)、式(4)相同),生成 Xt 对应的片段内表征 dt。
1.4 片段间时序网络
要实现对 Xt 的睡眠标定,需同时考虑当前片段和前后若干片段的片段内表征。因此,本文基于双向 GRU 设计了片段间时序网络,提取片段内表征序列 D = {d1,···,dt,···,dL}的时序上下文表征,如图 1 内④号虚线框所示,过程与式(2)相同。得到所有片段的 GRU 隐层向量 后,再利用时序注意力机制融合除 Ht 之外的隐层向量(计算方式与式(3)、式(4)相同),生成上下文表征 Hcontext[22]。随后,将其与当前时刻隐层向量 Ht 进一步融合,生成 Xt 对应的混合高维表征 Zt,计算方式如式(5)、式(6)所示:
![]() |
![]() |
其中,Rcontext 代表权重比例,、
和
是可训练的网络参数。
1.5 睡眠阶段分类
将包含片段内时序与通道相关性信息、片段间时序上下文信息的混合表征 Zt 输入 Softmax 分类器得到独热编码(one-hot)预测标签 ,实现睡眠分期,如图 1 内⑤号虚线框所示,计算过程如式(7)所示:
![]() |
其中,Wz 和 bz 是可训练的网络参数。训练过程的损失函数 J(·)采用交叉熵,如式(8)所示:
![]() |
其中,M 为序列数,L 为序列长度,yt 为独热编码真实标签。
2 实验与结果对比
2.1 数据集
本文选取了 2 个公开睡眠数据集用于实验对比,均来源于高权威开源生物医学信号资源网站 PhysioNet(www.physionet.org),下面分别简述 2 个数据集的相关信息。
睡眠集-欧洲数据格式(sleep-european data format,Sleep-EDF)扩展睡眠数据集(sleep-EDF database expanded,Sleep-EDFx)[23-24]:包含 197 个整夜 PSG,主要包括双通道脑电(electroencephalogram,EEG)信号和单通道眼电(electrooculogram,EOG)信号,采样率 100 Hz。数据集分为健康人的睡眠磁带数据(sleep cassette,SC)与轻度入睡障碍患者的睡眠遥感数据(sleep telemetry,ST),去除损坏数据记录与含有未标注数据记录后,最终选取 SC 部分 40 个整夜 PSG,ST 部分 15 个整夜 PSG。
圣文森特大学医院/都柏林大学睡眠呼吸暂停症数据集(St. Vincent's University Hospital / University College Dublin sleep apnea database,UCD)[24]:包含 25 个患者的整夜 PSG,主要包括双通道 EEG 信号、双通道 EOG 信号、单通道肌电(electromyogram,EMG)信号、单通道心电(electrocardiogram,ECG)信号等,采样率包括 128 Hz、64 Hz 等,去除含有未标注数据记录后,最终选取 20 个整夜 PSG。
2.2 实现过程
本文所有实验基于计算机编程语言 Python 3.6.9(Python Software Foundation,美国)和深度学习框架 PyTorch 1.1.0(Facebook Inc.,美国)实现,采用英伟达显卡(GeForce RTX 2080,NVIDIA Corp.,美国)进行模型训练,优化器采用自适应矩估计算法(adaptive moment estimation,ADAM),学习率为 0.001,缺失率(dropout)为 0.5。实验采用 5 折交叉验证,其中 Sleep-EDFx SC 的训练、验证、测试比例为 8∶1∶1,Sleep-EDFx ST 和 UCD 的比例为 3∶1∶1。迭代次数为 50,训练集批量大小为 64。片段内与片段间 GRU 隐层单元维度分别为 128 和 256,网络层数为 2。STFT 窗函数为汉宁窗,窗长 1 s,重叠比例 0.5,序列长度为 5。
2.3 评价指标
本文实验的评价指标包括准确率(accuracy,Acc)、F1 分数(marco F1-score,MF1)、受试者操作特性曲线下面积(area under of receiver operating characteristic curve,AUC-ROC)和查准率-查全率曲线下面积(area under of precision-recall curve,AUC-PR)。
2.4 基线模型
本文的基线模型包括 6 种相关论文模型和 4 种本文模型变体,为了保证实验有效性与参考价值,所有基线均在本文实验环境下进行复现:
睡眠特征网络(SleepFeatureNet)[19]:利用类似 GoogleNet 的网络模块提取单通道 EEG 信号的特征,进一步采用 GRU 提取片段内时序特征,实现睡眠分期。
多域混合神经网络(Multi-Domain-HybridNN)[17]:将 EEG 信号分割为 30 段,利用 CNN 提取每段的时域和频域特征,再基于双向 LSTM 提取片段内时序特征,实现睡眠分期。
多层次神经网络(HierarchicalNN)[20]:利用 3 种尺度的 CNN 提取信号片段内特征,再通过双向 LSTM 与注意力机制提取片段间时序特征,实现睡眠分期。
MC 睡眠网络(MC-SleepNet)[16]:利用 CNN 提取片段内 EEG 信号和 EMG 信号局部特征,进而采用双向 LSTM 提取片段间时序特征,实现睡眠分期。
STFT-LSTM[15]:对每个通道进行 STFT,利用 LSTM 提取拼接后时频图的时序特征,实现睡眠分期。
序列睡眠网络(SeqSleepNet)[21]:对各个通道进行 STFT 并将时频图拼接,利用片段内双向 GRU 与注意力机制、片段间双向 GRU 先后提取片段内、片段间时序特征,实现睡眠分期。
STFT-CNN:利用 4 层卷积提取片段内多通道时频图特征,实现睡眠分期。
STFT-GRU注意力网络(STFT-GRU attention network,STFT-GRUatt):本文模型删除片段内通道注意力机制与片段间特征提取操作。
片段内时序网络(intra-temporal network,Intra-TN):本文模型删除片段间特征提取操作。
Intra-TN + 片段间 GRU(Intra-TN-Inter-GRU):本文模型只删除片段间时序注意力机制。
2.5 实验结果与分析
本文模型与 2.4 小节所述 10 种基线模型的实验对比结果如表 1~表 3 所示,其中 SleepFeatureNet 和 Multi-Domain-HybridNN 的 Acc 值等指标较低,这是因为二者只提取了 PSG 信号片段内特征。而 HierarchicalNN 和 MC-SleepNet 模型结果相对较好,因为二者的结构采用片段内 CNN+片段间 RNN,体现出片段间时序特征的重要性,但是 CNN 仍存在时序信息提取不充分的局限性。此外,STFT-LSTM 和 SeqSleepNet 基于 RNN 结构充分提取了时频图中的时序特征,对比文献[16-17, 19-20]中提及的 4 种模型效果更优异,但仍忽略了通道相关性特征。HATSN 在 2.1 小节所述数据集上的混淆矩阵如图 2 所示,可以看出 REM、NREM2 等睡眠阶段的 Acc 指标较高,结合表中结果可得,本文模型采用的片段内双向 GRU 与时序注意力机制、通道注意力机制、片段间双向 GRU 与时序注意力机制,能够分别提取出关键的片段内时序信息、通道相关性信息和片段间时序上下文信息,从而取得相较于上述 6 种模型更好的实验结果。




从 4 种模型变体结果可看出,STFT-GRUatt 比 STFT-CNN 的 Acc 值指标更高,说明 GRU 在时频域提取的时序信息比 CNN 提取的局部图像信息更为有效。Intra-TN 比 STFT-GRUatt 实验效果更好,说明通道注意力机制能够有效提取出通道相关性特征。Intra-TN-Inter-GRU 进一步提升了睡眠分期效果,体现出片段间时序特征的重要性。而本文模型在加入片段间注意力机制之后,分类指标 Acc 值达到最高,分别为 0.801、0.801、0.717。
对比所有数据集的实验结果,由于 UCD 数据集采样频率更高,通道数更多,因此数据更为复杂。所以,本文模型在 UCD 数据集上的睡眠分期结果仅达到 0.717。此外,UCD 数据集采集于睡眠疾病患者,而 Sleep-EDFx SC 和 ST 数据集则采集于正常人和轻微入睡障碍患者,这反映出对睡眠疾病患者进行睡眠分期的难度更大。
2.6 灵敏度分析
不同 STFT 窗函数(汉明窗、汉宁窗、布莱克曼窗)在本文使用数据集上的睡眠分期 Acc 值如表 4 所示,其中汉宁窗的 Acc 指标均高于其他窗函数,分别达到 0.788、0.790 和 0.708,说明利用汉宁窗进行 STFT 能够有效减弱非平稳 PSG 中的时域噪声干扰,提升模型性能。

汉宁窗的 3 种窗长(1 s、2 s、3 s)实验对比情况如表 5 所示,当窗长为 1 s 时,在 SC 和 ST 数据集上的 Acc 指标能超过 0.800。这表明更短的窗长能提升时频图的时间分辨率,获得更细节的频率信息以改善睡眠分期结果。

2.7 结果可视化
本文选取了 Sleep-EDFx SC 数据集中某一个 REM 期间的 PSG 片段进行可视化,3 个通道时域信号、时频图和对应的片段内时序注意力权重如图 3 所示。从时域信号可看出,最后 5 s 内,2 个 EEG 信号通道出现小幅波动,EOG 信号通道出现较大波动,说明出现快速眼球运动。由时频图可得,EEG 信号的频谱能量主要体现在 θ 波(3~7 Hz)和 α 波(1~2 Hz),EOG 信号的快速眼动波动也在对应时刻体现出较高能量值。由权重图可以看出,本文模型有效增强了高频时刻的权重,表明 EEG(Pz-Oz)信号和 EOG 信号通道信息更丰富。结合如图 3 底部所示的通道权重可得,上述 2 个通道被赋予更高的权重,证明了本文模型特征提取的有效性。

3 总结
睡眠分期是研究睡眠疾病的前提,医生可利用分期结果有效分析睡眠规律。本文针对自动睡眠分期问题提出了 HATSN 模型,利用 GRU 与注意力机制替代传统 CNN 来提取片段内时序信息,考虑了前人忽略的通道间相关性信息,再结合片段间上下文时序信息实现端到端的睡眠分期。本文模型在公开睡眠数据集上对比了 10 种基线模型,均取得最高的睡眠分期 Acc,分别达到 0.801、0.801、0.717。未来的研究方向可以从时间角度继续展开,由于在人工睡眠分期过程中,医生需要考虑前后较少数量或较多数量的片段信息,而目前大多数模型只能提取单一尺度序列信息。因此,同时考虑多尺度序列信息以提取出更丰富的片段间上下文时序特征,是提升模型泛化性、改善睡眠分期准确率的关键。
利益冲突声明:本文全体作者均声明不存在利益冲突。
引言
人的生命中有 1/3 的时间用于睡眠。近年来,由于生活压力不断增大,越来越多的人开始关注睡眠健康问题[1]。多导睡眠图(polysomnography,PSG)是研究睡眠疾病的有效信息载体,其本质为多通道时序生物电信号,可反映出人体不同部位随时间变化的体征信息。根据美国睡眠医学会的睡眠分期准则[2],每 30 s 的 PSG 可按波形规律标记为清醒期(wake,W)、非快速眼动 1~3 期(non-rapid eye moment 1~3,NREM1~3)或快速眼动期(rapid eye moment,REM),准确地实现该过程是分析睡眠规律、诊疗睡眠疾病的前提[3]。正常人夜晚睡眠时间为 6~8 h,人工实现睡眠分期的工作量繁重。因此,利用计算机实现睡眠分期具有更广阔的应用前景。
早期的睡眠分期算法主要为传统机器学习算法,例如采用小波变换(wavelet transform,WT)等信号处理技术提取 PSG 片段的时频特征或非线性特征,再结合支持向量机(support vector machine,SVM)实现睡眠分期[4-6]。这类方法提取的特征单一且耗时耗力,导致了泛化性不足、效率低下的问题。
随着深度学习技术的兴起,基于卷积神经网络(convolutional neural networks,CNN)提取 PSG 片段内时域或时频域高维非线性表征的方法[7-11]、基于循环神经网络(recurrent neural network,RNN)或长短期记忆网络(long short-term memory,LSTM)学习 PSG 片段间高维时序表征的方法相继提出[12-15]。这些方法的网络结构单一,无法同时考虑片段内和片段间的表征信息,存在信息丢失、准确率不高的问题。因此,有学者设计了采用 CNN 提取片段内表征、RNN 进一步提取片段间表征的方法[16-20],以改善睡眠分期结果。虽然 CNN 抓取局部特征的能力较强,但是本质上无法充分提取片段内关键的时序信息。Phan 等[21]考虑到了这一问题,利用门控循环单元网络(gated recurrent unit,GRU)对短时傅里叶变换(short-time Fourier transform,STFT)后的时频图提取片段内时序表征,但其仅仅是将各个通道时频图进行堆叠,忽略了通道间相关性,并且随着通道数的增加,可能会引发维度灾难问题。
为解决上述问题,本文提出了一种混合注意力时序网络(hybrid attention temporal sequential network,HATSN),利用 GRU 取代传统的 CNN,从时间角度提取 STFT 时频图的时序表征,结合注意力机制先后从时间和通道两个维度实现 PSG 片段内时序特征融合和通道相关性特征融合,采用 GRU 与时序注意力机制进一步融合出片段间时序上下文表征,旨在利用上述混合表征实现更高准确率与效率的自动睡眠分期。最终,本文在公开睡眠数据集上与 10 种典型基线模型对比实验,以验证本文模型的有效性。
综上所述,本文将近年来流行的深度学习技术引入睡眠医学领域,为充分挖掘 PSG 各个维度的关键信息提供了新思路,最大程度贴合实际的睡眠分期过程,改善分期效率与准确率,为将来人工智能与睡眠医学领域的有效结合奠定了基础。
1 HATSN 睡眠分期算法
本文算法的主体思路为:先对原始 PSG 进行 STFT;然后提取每个 PSG 片段内时序表征和通道相关性表征;再进一步提取各个片段间的时序上下文表征;最后利用混合高维表征实现端到端睡眠分期。具体框架如图 1 所示,本节将从:① 输入信号、② 信号预处理、③ 片段内时序网络、④ 片段间时序网络、⑤ 睡眠阶段分类,共 5 部分来介绍本文算法。

1.1 模型输入信号
在人工标定某一时刻的片段时,专家会同时考虑当前时刻与前后若干个 PSG 片段的波形信息。因此,模型输入信号为连续多个 30 s 片段组成的序列{X1,···,Xt,···,XL},如图 1 内①号虚线框所示,其中序列长度为 L,当前时刻为 t。
1.2 信号预处理
有效的信号预处理能够减弱噪声干扰,本文采用 STFT 的方法,将信号从时域变换到特征鲜明的时频域,如图 1 内②号虚线框所示,图中只画出当前片段 的预处理流程,序列内其他片段的预处理以 ② 简化表示。
具体而言,本文首先把 Xt 拆分为多个单通道信号序列,即 Xt = {,···,
,···,
}。对每个通道执行 STFT 并取其幅值,以某一通道
为例,变换过程如式(1)所示:
![]() |
其中, 表示二维时频图。
从物理角度上讲,时频图每一列可视为一个时间点出现不同频率的能量值,反映信号在时间轴上的频率变化规律。由此,本文将每个通道的时频图在时间轴上拆分为多个列向量,生成频率信息时间序列,以某一通道时频图 为例:
= {
,···,
}。
1.3 片段内时序网络
为提取 1.2 小节所述序列的时序表征,本文基于双向 GRU 设计了片段内时序网络[21],如图 1 内③号虚线框所示(只展示 Xt 的提取过程,其余片段用③简化表示)。以 对应的序列为例,将序列输入双向 GRU,计算过程如式(2)所示:
![]() |
其中, 代表 GRU 隐层向量。由于各个列向量的频率信息量不同,本文采用时序注意力机制以融合出隐层向量序列的有效时序信息,计算过程如式(3)、式(4)所示:
![]() |
![]() |
其中, 代表
的时序注意力表征,αi 代表隐层向量
对应的注意力权重,Wα 和 bα 是可训练的网络参数。
人体各个部位的关联性使得 PSG 所有通道的时序注意力表征也具有相关性。因此,本文加入了通道注意力机制,进一步融合所有通道的时序注意力表征(计算方式与式(3)、式(4)相同),生成 Xt 对应的片段内表征 dt。
1.4 片段间时序网络
要实现对 Xt 的睡眠标定,需同时考虑当前片段和前后若干片段的片段内表征。因此,本文基于双向 GRU 设计了片段间时序网络,提取片段内表征序列 D = {d1,···,dt,···,dL}的时序上下文表征,如图 1 内④号虚线框所示,过程与式(2)相同。得到所有片段的 GRU 隐层向量 后,再利用时序注意力机制融合除 Ht 之外的隐层向量(计算方式与式(3)、式(4)相同),生成上下文表征 Hcontext[22]。随后,将其与当前时刻隐层向量 Ht 进一步融合,生成 Xt 对应的混合高维表征 Zt,计算方式如式(5)、式(6)所示:
![]() |
![]() |
其中,Rcontext 代表权重比例,、
和
是可训练的网络参数。
1.5 睡眠阶段分类
将包含片段内时序与通道相关性信息、片段间时序上下文信息的混合表征 Zt 输入 Softmax 分类器得到独热编码(one-hot)预测标签 ,实现睡眠分期,如图 1 内⑤号虚线框所示,计算过程如式(7)所示:
![]() |
其中,Wz 和 bz 是可训练的网络参数。训练过程的损失函数 J(·)采用交叉熵,如式(8)所示:
![]() |
其中,M 为序列数,L 为序列长度,yt 为独热编码真实标签。
2 实验与结果对比
2.1 数据集
本文选取了 2 个公开睡眠数据集用于实验对比,均来源于高权威开源生物医学信号资源网站 PhysioNet(www.physionet.org),下面分别简述 2 个数据集的相关信息。
睡眠集-欧洲数据格式(sleep-european data format,Sleep-EDF)扩展睡眠数据集(sleep-EDF database expanded,Sleep-EDFx)[23-24]:包含 197 个整夜 PSG,主要包括双通道脑电(electroencephalogram,EEG)信号和单通道眼电(electrooculogram,EOG)信号,采样率 100 Hz。数据集分为健康人的睡眠磁带数据(sleep cassette,SC)与轻度入睡障碍患者的睡眠遥感数据(sleep telemetry,ST),去除损坏数据记录与含有未标注数据记录后,最终选取 SC 部分 40 个整夜 PSG,ST 部分 15 个整夜 PSG。
圣文森特大学医院/都柏林大学睡眠呼吸暂停症数据集(St. Vincent's University Hospital / University College Dublin sleep apnea database,UCD)[24]:包含 25 个患者的整夜 PSG,主要包括双通道 EEG 信号、双通道 EOG 信号、单通道肌电(electromyogram,EMG)信号、单通道心电(electrocardiogram,ECG)信号等,采样率包括 128 Hz、64 Hz 等,去除含有未标注数据记录后,最终选取 20 个整夜 PSG。
2.2 实现过程
本文所有实验基于计算机编程语言 Python 3.6.9(Python Software Foundation,美国)和深度学习框架 PyTorch 1.1.0(Facebook Inc.,美国)实现,采用英伟达显卡(GeForce RTX 2080,NVIDIA Corp.,美国)进行模型训练,优化器采用自适应矩估计算法(adaptive moment estimation,ADAM),学习率为 0.001,缺失率(dropout)为 0.5。实验采用 5 折交叉验证,其中 Sleep-EDFx SC 的训练、验证、测试比例为 8∶1∶1,Sleep-EDFx ST 和 UCD 的比例为 3∶1∶1。迭代次数为 50,训练集批量大小为 64。片段内与片段间 GRU 隐层单元维度分别为 128 和 256,网络层数为 2。STFT 窗函数为汉宁窗,窗长 1 s,重叠比例 0.5,序列长度为 5。
2.3 评价指标
本文实验的评价指标包括准确率(accuracy,Acc)、F1 分数(marco F1-score,MF1)、受试者操作特性曲线下面积(area under of receiver operating characteristic curve,AUC-ROC)和查准率-查全率曲线下面积(area under of precision-recall curve,AUC-PR)。
2.4 基线模型
本文的基线模型包括 6 种相关论文模型和 4 种本文模型变体,为了保证实验有效性与参考价值,所有基线均在本文实验环境下进行复现:
睡眠特征网络(SleepFeatureNet)[19]:利用类似 GoogleNet 的网络模块提取单通道 EEG 信号的特征,进一步采用 GRU 提取片段内时序特征,实现睡眠分期。
多域混合神经网络(Multi-Domain-HybridNN)[17]:将 EEG 信号分割为 30 段,利用 CNN 提取每段的时域和频域特征,再基于双向 LSTM 提取片段内时序特征,实现睡眠分期。
多层次神经网络(HierarchicalNN)[20]:利用 3 种尺度的 CNN 提取信号片段内特征,再通过双向 LSTM 与注意力机制提取片段间时序特征,实现睡眠分期。
MC 睡眠网络(MC-SleepNet)[16]:利用 CNN 提取片段内 EEG 信号和 EMG 信号局部特征,进而采用双向 LSTM 提取片段间时序特征,实现睡眠分期。
STFT-LSTM[15]:对每个通道进行 STFT,利用 LSTM 提取拼接后时频图的时序特征,实现睡眠分期。
序列睡眠网络(SeqSleepNet)[21]:对各个通道进行 STFT 并将时频图拼接,利用片段内双向 GRU 与注意力机制、片段间双向 GRU 先后提取片段内、片段间时序特征,实现睡眠分期。
STFT-CNN:利用 4 层卷积提取片段内多通道时频图特征,实现睡眠分期。
STFT-GRU注意力网络(STFT-GRU attention network,STFT-GRUatt):本文模型删除片段内通道注意力机制与片段间特征提取操作。
片段内时序网络(intra-temporal network,Intra-TN):本文模型删除片段间特征提取操作。
Intra-TN + 片段间 GRU(Intra-TN-Inter-GRU):本文模型只删除片段间时序注意力机制。
2.5 实验结果与分析
本文模型与 2.4 小节所述 10 种基线模型的实验对比结果如表 1~表 3 所示,其中 SleepFeatureNet 和 Multi-Domain-HybridNN 的 Acc 值等指标较低,这是因为二者只提取了 PSG 信号片段内特征。而 HierarchicalNN 和 MC-SleepNet 模型结果相对较好,因为二者的结构采用片段内 CNN+片段间 RNN,体现出片段间时序特征的重要性,但是 CNN 仍存在时序信息提取不充分的局限性。此外,STFT-LSTM 和 SeqSleepNet 基于 RNN 结构充分提取了时频图中的时序特征,对比文献[16-17, 19-20]中提及的 4 种模型效果更优异,但仍忽略了通道相关性特征。HATSN 在 2.1 小节所述数据集上的混淆矩阵如图 2 所示,可以看出 REM、NREM2 等睡眠阶段的 Acc 指标较高,结合表中结果可得,本文模型采用的片段内双向 GRU 与时序注意力机制、通道注意力机制、片段间双向 GRU 与时序注意力机制,能够分别提取出关键的片段内时序信息、通道相关性信息和片段间时序上下文信息,从而取得相较于上述 6 种模型更好的实验结果。




从 4 种模型变体结果可看出,STFT-GRUatt 比 STFT-CNN 的 Acc 值指标更高,说明 GRU 在时频域提取的时序信息比 CNN 提取的局部图像信息更为有效。Intra-TN 比 STFT-GRUatt 实验效果更好,说明通道注意力机制能够有效提取出通道相关性特征。Intra-TN-Inter-GRU 进一步提升了睡眠分期效果,体现出片段间时序特征的重要性。而本文模型在加入片段间注意力机制之后,分类指标 Acc 值达到最高,分别为 0.801、0.801、0.717。
对比所有数据集的实验结果,由于 UCD 数据集采样频率更高,通道数更多,因此数据更为复杂。所以,本文模型在 UCD 数据集上的睡眠分期结果仅达到 0.717。此外,UCD 数据集采集于睡眠疾病患者,而 Sleep-EDFx SC 和 ST 数据集则采集于正常人和轻微入睡障碍患者,这反映出对睡眠疾病患者进行睡眠分期的难度更大。
2.6 灵敏度分析
不同 STFT 窗函数(汉明窗、汉宁窗、布莱克曼窗)在本文使用数据集上的睡眠分期 Acc 值如表 4 所示,其中汉宁窗的 Acc 指标均高于其他窗函数,分别达到 0.788、0.790 和 0.708,说明利用汉宁窗进行 STFT 能够有效减弱非平稳 PSG 中的时域噪声干扰,提升模型性能。

汉宁窗的 3 种窗长(1 s、2 s、3 s)实验对比情况如表 5 所示,当窗长为 1 s 时,在 SC 和 ST 数据集上的 Acc 指标能超过 0.800。这表明更短的窗长能提升时频图的时间分辨率,获得更细节的频率信息以改善睡眠分期结果。

2.7 结果可视化
本文选取了 Sleep-EDFx SC 数据集中某一个 REM 期间的 PSG 片段进行可视化,3 个通道时域信号、时频图和对应的片段内时序注意力权重如图 3 所示。从时域信号可看出,最后 5 s 内,2 个 EEG 信号通道出现小幅波动,EOG 信号通道出现较大波动,说明出现快速眼球运动。由时频图可得,EEG 信号的频谱能量主要体现在 θ 波(3~7 Hz)和 α 波(1~2 Hz),EOG 信号的快速眼动波动也在对应时刻体现出较高能量值。由权重图可以看出,本文模型有效增强了高频时刻的权重,表明 EEG(Pz-Oz)信号和 EOG 信号通道信息更丰富。结合如图 3 底部所示的通道权重可得,上述 2 个通道被赋予更高的权重,证明了本文模型特征提取的有效性。

3 总结
睡眠分期是研究睡眠疾病的前提,医生可利用分期结果有效分析睡眠规律。本文针对自动睡眠分期问题提出了 HATSN 模型,利用 GRU 与注意力机制替代传统 CNN 来提取片段内时序信息,考虑了前人忽略的通道间相关性信息,再结合片段间上下文时序信息实现端到端的睡眠分期。本文模型在公开睡眠数据集上对比了 10 种基线模型,均取得最高的睡眠分期 Acc,分别达到 0.801、0.801、0.717。未来的研究方向可以从时间角度继续展开,由于在人工睡眠分期过程中,医生需要考虑前后较少数量或较多数量的片段信息,而目前大多数模型只能提取单一尺度序列信息。因此,同时考虑多尺度序列信息以提取出更丰富的片段间上下文时序特征,是提升模型泛化性、改善睡眠分期准确率的关键。
利益冲突声明:本文全体作者均声明不存在利益冲突。