基于脑电时-空特征的深度学习失眠障碍检测算法
2022-04-23范艺晶罗涛李剑峰杨子贤
范艺晶 罗涛 李剑峰 杨子贤
0 引言
失眠障碍(insomnia disorder)是以频繁而持续的入睡困难或睡眠维持困难导致睡眠不足为主要特征的睡眠障碍。失眠障碍的诊断要点包括:① 存在入睡困难、睡眠维持困难或早醒症状;② 日间疲劳、嗜睡,社会功能受损;③ 上述症状每周至少出现3次,持续最少3个月[1]。据统计,我国需要积极干预的长期慢性失眠者高达15%。随着生活节奏加快、竞争压力加大,失眠的发病率还在上升。
失眠障碍的临床诊断主要基于患者主诉、量表评估(如失眠严重程度指数、匹兹堡睡眠质量指数、睡眠信念与态度量表)与多导睡眠图(polysomnography,PSG)监测[1]。患者主诉与量表评估容易受到主观因素的影响,导致误诊。PSG监测是评估睡眠病理生理和睡眠结构的一种客观检查方法,医生需基于采集的脑电等生理信号进行诊断,对其专业性要求比较高。由于失眠障碍患者的PSG表现为睡眠潜伏期延长、睡眠效率下降、客观睡眠时间缩短、非快速眼动1期比例增加、慢波睡眠比例下降等,若利用机器学习,基于PSG采集的脑电信号,探索一种客观、高效、便捷的失眠障碍自动检测方法,可以帮助医生提高失眠障碍诊断的效率。
目前基于脑电信号的自动失眠障碍检测算法研究较少,分为两个阶段,首先是睡眠分期,其次是基于不同睡眠时期的脑电信号识别失眠障碍。张冰涛[2]提取C3-A2与C4-A1导联脑电信号的特征,进行五态睡眠分期,构建不同性别不同睡眠时期的最优特征子集结构图,实现失眠障碍识别。其结果表明男性N3期和女性REM期对于识别最为有效,准确率分别为 93.94%和95.13%,但该研究的特征提取及特征选择工作量大。Shahin等[3]利用深度学习,减少了特征提取的工作量。首先基于深度神经网络训练睡眠分期模型,再利用多种二分类器进行失眠障碍识别,选取其中准确率最高的分类器。其结果表明C3-A2与C4-A1导联的NREM期与REM期对于识别最为有效,准确率为92%。
两阶段检测方法虽可以得到识别失眠障碍的最佳睡眠时期,对于临床医学研究具有意义,但其存在缺陷:① 差错传播,第一阶段睡眠分期的错误会影响第二阶段失眠障碍识别的准确率;② 基于睡眠分期后的脑电信号再进行研究可能丢失睡眠脑电的整体信息;③ 两次分类过程计算复杂。从应用角度出发,最终目标是检测受试者是否患有失眠障碍,并不需确定哪个睡眠时期的识别准确率最佳,因此可以省略睡眠分期阶段,直接利用PSG采集的睡眠脑电信号进行失眠障碍检测。本文基于脑电信号的时空特征,提出卷积神经网络(convolutional neural network,CNN)与双向长短期记忆网络(bidirectional long short-term memory network,BiLSTM)融合的CNN-BiLSTM深度学习算法,直接检测失眠障碍。
1 CNN-BiLSTM失眠障碍直接检测算法设计
睡眠纺锤波是睡眠脑电信号的特征波之一,睡眠纺锤波由大脑局部产生,但从全脑的角度看,局部之间并非完全跨区域独立,而是局部和全脑有机结合,其局部睡眠纺锤波和全脑纺锤波共存的时空模式[4],决定了睡眠脑电信号具有丰富的时空特征。为了利用睡眠脑电信号的空间信息,首先人工提取睡眠脑电信号的功率特征,根据PSG的6个脑电导联电极分布构建二维特征矩阵,再将特征矩阵输入CNN进行高级的特征表达。随后馈送至BiLSTM中挖掘睡眠阶段间的时序信息,实现失眠障碍的直接检测。整体流程如图1所示。
图1 失眠障碍检测算法流程图Figure 1 Flowchart of insomnia detection algorithm
1.1 数据预处理
PSG由受试者的整夜睡眠记录组成,包含多种生理信号:①脑电图(electroencephalogram,EEG),常用导联为C3-A2、C4-A1、F3-A2、F4-A1、O1-A2、O2-A1,其中A1、A2为参考电极;②眼电图(electro-oculogram,EOG),导联为LOC-A2与ROC-A1;③肌电图(electromyography,EMG),导联为X1、X2、X3。此外还包含心电图、血氧饱和度等。
本文选取6导EEG信号进行研究。睡眠时EEG信号极其微弱,背景噪声较强,容易引入干扰[5],因此需要进行预处理工作来提高信号的质量。睡眠EEG信号有价值的频率范围在0.5~30 Hz之间[2],采用频率下限0.5 Hz、频率上限30 Hz的四阶巴特沃斯带通滤波器进行滤波,以去除噪声和其他无用的信号成分。
1.2 构建特征矩阵
临床上,专家以连续30 s的睡眠数据作为一个独立的睡眠阶段,因此本课题组将EEG信号每30 s划分为一段样本。对于一个导联采集的EEG信号,当采样频率为200 Hz时,每个样本包含6 000个信号点。为了保持样本的局部信息与整体信息,按顺序将30 s的EEG信号再切为30个1 s的小段,将这30个子信号段按顺序构造大小为30×200的EEG信号矩阵。
对比失眠障碍患者与健康对照者的EEG,在睡眠起始阶段及睡眠转换期间,失眠障碍患者的α、β1、β2频段的功率与健康者相比有较高水平的差异,提示失眠患者大脑皮质的高觉醒程度[7]。因此人工提取EEG信号的功率作为初级特征。
随机过程x(n)的采样间隔为TS,对x(n)的N个观测值XN(n),假设其傅里叶变换为XN(ω),则XN(ω)模的平方是信号XN(n)的能量,对能量除以NTS得到N个观测值的平均功率SN。
(1)
对大小为30×200的EEG信号矩阵,每1 s计算一次平均功率,希望输入神经网络的特征矩阵为规则方阵,因此用每1 s的平均功率值填充45个点,得到大小为30×45的功率特征矩阵。采集EEG信号使用的电极为:C3、C4、F3、F4、O1、O2,为图2中黑色圆点标识的6个电极。为了利用脑电信号的空间关系,按照电极位置将6个矩阵合并,得到大小为90×90的特征矩阵。构造特征矩阵的整体流程如图3所示。
图2 特征矩阵的填充方法Figure 2 Filling method of characteristic matrix
图3 特征矩阵的整体构造流程Figure 3 Overall construction process of characteristic matrix
1.3 CNN-BiLSTM模型
CNN和BiLSTM是深度学习中的代表性算法。CNN能够逐层抽象数据局部特征,进一步实现空间维度上的特征提取。BiLSTM具有保留上下文历史信息的特性,实现时间维度上的特征提取。睡眠EEG信号既具有空间分布特征,又在时间层面上连续变化,因此构建CNN-BiLSTM模型,达到同时学习EEG信号空间与时间特征的目的。CNN-BiLSTM模型的整体结构如图4所示。
图4 CNN-BiLSTM模型结构Figure 4 CNN-BiLSTM model structure
CNN是一种深度学习模型,基本结构主要由卷积层、池化层、全连接层组成。由于1.2节中已进行了初步的人工特征提取,为了控制模型复杂度,设计了6层CNN进行高级的特征学习,包括卷积层1、卷积层2、最大池化层、卷积层3、卷积层4、全连接层。
CNN输入1.2节中构建的特征矩阵,使用2D卷积核提取局部特征。卷积核矩阵由上到下、由左到右进行滑动,将其各个元素与对应位置的元素相乘、求和得输出值:
Cj=σ(∑Ai⊗Wi+bi)
(2)
式中:σ是激活函数;⊗代表卷积;A是特征矩阵;W是权值矩阵;b是偏置矩阵。
卷积层1与卷积层2相连,卷积层3与卷积层4相连,均使用3×3的卷积核,这样设计有以下优点:①2个3×3的卷积核串联和一个5×5的卷积核有相同的感受野,且前者参数更少;②多个3×3的卷积核比一个较大尺寸的卷积核有更多层的非线性函数,增加了非线性表达。选取ReLU激活函数,其数学表达式为式(3),ReLU函数求导简单,可以加快CNN收敛。
f(x)=max(0,x)
(3)
在卷积层2后加入池化层,对卷积层的输出进行池化操作,将某一子区域用一个值代替,可以降低维度,也有一定程度的平移、旋转不变性。本文选择最大池化(max-pooling),对2×2大小的子区域输出最大值:
di=max(c1,c2,c3,c4)
(4)
全连接层每个神经元与其前一层的所有神经元相连接,其能够综合前面网络提取的特征,将有用的信息进行整合,接着将全连接层输出的特征向量输入到BiLSTM中。
长短期记忆网络(long short-term memory network,LSTM)是一种改进的循环神经网络[7],具有较好的时间序列处理能力。睡眠是一个连续的过程,前后时刻的睡眠脑电信号相互联系,应综合利用前向与后向的时序信息,因此采用BiLSTM,将两个不同方向LSTM的向量拼接计算得到最终的输出向量。BiLSTM输出的向量再通过softmax分类器进行二分类,识别受试者是否患有失眠障碍。
2 实验过程
2.1 数据集的选取
实验数据为ISRUC-Sleep公开数据集[8],数据来源于成人,包括健康受试者、睡眠障碍者和受睡眠药物影响的受试者。数据集采集如图2给出的6个电极C3、C4、F3、F4、O1、O2的脑电信号,参考电极为A1、A2,记录速率为200 Hz。每个记录都是从科英布拉大学附属医院的睡眠医学中心(Sleep Medicine Centre of the Hospital of Coimbra University)获取的PSG记录中随机选取的,均由两位专家人工标注睡眠分期。针对每个记录,提供睡眠障碍、所用药物及受试者性别、年龄等相关补充信息。
为排除药物的影响,选取未服用药物的睡眠障碍患者中,PSG表现为睡眠潜伏期延长、睡眠效率下降、客观睡眠时间缩短、非快速眼动1期比例增加、慢波睡眠比例下降的失眠障碍患者PSG记录。按照临床标准,将PSG每30 s划分为一个样本,最终数据集为健康对照者9 618个样本(10人),失眠障碍患者6 735个样本(7人)。
2.2 数据均衡
本文采用的ISRUC-Sleep数据集中失眠障碍患者与健康对照者的数量有较大差距,为改善数据不均衡,采用基于边界的SMOTE(Borderline-SMOTE)算法[9]。具体过程如图5所示。
图5 Borderline-SMOTE算法流程Figure 5 Borderline-SMOTE algorithm
计算每个少数类样本Vi的k近邻样本集,分析该样本集中多数类的比例,判断Vi是否为边界样本,若是边界样本则对Vi进行过采样,生成新的少数类样本:
Vnew=Vi+rand(0,1)×|Vj-Vi|
(5)
式中:j=1,2,…,n,n表示根据采样倍率随机选取的样本数;rand(0,1)表示[0,1]的随机数。实验设置参数k=4,n=4。
2.3 模型训练
将2.2节中数据均衡后的数据集按照6∶2∶2的比例随机设置训练集、验证集和测试集,具体如表1所示。选用准确率(accuracy)作为模型评价指标:
(6)
式中:TP为真阳性(true positive);TN为真阴性(true negative);FP为假阳性(false positive);FN为假阴性(false positive)。
使用1.3节中构建的CNN-BiLSTM模型,为防止过拟合现象,提高模型的泛化能力,添加了Dropout策略[10],每次迭代时以概率P随机舍弃神经元,一定程度上达到了正则化的效果。实验参数见表2。
表2 实验参数Table 2 Parameters of experiment
训练100个epoch,得到的acc-loss曲线如图6所示,训练集和验证集的准确率最终收敛于93%左右。
图6 模型训练acc-loss曲线Figure 6 Model training acc-loss curve
3 结果与讨论
为更好地分析本文算法的有效性,设置以下对比实验。
(1) 对比实验1:基于文献[2]的方法,第一阶段进行睡眠分期,第二阶段进行失眠障碍识别。两次分类过程均提取均值、方差、峰度、偏度、近似熵、绝对功率作为特征,均使用随机森林模型,参数设置200棵树。验证本文算法与两阶段方法相比直接检测失眠障碍的可行性。
(2) 对比实验2:构建特征矩阵时忽略导联的位置分布,将6个导联的功率特征矩阵随意进行拼接,输入到CNN-BiLSTM模型进行失眠障碍的检测。验证EEG信号的空间特征对本文算法的有效性。
(3) 对比实验3:将1.2节中构造的特征矩阵输入CNN中进行失眠障碍的检测,不添加后续BiLSTM结构。验证睡眠过程中EEG信号的时序依赖关系对本文算法的有效性。
在同一测试集上进行实验,结果如表3所示。
表3 实验结果Table 3 Results of experiment
对比以上实验结果,得出以下结论。
(1) 本文算法的准确率略高于对比实验1,表明本文算法与两阶段算法相比,可以直接检测失眠障碍。
(2) 本文算法的准确率高于对比实验2,表明EEG信号在全脑分布的空间特征对算法设计是有效的,准确率提升了2.84%。
(3) 本文算法的准确率高于对比实验3,表明EEG信号的前后时序依赖关系对算法设计是有效的,准确率提升了5.01%。
4 结论
目前自动失眠障碍检测需要先进行睡眠分期,再进行失眠障碍识别,缺乏高效的模型。本文基于睡眠EEG信号的时空模式,提出基于EEG信号时空特征的CNN-BiLSTM失眠障碍检测算法。该算法充分利用了EEG信号在全脑分布的空间特征,同时考虑了不同睡眠阶段之间EEG信号的时序依赖关系,通过输入睡眠脑电信号直接高效地检测失眠障碍,在测试集上有良好的表现,准确率为93.25%。希望本文的算法可以辅助医生高效地进行失眠障碍的诊断,帮助广大失眠障碍患者尽早得到治疗。