人一生中的1/3时间都用于睡眠活动, 健康的睡眠是人体各项机能正常运行和保持人体精神活力的重要保障. 然而, 随着社会的发展和科技的进步, 越来越多人有着不规律的生活方式, 从而导致睡眠障碍的发生. 长时间的睡眠障碍会使人产生精神不振、面色黯淡、记忆力消退、免疫力下降等问题. 目前社会上较为突出的睡眠疾病是睡眠呼吸暂停综合症, 最新的数据表明, 全球将近10亿的人患有睡眠呼吸暂停综合症, 占总人口的13%[1], 因此, 实现快速的睡眠质量评估对诊断睡眠疾病具有重大的作用意义, 睡眠分期是评估睡眠质量的最重要指标, 通过进行睡眠分期, 及时检测睡眠质量, 可以快速发现睡眠障碍, 防止睡眠障碍问题恶化.
因此本文旨在研究一个基于双通道脑电信号的在线实时睡眠分期系统, 该系统的核心功能——睡眠分期所采用的算法是CNN-BiLSTM混合神经网络模型, CNN卷积神经网络用于自动特征学习, BiLSTM用于提取前后时序信息, 对脑电信号进行双向结构建模, 从而获得更高的睡眠分期准确率, 系统的可靠性和实用性更强. 用户使用过程中, 系统可以通过监测用户睡眠数据, 利用CNN-BiLSTM算法对睡眠数据进行分期, 实时显示睡眠分期结果, 并根据分期结果对用户进行实时地音乐调控, 睡眠结束后提供完整的睡眠报告, 帮助用户评估睡眠质量, 预防睡眠疾病.
1.2 应用背景现在市面上存在着不少用于睡眠质量监测的产品, 各有其优缺点. 穿戴类产品佩戴便捷舒适, 价格合理, 主要是通过用户的体动和心率进行睡眠监测, 不是利用脑电信号进行监测的, 因此其睡眠分期准确率较低, 且无法进行睡眠调控, 无法给用户一个完整的睡眠记录反馈. 现有的睡眠监测APP类产品虽然便捷易用, 但不是基于脑电信号进行分期的, 分期准确率较低, 不具有科学参考价值. 医院的多导睡眠图(polysomnographic, PSG)检查能够精准地检测睡眠情况, 但其费用比较昂贵, 且不是实时给出分期结果, 是需要医护人员依靠历史经验知识来判断分期结果, 会花费很多时间和精力.
基于此, 本文设计了一款在线实时睡眠分期系统, 基于CNN-BiLSTM深度学习算法模型, 采用PyCharm开发工具、MySQL数据库、Django、BootStrap等相关技术进行设计和开发. 用户仅需佩戴轻质舒适的脑环入睡, 系统便可以实时显示用户当前的睡眠状态. 在睡眠结束后可以给用户一个完整的睡眠反馈结果报告. 基于脑电信号的实时在线分期系统不仅睡眠分期准确率高, 而且应用场景多样, 实时性和可靠性强.
1.3 睡眠分期研究现状 1.3.1 实时睡眠分期系统研究现状在睡眠分期的实现上增加“实时性”是目前睡眠分期研究的重要方向. 实现“实时”的睡眠分期便可以在睡眠期间采取相对应的干预措施来调整睡眠质量. 国外的学者们对睡眠分期的“自动性”和“实时性”进行了研究, 并取得了一定的进展. Zhao等人通过无线电测量预测睡眠阶段, 在利用无线电测量实现自动睡眠分期的方式下, 受试者身上可无需附加任何传感器[2]. Jin等人利用红外热成像摄像机与头戴式脑电信号传感器相结合的方式实现了适合家用的非侵入式睡眠监测系统[3]. 在“实时性”方面, Koushik等人利用单通道 EEG 数据, 实现了在智能手机上的实时睡眠分期任务, 为未来的人机交互 (HCI) 应用程序中使用睡眠分期服务提供了可能[4].
而国内针对实时睡眠分期的研究起步较晚, 在2013年以前, 尚未见针对“实时性”睡眠分期的研究报告, 在该时期国内较常见的睡眠自动分期技术均采用对整夜检测到的生理参数数据进行非实时分期的方式[5]. 而在2013年, 王琛磊[5]设计出一种基于呼吸信号与心跳信号自动平衡功能算法的实时睡眠自动分期系统, 实现了实时的睡眠分期. 之后, 在2017年, 韩映萍[6]通过心冲击图信号中的心率、呼吸和体动序列计算实现自动睡眠分期, 搭建了床垫式的实时睡眠监护系统. 与上述的非侵入式技术相比, 在非入侵式脑机接口技术上, 国内学者更多地利用采集到的脑电信号对睡眠分期准确性问题进行了研究, 而在睡眠分期实时性系统设计方面的研究相对较少. 虽然我国在实时睡眠分期系统方面的研究起步较晚, 但随着我国社会睡眠问题的突显以及科研人员对该领域的深入研究, 目前, 睡眠监测技术已逐渐进入普通人的家庭, 准确性与实时性都成为两个重点关注的研究方向, 研究对两者进行兼顾的系统设计是未来的一大发展趋势.
1.3.2 睡眠分期算法模型研究现状近年来, 睡眠分期算法的研究也在不断发展和创新, 实现自动睡眠分期的方法主要有两大方面: 机器学习和深度学习. 基于机器学习的自动睡眠分期方法主要是通过时域分析、频域分析等方法提取特征, 然后结合分类器分类来实现睡眠分期. 周鹏等利用主成分分析和支持向量机处理脑电信号(electroencephalogram, EEG), 实现了睡眠自动分期, 平均准确率可达到89.9%[7]. 程佳采用功率谱熵等算法提取特征, 并结合支持向量机实现自动睡眠分期, 准确率达到91.7%[8]. 高群霞通过采用FIR提取能量特征, 结合最小二乘支持向量机进行睡眠分期, 分期准确率可以达到89.6%[9].
机器学习是依靠人工手动选择特征来进行分类, 具有一定的局限性, 而深度学习具有自动提取睡眠分期特征的优点, 可以在多次训练过程中自动寻找出最优的特征, 并通过参数调整等方法来不断优化算法模型, 达到比较好的分期效果. 例如基于单通道SleepEEGNet深度卷积神经网络的睡眠准确率达到 84.26%[10]. Phan等人提出分层递归神经网络 SeqSleepNet, 睡眠分期总体准确率达到87.10%[11]. Supratak等人[12]采用两个独立的CNN分支实现特征提取, 然后在网络层的顶层加入双向LSTM, 准确率达到 86%. 杨鑫等人[13]提出了一种基于双向递归神经网络的单通道睡眠分期方法, 融入了双向递归神经网络对前后时序信号的记忆能力, 来提高睡眠分期判别的准确率; Dong等人[14]利用整流神经网络检测分层特征, 并利用长短时记忆网络进行时序数据学习, 以优化分类性能; 罗森林等人[15]将卷积神经网络与双向长短时记忆网络结合, 综合利用这两种网络的优点, 实现睡眠时期的自动判别. 在深度学习中, CNN与BiLSTM相结合在很多领域研究问题中具有明显的优点. 例如融合CNN-BiLSTM的模型算法用于心律失常心拍分类中, 相比单一CNN模型或BiLSTM模型的算法, 分类准确率更高[16]. 李洋等人利用CNN与BiLSTM网络特征结合进行文本情感分析, 准确率达到94.83%[17]. 在进行短文本相似度计算中, 结合CNN和BiLSTM的优势, 提取局部特征和总体特征, 准确率达到了84.58% [18].
从以上研究可以发现CNN与BiLSTM相结合在处理长时间序列数据分类中具有明显的优势. 而睡眠数据本身是长时间序列信息的脑电信号数据, CNN-BiLSTM模型可以更好地探究睡眠数据前后序列时间信息的关联和依赖, 所以本系统采用CNN-BiLSTM神经网络算法模型进行睡眠分期, 并在分期的基础上实现“实时性”, 从而搭建一个基于脑电信号的在线实时分期系统.
2 实时睡眠分期算法设计 2.1 实时睡眠分期实现流程实时睡眠分期, 系统先通过与第三方脑环接口相连接获取脑电数据, 然后实时显示脑电数值图, 同时后端开启多线程, 一个线程用于写入脑电数据, 一个线程用于获取脑电数据, 最后把获取的脑电数据作为睡眠分期算法模型的输入, 得出睡眠分期结果, 并显示到前端. 实时睡眠分期的流程图主要如图1所示.
2.2 实时睡眠分期各模块实现
(1)采集脑电数据
通过华南脑控智能科技有限公司的爱简单脑机接口设备来获取脑电数据, 用户只需按照正确步骤戴上脑电环, 系统便可读取出用户的脑电数据.
(2)实时显示脑电图
根据获取的脑电数据图, 利用EChart技术和Ajax局部刷新技术, 通过Ajax间隔刷新获取脑电数据, 把获取的脑电数据放入EChart data域中, 再进行显示.
(3)多线程读写脑电数据
利用Python多线程机制, 开启2个线程, 一个线程用于实时地将脑电数据写入到文件中, 一个线程用于从该文件中获取指定数量为15 000个数据点的脑电数据来进行睡眠分期.
(4)睡眠分期
本系统将每5个30 s的睡眠数据进行一次睡眠分期, 将脑电图信号分为 30 s的epoch, 并进行必要的数据预处理和转换操作. 然后利用短时傅里叶变换(short-time Fourier transform, STFT)和 Mel 带通滤波器获得脑电图数据的频谱图, 提取数据的时频域信息. 并利用CNN-BiLSTM混合神经网络进行自动特征提取和分类, 其中使用 CNN 提取高阶数据特征, 使用 BiLSTM 提取不同时期睡眠数据之间的时间相关性特征. 最后, 将提取的特征传递给 Softmax 分类器对睡眠进行分类, 每次得到5个30 s的分期结果.
(5)显示分期结果
每次获取到5个30 s的睡眠分期结果后, 利用Ajax技术将分期结果同对应的时间一起显示到前端. 系统前端每隔150 s就会显示一次新的分期结果.
2.3 睡眠分期具体算法实现睡眠分期技术是利用不同睡眠阶段的脑电数据的频率特征, 通过深度学习或者机器学习算法来提取数据特征, 并通过这些特征向量来划分睡眠阶段的技术. 在本系统中, 我们主要采用了深度学习中混合神经网络CNN-BiLSTM算法模型来进行睡眠分期.
在睡眠分期的训练阶段, 首先利用均衡采样方法对脑电数据进行预处理, 接着利用短时傅里叶变换来获取脑电信号的时频表示, 并利用梅尔滤波器将脑电信号表示成梅尔频谱图. 针对上述所得到的二维频谱图, 再利用CNN-BiLSTM进行特征提取, 最终将提取得到的特征向量进行Softmax层处理得到对应的分期结果.
(1)均衡采样
考虑到睡眠数据中各个阶段的样本数差异较大, 在睡眠数据的6个类别中, 最多一类的数据集与最少一类的数据集比例普遍高于10倍, 存在严重的样本不平衡问题, 为了缓解这一不平衡现象, 在模型训练方面, 本系统应用均衡采样的方法处理训练集中样本失衡的问题[19], 这一过程可分为4个步骤: 统计6类睡眠分期数据的样本个数, 记为
(2)特征表示
对预处理后得到的脑电数据, 本系统采用了时频分析中的短时傅里叶变换方法进行分析, 将幅值随时间变化的信号转成时间随频率变化的信号. 在这个过程中, 采用的是滑动窗口机制, 设定窗口大小和步长, 让窗口在时域信号上滑动, 分别计算每个窗口的傅里叶变换, 形成不同时间窗口对应的频域信号, 拼接起来就成为频率随时间变化的数据(时频信号), 具体的
$ {\textit{STFT}}_X(t, f) = \int_{ - \infty }^{ + \infty } {x({t{'}}){g^*}({t{'}} - t) \cdot {{\rm{e}}^{ - j2\pi f{t{'}}}}d{t{'}}} $ | (1) |
其中,
$ {\textit{STFT}}_x(t, f) = {{\rm{e}}^{ - j2\pi ft}}\int_{ - \infty }^{ + \infty } {X({f{'}}){G^*}({f{'}} - f) \cdot {{\rm{e}}^{j2{{\pi}} f{t{'}}}}d{f{'}}} $ | (2) |
根据上述定义, 利用基于汉宁窗的
(3)特征提取
对特征表示阶段得到的特征矩阵, 利用一种6层卷积单元的串行CNN架构进行自动特征提取, 该架构的每一个卷积单元主要由信息输入层、卷积运算层、归一化层、ReLU 激活层、池化层和Dropout层6个部分组成, 通过两个串行的卷积单元, 对脑电信号进行初步特征提取, 在每个卷积单元中, 卷积运算层的公式如下:
$ {H_i} = {f_{{{\rm{cov}}} }}({H_{i - 1}} \otimes {W_i} + {b_i}) $ | (3) |
其中,
对卷积操作的输出与偏置项的结果执行相加操作, 再通过激活函数处理数据, 之后利用全连接层将卷积最终输出的二维特征转换为一维向量, 并对两个通道的一维向量进行拼接操作, 得到可以表示两个通道的特征数据.
而考虑到睡眠数据包含大量的时序信息, 利用CNN网络仅仅只能捕获短时间规模的时空特征, 无法表示长时间的变换, 因此, 本系统将基于CNN模型得到的向量输入基于双向时间结构建模的双向长短时记忆网络BiLSTM[21]中, 通过两个完全独立的长短时记忆网络 LSTM[22]来处理前后两端的睡眠信息, 以便更好地挖掘脑电信号前后的依赖和关联.
在BiLSTM网络结构中, 第1层是前向LSTM, 第2层是后向LSTM, 最终输出可以通过以下公式计算[15]:
$ {h_t} = \alpha h_t^f + \beta h_t^b $ | (4) |
其中,
(4)分类实现
在获取了脑电信号的特征向量后, 分类器部分的工作是利用特征向量对睡眠阶段进行最终的分类, 该部分由完全连接的Softmax层构成[23], 其对应的表达式为:
$ {f_{{\rm{Softmax}} }} = \frac{{\exp (W_{{l_i}}^{\rm{T}}{y_i} + {b_{{l_i}}})}}{{\displaystyle\sum\limits_{j = 1}^c {\exp (W_j^{\rm{T}}{y_j} + {b_j})} }} $ | (5) |
其中,
在分类器部分, 为了进一步解决样本数据失衡的问题, 本系统采用了focal loss这一用于解决正负样本比例严重失衡问题的损失函数, 具体定义如下[24]:
$ FL({p_t}) = - {\alpha _t}{(1 - {p_t})^\gamma }\log ({p_t}) $ | (6) |
其中,
(5)模型应用
在实际应用的过程中, 本文利用训练好的CNN-BiLSTM模型对系统线程获取的脑电信号进行分期处理. 考虑到模型使用的训练集Sleep-EDF的采样频率为100 Hz, 而本系统配套的脑电环采样频率为250 Hz, 因此, 在将脑电数据进行分期之前, 需要对原始数据进行频率转换处理. 对于每秒数据中包含的250个信号数据点, 需要去除150个信号数据点, 保留剩下的100个信号数据点. 在这个过程中, 我们首先删除了信号数据点数组中位置下标为奇数的数据元素, 此时数组长度变为125; 其次, 针对剩余的数组元素, 我们设置判断条件为数组下标是否为5的倍数, 如果下标不是5的倍数, 则提取下标对应的数组元素. 这一步删除了多余的25个数据点. 新数组中剩余100个数据点, 即数据采样率转换为100 Hz. 之后利用经过频率变换的Fpz-Cz和Pz-Oz双通道信号, 以30 s为单位将脑电信号进行划分, 对每个30 s数据块进行短时傅里叶变换, 获取大小为(129, 13)的二维Mel频谱图, 并将Fpz-Cz和Pz-Oz通道中时间上连续的5组二维Mel频谱图作为CNN-BiLSTM模型的输入.
在CNN-BiLSTM模型的实际应用中, 我们使用了两个串行卷积单元. 在CNN模型的第一个卷积单元中, 将连续5个输入数据块送入一个二维卷积层(Conv2d), 该层有8个卷积核, 卷积核的大小为(3, 3),
在BiLSTM部分, LSTM的输出维度为
在分类器部分, 对维度为(5, 4)的数据进行Softmax处理后, 可以得到每个数据块对应的睡眠状态(W, LS, SWS, REM). 最后, 将数据块的睡眠分期结果通过系统反馈给用户并依据分期结果为用户提供调控服务.
3 系统设计 3.1 系统模块设计本系统主要分为5大功能模块, 分别是登录注册模块、首页模块、睡眠报告模块、睡眠监测与调控模块和联系我们模块. 系统的总体功能结构图如图2所示.
打开本系统网站后, 可浏览系统首页, 查看系统功能介绍、核心技术原理介绍和团队介绍等, 如果想要使用系统睡眠检测功能, 需要用户进行注册登录.
用户登录成功后, 可以进行睡眠监测, 选择自己喜欢的助眠音乐进行播放, 点击开始监测睡眠后, 系统会实时显示用户的脑电数值图, 同时实时显示用户的睡眠状态, 例如处于清醒期、浅睡期、深睡期或快速眼动期. 睡眠结束后, 用户可以查看自己本次的睡眠记录, 系统会显示用户本次睡眠记录的总情况, 包括深睡期时长、浅睡期时长、入睡时间等, 用户也可以查看历史睡眠记录, 检测自己的睡眠质量变化情况.
本系统的核心功能就是实现实时的在线睡眠分期, 用户戴上脑环入睡后, 系统可以使用算法模型对用户的脑电数据信息进行实时睡眠分期, 并显示到界面前端.
3.2 核心模块介绍(1)睡眠监测与调控模块
在该模块中, 用户可在脑环连接区查看当前脑环连接的情况, 当连接上脑环后, 该区域将显示已连接. 在睡眠音乐处, 用户可以点击“选择音乐”按钮, 根据自己的喜好选择不同的助眠音乐进行播放. 当用户点击“开始入睡”按钮, 系统开始进行实时监测, 脑电数值图区域将显示脑电环实时采集到的用户脑电图, 并在睡眠情况反馈区实时显示用户当前所处的睡眠状态, 反馈用户的睡眠情况.
用户醒来后, 可以点击脑环连接区的“结束睡眠”按钮, 系统将为用户生成本次睡眠报告, 用户可点击脑环连接区的“睡眠报告”按钮跳转至睡眠报告详情界面进行查看.
(2)睡眠报告模块
在该模块中, 用户可以查看最近一次睡眠的报告详情, 系统将以折线图可视化形式为用户展现详细的睡眠记录, 并在页面右侧显示用户最近一次睡眠的睡眠得分和睡眠时长. 在历史睡眠记录区域, 系统将向用户展现近7天的睡眠情况分布, 用户可以查看近7天的睡眠时长和深睡时长情况. 另外, 用户可以点击“查看更多”按钮, 跳转至“睡眠记录”界面, 查看用户所有的历史睡眠数据.
4 实验设计与分析本文实验使用的数据为Sleep-EDF数据集和10个健康成年人的自采集睡眠数据. 我们采用Sleep-EDF数据集进行算法模型训练、参数调整, 不断提高睡眠分期的准确率, 并对实验结果进行十折交叉验证. 另外, 我们采集了10名健康成年人的睡眠数据进行在线实时睡眠分期实验, 进一步验证算法模型的泛化性和与系统的可靠性.
4.1 Sleep-EDF测试睡眠准确率实验(1) Sleep-EDF数据集说明
Sleep-EDF[26]是一个基于睡眠研究的公共数据集, 该数据集是Physionet MIT-BIT生理信息库中的一个信号库. Sleep-EDF数据集中包含了197个多导睡眠图记录, 每个记录都包括了受试者睡眠的EEG数据, 采样频率为100 Hz, 且均有明确的专家睡眠分期结果, 主要分为两类睡眠数据: 健康人群的睡眠记录(以SC开头)和轻度睡眠障碍人群的睡眠记录(以ST开头).
(2)实验步骤
在本次实验中, 我们采用Sleep-EDF数据集中健康人群的睡眠脑电信号数据进行分期研究. 我们从Sleep-EDF数据集中选取了100组睡眠数据, 使用数据集中的Fpz-Cz和Pz-Oz两个通道的脑电数据进行研究, 在睡眠过程中连续30 s被划分为一个睡眠样本单元, 由专家根据R&K标准进行分期和标记. 这些信号数据记录分为6个睡眠阶段, 我们又把这6个睡眠阶段分为4类, 其中W代表清醒期, S1和S2代表浅睡期, S3和S4代表深睡期, R代表快速眼动期.
在本实验中, 我们选取Sleep-EDF数据集中80%的数据作为训练集训练深度学习模型, 10%的数据当成验证集调整模型超参数, 10%的数据作为测试集检验模型的最终性能. 将数据输入到本文提出的睡眠分期系统后, 通过数据预处理、时频域特征提取、CNN-BiLSTM神经网络进行自动特征提取与分类等步骤, 输出本系统的睡眠分期结果, 通过将结果与专家给出的睡眠分期结果进行对比, 评估模型的性能.
(3)评价方法
k折交叉验证是一种常用的动态验证方法, 常用来评价模型的泛化性能, 广泛地应用于自动睡眠分期领域, 本文使用10折交叉验证法来评价模型. 在k折交叉验证方法当中, 先将样本数据平均分为k个子集合, 然后循环遍历k个子集, 每次遍历都将当前子集作为验证集来验证模型的能力, 其余子集作为训练集来训练算法模型, 并且在遍历过程中存储每次遍历的模型评估指标值, 最后计算这k次评估指标的平均值, 把该平均值作为评价模型泛化性能最终的指标.
本文使用混淆矩阵对模型的准确率进行精度评价, 通过计算模型的精确率(PR)、召回率(RE)、F1-score (F1)、总体准确率(ACC)和Kappa系数(Kappa)来评估模型的性能, 计算方法如下:
$ PR = \frac{{TP}}{{TP + FP}} $ | (7) |
$ RE = \frac{{TP}}{{TP + FN}} $ | (8) |
$ {F1} = \frac{{2\times PR\times RE}}{{PR + RE}} $ | (9) |
$ ACC = \frac{{\displaystyle\sum\limits_{i = 1}^n {T{P_i}} }}{N} $ | (10) |
$ Kappa = \frac{{{p_o} - {p_e}}}{{1 - {p_e}}} $ | (11) |
其中,
(4)实验结果分析
本文采用提出的基于CNN-BiLSTM神经网络模型对Sleep-EDF数据集实现自动睡眠分期, 使用 100 个实验对象的脑电数据对模型进行训练与测试, 通过10折交叉验证后, 最终预测结果的混淆矩阵与各指标如表1所示.
如表1所示, 本算法模型在Sleep-EDF数据集上的平均总体睡眠分期准确率为92.33%, Kappa系数为0.84, 其中, W、LS、SWS、REM期的精确率分别为97.86%、82.19%、77.33%和74.89%, 而召回率分别为98.36%、84.18%、66.33%和72.14%. F1能够调和平衡精确率和召回率衡量分类算法的结果, 它是这两个值的调和平均值. 根据计算可得, 4个睡眠阶段的F1分别为98.11%、83.17%、71.41%和73.49%.
从表1中可以看出, 本文提出的算法在Sleep-EDF数据集上实现了比较令人满意的结果, 其中, 模型对于识别出W期的准确率是最高的, 而对于SWS期和REM期的准确率较低, 目前还有待提升. 在未来我们会对模型进行改进, 提高模型在SWS期和REM期的准确率.
Sleep-EDF是目前使用最广泛的睡眠分期数据集, 目前己经有很多的学者致力于对睡眠脑电 EEG 的自动分期研究, 为了能够更加全面地分析本文模型算法的分期结果, 表2对近年来具有代表性的睡眠分期研究与本文的结果基于Sleep-EDF公共数据集进行对比分析, 表中所列出的结果均为各研究的最优精度. 实验结果表明, 本文提出的算法模型在自采集睡眠数据实验中总体睡眠分期准确率可以达到92.33%, 其中Kappa系数为0.84, 本文提出的算法结果在现有的研究中达到了最高的准确率, 这表明本文提出的模型具有较高的分期性能.
在我们先前的研究中[27], 提出了一种基于多种生理信号的自动睡眠分期系统, 并获得了较高的准确性. 然而, 我们先前并没有将深度学习引入到睡眠分期过程中; 此外, Phan等人[28]使用了 Multitask 1-max CNN 模型对脑电信号和眼电信号进行五分类睡眠分期, 准确率为82.3%, 但是该方法需要使用多种生理信号, 在实际应用中存在一定的限制; Chen等人[29] 使用了机器学习算法Wavelet+FFT+SVM 对脑电信号进行四分类睡眠分期, 达到 86.82% 的准确率, Kappa系数为0.83; Zhu等人[30] 提出了 difference visibility graphs 方法进行睡眠分期, 在四分类分期任务中取得89.30%的准确率和0.83的Kappa系数; 由Mousavi等人[10] 提出的SleepEEGNet 模型是一种基于脑电信号的自动睡眠分期方法, 由 CNN 与 BiRNN 网络组成, 在五分类睡眠分期任务中的准确率为84.26%, Kappa系数为0.79; Eldele等人[31] 提出了一种基于注意力的单通道脑电睡眠分期的深度学习算法AttnSleep, 在五分期睡眠任务中取得81.30%的准确率, Kappa系数为0.74.
然而, 在现有的研究中, 大部分睡眠分期方法并没有考虑Sleep-EDF数据集中的数据不均衡问题, 而在本文中, 我们从均衡化采样和在训练过程中使用focal loss损失函数两个方面来解决这一问题. 此外, 本文提出了使用SFTF和Mel带通滤波器提取脑电数据的时频域特征, 与直接将数据输入模型相比, 该方法能够快速地提取数据频谱图特征, 有效减小数据的维度与数据量, 缩短训练时间, 适用于实时睡眠分期系统. 最后, 本文提出了一个基于CNN-BiLSTM的自动睡眠分期模型, 采用深度学习方法自动提取睡眠数据中的全部有用信息, CNN 网络用于提取每一个睡眠时期的综合特征, BiLSTM 网络用于从特征向量序列中提取前后时序信息. 本文提出的自动睡眠分期算法在四分类睡眠分期任务中的准确率为92.33%, Kappa系数为0.84, 具有较高的准确率与泛化性.
4.2 实时睡眠分期实验(1)自采集数据集说明
自采集睡眠实验对象是7名健康男性和3名健康女性, 平均年龄是25岁. 他们没有睡眠障碍, 也无吸烟、饮酒等其他不健康生活习惯. 为了最大限度地模拟实验对象的真实睡眠环境, 我们在信号采集室中进行数据采集, 信号采集室安静舒适, 配备了专业的医疗床. 采集时间约为第1天晚上11:30至第2天早上7:00, 平均睡眠采集时间为7 h, 数据采样率为250 Hz. 自采集睡眠数据会交由经验丰富的睡眠专家标记为4类: 清醒期(W)、快速眼动期(REM)、浅睡期(LS)和深睡期(SWS).
(2)实验步骤
本实验采用10名受试者的Fz-Cz和Pz-Oz双通道脑电数据作为系统的输入, 由脑电采集设备读取受试者一晚上的睡眠脑电数据, 图3和图4是本系统在实验过程中的睡眠监测界面和睡眠报告界面.
从图3的睡眠监测界面可以看出, 本系统在动态实时显示用户的脑电数值波动图, 并按照150 s的时间间隔将获取的脑电数据进行采样率转换、数据预处理、特征提取与分类等步骤处理, 实时显示睡眠分期结果到前端界面. 睡眠结束后, 本系统会保存睡眠分期结果, 并生成睡眠报告, 如图4所示, 睡眠报告中会显示用户的入睡时间、深睡期时长、浅睡期时长等睡眠状况. 同时在每个受试者进行睡眠测试结束后, 我们将存储的睡眠数据交由给睡眠专家进行人工判别分期, 最后将本系统的睡眠分期结果与专家的分期结果进行对比, 从而得到本系统实时睡眠分期的准确率.
(3)实验结果分析
表3展示了10名受试者的睡眠分期实验结果. 从这10名受试者的睡眠分期结果中可以看到, 平均睡眠分期准确率最高的为87.37%, 最低的分期准确率为62.81%, 最高的Kappa系数为0.78, 最低的Kappa系数为0.46. 根据10名受试者的实验结果, W、LS、SWS、REM期中最高的准确率分别为85.17%、87.13%、98.82%和96.64%. 图5显示了该实验结果的混淆矩阵, 从图5中可得, 本实验在W、LS、SWS和REM期的准确率分别为72.19%、82.99%、70.28%和88.86%. 通过计算可得, 本实验的平均总体精度为79.17%, Kappa系数为0.70.
与在Sleep-EDF数据集上获得的实验结果相比, 由于数据集来源的不同与实验设备的局限性, 本实验得到的分期精度低于在Sleep-EDF上进行的实验, 算法在实时分期方面的泛化性还有待提高. 然而, 与涉及了100名受试者的Sleep-EDF数据集相比, 模型在基于10名受试者的自采集睡眠数据中还是获得了可观的实验准确率. 我们认为, 增加模型训练集的数据来源与增大训练集的数量能够进一步提高模型的泛化性, 此外, 增加模型提取的特征和使用迁移学习也会是一个好的改进方法.
5 结论 5.1 系统优势
(1)脑机接口技术应用于睡眠监测
脑电信号是用于睡眠分期最可靠的生理信号, 它反映了大脑的活动情况. 本系统基于脑电信号对用户睡眠进行监测, 能够客观、高效地对用户的睡眠状态进行监测, 极大降低了传统睡眠软件中监测方法的不准确性和不稳定性.
(2)实时反馈的脑电睡眠检测
本系统能够持续采集用户的睡眠脑电数据并实时地显示睡眠分期结果. 在用户的睡眠过程中, 系统能够输出用户在每个时刻的实时睡眠状态, 并进行保存, 便于用户查看自己在一夜间的睡眠状态变化, 更好地了解自己的睡眠状况. 其次, 系统会将每一次的睡眠监控数据上传至数据库, 用户登录本系统的网站, 便能查看以往的睡眠详细记录与评分, 以了解自己在过去某段时间内的睡眠状况.
(3)自主选择的助眠音乐库
音乐有助于缓解睡眠障碍, 可以提升用户的睡眠质量, 因此本系统添加了音乐库, 提供播放歌曲、切换歌曲的功能, 由用户自己选择睡前助眠音乐进行播放, 这样有助于用户更好地入睡.
(4)简洁美观的UI网站设计
为了方便用户上手使用、减少学习网页使用的时间和精力, 且保证用户能够拥有良好的使用体验, 网页设计采用了简洁美观的设计风格. 同时将主要功能都清晰地排列在网页导航栏上, 保证用户能够方便快捷地找到自己需要的功能.
(5)睡眠分期算法的创新应用
本作品采用了基于CNN-BiLSTM的深度学习网络进行睡眠分期. 通过短时傅里叶变换(STFT)和Mel带通滤波器获得脑电数据的频谱图, 再利用卷积神经网络和双向长短时记忆神经网络进行时频域的特征提取, 有效地提高了自动睡眠分期的准确率. 与传统的基于统计规则的分期模型相比, 本系统使用的算法模型分期准确率更高, 泛化性能更好.
5.2 系统问题和解决(1)用户在佩戴脑环时, 由于睡觉翻身或者摇晃等原因可能导致脑环脱落, 且脑环佩戴会让用户觉得不适应, 从而影响正常的睡眠. 解决方法: 随着目前脑环产品的不断迭代更新, 一种舒适的、紧密贴合头部的软式脑环有望被实现, 这种软式脑环将有助于缓解上述现象, 给用户带来一种较好的睡眠体验.
(2)本系统运行在PC端, 需要用户持有该PC端环境支持, 适应人群有局限性. 解决方法: 后期通过开发移动端APP或微信小程序的方式, 来让系统的使用更加广泛.
(3)针对目前系统的睡眠音乐调控功能, 系统只是实现了让用户自定义选择音乐播放, 并根据用户不同睡眠阶段播放相应的音乐, 但是播放的音乐怎么样能针对性地有效促进睡眠, 这是后期需要继续探索和实现的.
5.3 总结本系统基于CNN-BiLSTM混合神经网络算法模型实现睡眠分期功能设计, 借助第三方脑电环接口, 实现了在线实时的睡眠分期, 解决了当前睡眠产品睡眠质量检测准确率低和医院检测费用昂贵的问题. 用户仅需佩戴脑环, 点击使用系统睡眠监测功能, 系统便会实时显示用户的睡眠状态, 并给出详细的睡眠质量监测报告. 同时经过实验设计与分析, 本系统的睡眠分期准确率能达到一个较高的水平, 为当代的实时睡眠分期系统做出了有意义的探索和尝试.
[1] |
崔盼盼. 基于深度学习脑电信号的睡眠分期[硕士学位论文]. 秦皇岛: 燕山大学, 2021.
|
[2] |
Zhao MM, Yue SC, Katabi D, et al. Learning sleep stages from radio signals: A conditional adversarial architecture. Proceedings of the 34th International Conference on Machine Learning. Sydney: JMLR.org, 2017. 4100–4109.
|
[3] |
Jin UB, Giakoumidis N, Kim G, et al. An intelligent sensing system for sleep motion and stage analysis. Procedia Engineering, 2012, 41: 1128-1134. DOI:10.1016/j.proeng.2012.07.292 |
[4] |
Koushik A, Amores J, Maes P. Real-time smartphone-based sleep staging using 1-channel EEG. Proceedings of the 2019 IEEE 16th International Conference on Wearable and Implantable Body Sensor Networks (BSN). Chicago: IEEE, 2019. 1–4.
|
[5] |
王琛磊. 基于DSP的睡眠监测系统设计与实现[硕士学位论文]. 广州: 华南理工大学, 2013.
|
[6] |
韩映萍. 实时睡眠分期算法研究与应用系统开发[硕士学位论文]. 成都: 电子科技大学, 2017.
|
[7] |
周鹏, 李向新, 张翼, 等. 基于主成分分析和支持向量机的睡眠分期研究. 生物医学工程学杂志, 2013, 30(6): 1176-1179. |
[8] |
程佳. 基于脑电信号的睡眠分期研究[硕士学位论文]. 北京: 北京理工大学, 2015.
|
[9] |
高群霞. 基于EEG的睡眠分期与睡眠评估方法研究[硕士学位论文]. 广州: 华南理工大学, 2015.
|
[10] |
Mousavi S, Afghah F, Acharya UR. SleepEEGNet: Automated sleep stage scoring with sequence to sequence deep learning approach. PLoS One, 2019, 14(5): e0216456. DOI:10.1371/journal.pone.0216456 |
[11] |
Phan H, Andreotti F, Cooray N, et al. SeqSleepNet: End-to-end hierarchical recurrent neural network for sequence-to-sequence automatic sleep staging. IEEE Transactions on Neural Systems and Rehabilitation Engineering, 2019, 27(3): 400-410. DOI:10.1109/TNSRE.2019.2896659 |
[12] |
Supratak A, Dong H, Wu C, et al. DeepSleepNet: A model for automatic sleep stage scoring based on raw single-channel EEG. IEEE Transactions on Neural Systems and Rehabilitation Engineering, 2017, 25(11): 1998-2008. DOI:10.1109/TNSRE.2017.2721116 |
[13] |
杨鑫, 吴之南, 钱松荣. 基于双向递归神经网络的单通道脑电图睡眠分期研究. 微型电脑应用, 2017, 33(1): 42-45. DOI:10.3969/j.issn.1007-757X.2017.01.012 |
[14] |
Dong H, Supratak A, Pan W, et al. Mixed neural network approach for temporal sleep stage classification. IEEE Transactions on Neural Systems and Rehabilitation Engineering, 2018, 26(2): 324-333. DOI:10.1109/TNSRE.2017.2733220 |
[15] |
罗森林, 郝靖伟, 潘丽敏. 基于CNN-BiLSTM的自动睡眠分期方法. 北京理工大学学报, 2020, 40(7): 746-752. DOI:10.15918/j.tbit1001-0645.2019.041 |
[16] |
杨浩, 黄茂林, 蔡志鹏, 等. 融合CNN和BiLSTM的心律失常心拍分类模型. 中国生物医学工程学报, 2020, 39(6): 719-726. DOI:10.3969/j.issn.0258-8021.2020.06.009 |
[17] |
李洋, 董红斌. 基于CNN和BiLSTM网络特征融合的文本情感分析. 计算机应用, 2018, 38(11): 3075-3080. DOI:10.11772/j.issn.1001-9081.2018041289 |
[18] |
郭浩, 许伟, 卢凯, 等. 基于CNN和BiLSTM的短文本相似度计算方法. 信息技术与网络安全, 2019, 38(6): 61-64, 68. |
[19] |
李玉平, 夏斌. 样本不平衡的睡眠数据分期研究. 微型机与应用, 2016, 35(18): 55-57, 61. DOI:10.19358/j.issn.1674-7720.2016.18.016 |
[20] |
肖瑛, 冯长建. 组合窗函数的短时傅里叶变换时频表示方法. 探测与控制学报, 2010, 32(3): 43-47. DOI:10.3969/j.issn.1008-1194.2010.03.011 |
[21] |
Ma XZ, Hovy EH. End-to-end sequence labeling via bi-directional LSTM-CNNs-CRF. Proceedings of the 54th Annual Meeting of the Association for Computational Linguistics. Berlin: ACL, 2016. 1064–1074.
|
[22] |
Hochreiter S, Schmidhuber J. Long short-term memory. Neural Computation, 1997, 9(8): 1735-1780. DOI:10.1162/neco.1997.9.8.1735 |
[23] |
Jang E, Gu SX, Poole B. Categorical reparameterization with Gumbel-Softmax. Proceedings of the 5th International Conference on Learning Representations. Toulon: ICLR, 2016. 1–13.
|
[24] |
Lin TY, Goyal P, Girshick R, et al. Focal loss for dense object detection. Proceedings of 2017 IEEE International Conference on Computer Vision (ICCV). Venice: IEEE, 2017. 2999–3007.
|
[25] |
Ioffe S, Szegedy C. Batch normalization: Accelerating deep network training by reducing internal covariate shift. Proceedings of the 32nd International Conference on International Conference on Machine Learning. Lille: JMLR.org, 2015. 448–456.
|
[26] |
Kemp B, Zwinderman AH, Tuk B, et al. Analysis of a sleep-dependent neuronal feedback loop: The slow-wave microcontinuity of the EEG. IEEE Transactions on Biomedical Engineering, 2000, 47(9): 1185-1194. DOI:10.1109/10.867928 |
[27] |
Pan JH, Zhang JH, Wang F, et al. Automatic sleep staging based on EEG-EOG signals for depression detection. Intelligent Automation & Soft Computing, 2021, 28(1): 53-71. |
[28] |
Phan H, Andreotti F, Cooray N, et al. Joint classification and prediction CNN framework for automatic sleep stage classification. IEEE Transactions on Biomedical Engineering, 2019, 66(5): 1285-1296. DOI:10.1109/TBME.2018.2872652 |
[29] |
Chen T, Huang HY, Pan JH, et al. An EEG-based brain-computer interface for automatic sleep stage classification. Proceedings of the 2018 13th IEEE Conference on Industrial Electronics and Applications (ICIEA). Wuhan: IEEE, 2018. 1988–1991.
|
[30] |
Zhu GH, Li Y, Wen P. Analysis and classification of sleep stages based on difference visibility graphs from a single-channel EEG signal. IEEE Journal of Biomedical and Health Informatics, 2014, 18(6): 1813-1821. DOI:10.1109/jbhi.2014.2303991 |
[31] |
Eldele E, Chen ZH, Liu CY, et al. An attention-based deep learning approach for sleep stage classification with single-channel EEG. IEEE Transactions on Neural Systems and Rehabilitation Engineering, 2021, 29: 809-818. DOI:10.1109/TNSRE.2021.3076234 |