本篇学习报告的内容为“SeqSleepNet:用于序列到序列自动睡眠分期的端到端分层循环神经网络”,所参考论文为《SeqSleepNet: End-to-End Hierarchical Recurrent Neural Network for Sequence-to-Sequence Automatic Sleep Staging》。本论文将任务作为序列到序列的分类问题,接收多个时期的序列作为输入,并立即对其所有标签进行分类。该网络在MASS数据集上进行测试,睡眠阶段五分类准确度为87.1%。相关成果在2019年发表于《IEEE TRANSACTIONS ON NEURAL SYSTEMS AND REHABILITATION ENGINEERING》,原文链接与代码地址见文末。
人的一生中约有三分之一的时间都在睡眠中度过,睡眠质量的好坏直接影响到人类的身心健康。睡眠分期是评估睡眠质量和诊断睡眠障碍的重要手段,在临床上睡眠分期主要是由专家按照制定标准手动进行分期的,但是这种手工分期费力且耗时,并且容易出现人为错误。所以一个自动的睡眠分期方法就显得十分重要。
自动睡眠分期通常被视为一个简单的分类问题,旨在一次确定单个目标多导睡眠图时期的标签。现有的自动睡眠分期方法有很多,如单通道与多通道、传统的机器学习方法与深度学习方法。近几年来,大量的深度学习方法被用来代替传统的基于特征的机器学习方法,来进行睡眠的自动分期。与传统的学习方法相比,深度学习方法有许多优点,在许多其他领域也取得了成功。首先,由于公共睡眠数据正在快速增长,深度网络通过反复地从小批量数据中学习并最终收敛到最终模型,可以高效地处理大量数据。其次,从低级信号中自动学习特征的能力使得手工制作一些复杂的特征不再是必要的。目前已有几种用于自动睡眠评分的深度网络结构:卷积神经网络(CNNs)、深度神经网络(DNNs)和循环神经网络(RNNs)。不同架构的组合也已被利用,如DNN+RNN和CNN+RNN。随着深度学习方法的发展,自动睡眠分期性能得到了显著提高。
该论文基于很多的先前工作,除去不能考虑到PSG时期之间存在的依赖关系的one-to-one方案,以及不能适应较长的上下文的many-to-one和one-to-many方案,最后选择了many-to-many多对多的分类方案。即可以把自动睡眠分期任务被设计成一个序列到序列分类问题。为了实现序列到序列的分类,作者提出了一种分层RNN模型SeqSleepNet,主要由三个部件组成:
(1)用于预处理的并行滤波器组层。
(2)用于短期序列建模的与注意机制相结合的双向RNN。
(3)用于长期序列建模的序列级双向RNN。
数据集使用的是公共数据集蒙特利尔睡眠数据库(Montreal Archive of Sleep Studies, MASS)。MASS是一个相当大的开源数据集,它包括200名年龄在18-76岁之间的受试者(97名男性和103名女性)的整晚睡眠记录。
论文搭建的网络模型如图1所示:
图1 SeqSleepNet
该网络模型首先将C通道输入序列中的一个epoch(脑电图、眼电图和肌电图)转换为C通道的时频图像S。并行滤波器组层被定制为学习特定于信道的频域滤波器组,用来预处理输入图像以进行频域平滑和降维。此外,在特定信道的预处理后,所有图像信道在频率方向上串联以形成图像X。然后,图像X本身可以被解释为与图像列相对应的特征向量序列。然后使用epoch级基于注意力的双向RNN将epcoh的特征向量序列编码成固定注意特征向量a。最后,利用位于网络层次顶层的序列级双向RNN对输入epoch序列得到的注意特征向量序列进行建模,计算输出序列 。
需要注意的是,在SeqSleepNet中,滤波器组层在所有epoch的局部特征(即光谱图像列)之间绑定(即共享参数),而epoch级基于注意力的双向RNN层在输入序列的所有epochs之间绑定。
作者对MASS数据集进行了20倍交叉验证。在每一次迭代中,200名受试者分别被分成180名、10名和10名受试者的训练集、验证集和测试集。在训练过程中,作者每100个训练步骤对网络进行一次评估,其中一个在验证集上产生最佳总体准确性的步骤保留下来进行评估。将20个交叉验证折叠的结果汇集起来,作为一个整体来计算睡眠分期性能。
该网络是使用TensorFlow v1.3.0框架实现的。网络参数如表1所示。特别是,我们用不同的{10,20,30}时间序列长度(相当于{5,10,15}分钟)来研究其影响。该网络训练了10个时期,小批量大小为32个序列。序列是从PSG记录中采样的,具有最大重叠(即L-1个历元),这样,我们从训练数据中生成所有可能的历元序列。循环批归一化也被整合到GRU单元中,以提高其收敛性。使用Adam优化器进行网络训练,学习率为。
表1 网络参数
为了证明SeqSleepNet的高效性,作者设置了三个新的端到端baseline 网络模型进行比较:End-to-end ARNN (E2E-ARNN),Multitask E2E-ARNN(E2E-ARNN 的扩展),End-to-end DeepSleepNet(E2E-DeepSleepNet)。基线网络如图2所示。
图2 baselines
作者使用总体准确率(Acc.)、kappa系数(κ)、宏观F1评分(MF1)、敏感性(Sens.)和特异性(Spec.)来评估模型分类的性能,提出的SeqSleepNet、开发的基线以及与在MASS数据集上现有工作的性能比较结果如表2所示。使用SeqSleepNet对MASS数据集的受试者生成的睡眠图(a)与ground-truth(b)的睡眠评分比较和不同睡眠阶段学习的注意力权重如图3和图4所示。
表2 实验结果比较
图3 SeqSleepNet对 MASS 数据库的一个受试者进行的睡眠评分
图4 SeqSleepNet在不同睡眠阶段的五个epoch上学习的注意力权重
该论文的主要思想在于通过分层的 RNN 结构,序列到序列的模型,端到端的学习方法,一次性将多个时期的序列联合分类输出睡眠分期结果。
对自动睡眠分期研究的一些思考:
1.深度学习方法在睡眠分期中具有一定的优势。深度学习算法可以直接应用于原始数据,在PSG记录中提取容易被忽略的隐藏信息。深度学习方法可以通过不同的滤波器来进行特征提取,和从连续睡眠时期中提取时间序列信息来进行分类。相比于传统的机器学习方法,深度学习方法在睡眠分期的准确率上也有明显的改善。
2.尽管多通道信号对于睡眠评分具有优势,但单通道脑电图睡眠分期取得了很好的性能。单通道确实是一种非常有前途的方法,但它局限于基于家庭的睡眠评估,用于早期诊断和持续监测。考虑到睡眠本身和睡眠障碍的复杂性,多通道的信息对于严格的睡眠评分仍然是必不可少的。
论文链接:https://www.ncbi.nlm.nih.gov/pmc/articles/PMC6481557/
源代码: https://github.com/pquochuy/SeqSleepNet