发明内容
本发明的目的在于提供一种基于深度神经网络的自动睡眠分期及迁移方法,以解决上述背景技术中提出的问题。
为实现上述目的,本发明提供如下技术方案:一种基于深度神经网络的自动睡眠分期及迁移方法:
S1、采集受试者的睡眠脑电以及眼电信号作为迁移学习的目标数据集;
S2、选取数据集作为迁移学习的源数据集;
S3、对所述的源数据集和目标数据集中的数据进行预处理;
S4、构建基于深度神经网络的自动睡眠分期模型;
S5、使用源数据集对构建的自动睡眠分期模型进行训练,训练完成后可对源域上的数据进行自动睡眠分期,对目标域则可以得到预训练后的模型;
S6、使用少量目标数据集上的数据对预训练后得到的模型进行迁移,并将迁移后得到的模型对目标数据集上的数据进行自动睡眠分期。
优选的,步骤S1中,所采用的信号采集方法如下:在信号采集过程中,所使用的采集设备为32通道的脑电采集帽以及信号放大器,受试者需要戴上脑电采集帽后入睡,所有通道的脑电信号均以右耳突为参照,在本发明中仅采集“C3”通道的脑电信号,以及左右两个通道的垂直眼电信号,其中“C3”通道的脑电信号和“HEOL”、“HEOG”两个通道的眼电信号用于供给睡眠专家进行人工睡眠时期评定,用于后续计算实时睡眠分期系统的分期准确率,只有“C3”通道的脑电信号用于分期模型的训练和实时睡眠分期。在脑电采集的过程中,所有电极的阻抗值皆为5kΩ以下,信号均以250Hz的采样频率采样。
优选的,步骤S2中,对所选取的作为源数据集的数据集的要求如下:要选取数据量充足且数据质量较好的数据集作为源数据集,同时数据集中需要包含一个脑电信号通道以及眼电通道的信号,用于对本发明中基于深度神经网络的自动睡眠分期模型进行训练,训练得到的模型可以用于对该数据集中的测试数据进行预测,并得到模型的分期性能评估结果,另外训练后的模型可以作为预训练模型,用于后续在其他目标数据集上进行迁移学习。
优选的,步骤S3中,所述的数据预处理包含以下步骤:
S31、遵循AASM标准,对于采用R&K标准进行标记的数据,合并标签中的S3期和S4期,统一为AASM标准中的N3期,并消除睡眠前和睡眠后过长的清醒期,最终使得数据集中的数据按AASM标准分为W期、N1期、N2期、N3期和R期;
S32、为减少数据集中的噪声,同时保留信号中有效的信息,采用零相位滤波器,对脑电信号实施0.5-25Hz的带通滤波,对眼电信号实施0.3-25Hz的带通滤波;
S33、为减少模型输入的维度,同时保留信号中有效的信息,对数据集中的信号进行下采样,下采样后信号的采样频率为50Hz;
S34、选取数据集中一个脑电信号通道的数据以及眼电信号通道的数据,作为模型的输入信号,并把脑电和眼电信号按30s长度划分为多个片段,处于同一时间范围的一个脑电信号片段和一个眼电信号片段就构成一个输入样本。
优选的,步骤S4中,构建基于深度神经网络的自动睡眠分期模型包括以下步骤:
S41、每个输入样本中包含一个30s的EEG信号片段以及一个30s的EOG信号片段,将预处理后的EEG信号和EOG信号以一维信号的形式分别输入到模型的两个CNN中,分别从EEG和EOG信号中进行特征提取;
S42、处理EEG信号和EOG信号的两个CNN具有相同的网络结构,因此统一进行描述,输入的信号首先经过一个sinc一维卷积层,该卷积层中的各个卷积核使用不同参数的sinc函数对输入样本进行卷积,具有带通滤波器的效果,输出的各个通道是具在某个频率范围内的信号,且由于sinc层各个卷积核参数只有两个,因此该卷积层在具有良好的特征提取能力的同时可以有效减少模型参数,提升泛化性能;
S43、sinc卷积层的输出随后输入到3个连续的一维卷积模块中,每个卷积模块中,首先经过一个一维卷积层,然后经过一个最大池化层,最后把池化层的输出经过一个Weight Normalization(WN)以及一个leaky Relu,得到每个一维卷积模块的输出;
S44、S43中3个连续的一维卷积模块中最后一个模块的输出作为输入,输入到一个rule-based一维卷积模块中,该卷积模块根据AASM睡眠分期标准,在两个通道中采用了不同的池化方法,使得输出能更有效地提取与分期标准相关的特征;首先rule-based一维卷积模块的输入分别分发到该模块的两个通道中作为它们的输入:第一个通道的输入首先经过一个一维卷积层,随后该卷积层的输出经过WN和leaky Relu,最后经过一个特殊设计的最大池化层,该池化层的核大小和步长大小的设计思想是使得其输出的长度只有4个数据点,从而模拟AASM标准中判断特殊波形是否出现的规则;第二个通道与第一个通道除了最后的池化层,前面的结构完全相同,该通道最后的池化层使用的是平均池化层,该池化层的核大小为输入的长度,步长为1,基本思想是对该层的所有输入数据点作平均,模拟AASM标准中计算波形出现时间的规则;最后,rule-based一维卷积模块中,把两个通道的输出先flatten为一维输出之后,再拼接两个通道的输出,得到一个最终的一维输出作为该模块的输出;
S45、在S44中,模型的分别处理EEG和EOG的两个CNN都得到的一个一维的输出,将这两个一维输出拼接之后,经过一个dropout层,得到CNN部分最终的一个一维输出;
S46、为了提取时间上相邻的各个30s的输入样本之间的时序信息,在本发明中,把N个相邻的样本分别输入到S41-S45描述的CNN部分后,得到N个输入样本对应的N个一维输出,作为双向LSTM的N个时间点上的输入,N可以通过权衡模型的学习利能力以及模型的运算时间来选择,一般在5-20之间;最终从双向LSTM得到N个时间点上的一维输出,并分别把这些输出经过一个dropout层;
S47、把S46中得到的LSTM部分的N个一维输出,与S45得到的CNN部分的N个一维输出,按相同的时间片段拼接起来,得到N个一维输出,分别输入到一个具有全连接(FC)层,该FC层的激活函数为leaky Relu,然后其输出再经过一个的dropout层,最后把dropout层的输出输入到具有5个神经元的softmax层,最终就得到了各个30s输入样本对应5个睡眠阶段的输出概率,取对应概率最大的阶段就得到睡眠分期结果。
优选的,步骤S5中,在构建完自动睡眠分期模型后,使用源数据集进行训练的步骤如下:
S51、把源数据集划分为训练数据和测试数据,训练数据再划分为训练集和验证集,训练集上使用上采样,使得训练集中5个睡眠阶段的样本数目大致相同;
S52、模型训练过程中,使用focal loss计算损失,优化函数使用Adam;
S53、使用训练集对模型进行训练,把训练数据集按设定的batch size大小,划分为多个batch,每次把一个batch输入到模型中进行训练,最终对所有batch进行多次迭代。在迭代过程中,每迭代训练了设定数量的batch时,就用当时的模型对验证集进行预测,保存在验证集上准确率最高的模型作为训练的结果,训练完成后,对源域来说可以对测试集上的数据进行自动睡眠分期,验证模型的分期性能,对之后要进行迁移的目标域来说则得到了一个经过预训练的模型。
优选的,步骤S6中,所述的模型迁移方法如下:
S61、从目标数据集中,仅随机选取两名被试的数据用作迁移,两名被试中共有4晚数据,其中2晚划分为训练集,2晚划分为验证集,其余所有被试的数据作为测试集;
S62、使用微调方法,对模型进行迁移,微调方法是指在训练过程中保持预训练模型的一部分参数不变,而另一部的参数随训练的过程进行更新;
S63、模型迁移过程中,使用的focal loss计算损失,使用Adam作为优化函数,并根据迁移的特点选择适当的参数;
S64、使用训练数据集对模型进行迁移,把训练数据集按设定的batch size大小,划分为多个batch,每次把一个batch输入到模型中进行训练,最终对所有batch进行多次迭代。在迭代过程中,每迭代训练了设定数量的batch时,就用当时的模型对验证集进行预测,保存在验证集上准确率最高的模型作为迁移的结果,最终可以对测试集进行预测,验证模型迁移后的性能;
S65、迁移完成后,若在实际应用中,则可以使用迁移后的模型,对目标域上的未进行人工打标的新数据进行自动睡眠分期,缓解人工完成睡眠分期的压力。
与现有技术相比,本发明的有益效果是:本发明提出了一种改进的基于深度神经网络的自动睡眠分期模型及其迁移方法,在得到源数据和目标数据后,先使用预处理方法对数据进行降噪等处理,随后利用源数据集中的数据对提出的深度神经网络模型中进行预训练,最终把预训练后的模型在目标数据集上进行迁移,得到的迁移后的模型就可以对目标域上的新数据进行自动睡眠分期,且分期结果能够取得较高的准确率。
与已有的基于传统机器学习方法的模型相比,本发明无须单独的特征提取过程,减少了模型的处理步骤以及计算时间,同时深度学习模型加上使用大量数据的预训练过程也使得本方法具有更好的泛化性能。
与以往的基于深度神经网络的方法相比,本发明在模型结构上使用CNN来提取单个30s样本中的特征,使用LSTM来提取多个连续的30s样本中的时序信息与它们之间的相互作用,因此能够有效地提取进行睡眠分期所需的特征与信息,同时在CNN中采用了sinc卷积层以及rule-based卷积模型,使得模型提取特征的方法更接近AASM标准中对应的信息提取过程,因此本发明在相同的公开数据集上能够取得更好的分期效果,且在使用少量源域上的数据进行迁移时,也有更好的泛化和迁移性能,在源域上也取得了更高的分类准确率。
与以往的自动睡眠分期方法相比,本发明由于具有更好的泛化性能,在仅使用目标数据集中两个被试的数据的情况下,就可以把预训练的模型迁移到目标数据集上,同时保持较高的准确率,因此在实际应用中,即使目标数据集可能具有不同的信号特征且可用于训练的数据量较少,本发明的模型也可以有效且灵活地迁移到这些数据集上,大大提高了模型的实用性。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例1
请参阅附图,本发明提供一种技术方案:参照图1,一种基于深度神经网络的自动睡眠分期及迁移方法,其具体步骤如下:
采集受试者的睡眠脑电以及眼电信号作为迁移学习的目标数据集:
本发明采用脑电图帽和放大器SynAmps2及NuAmps来记录脑电和眼电信号,在信号采集的过程中,受试者头戴脑电图帽,在脑电图帽中需要记录的“C3”脑电通道的电极、“HEOL”和“HEOG”两个通道的眼电电极以及参考电极A2涂抹GT20医用导电膏以及GT5磨砂导电膏,使电极阻抗迅速降至5kΩ以下,满足信号记录的硬性标准;在佩戴好脑电图帽后,受试者需要在信号采集室中入睡,同时开始进行信号采集,在采集过程中,所有通道信号均以250Hz的采样频率进行采集,经过放大器放大后传输到电脑中进行数据处理。在采集完成后,数据先交给睡眠专家进行人工睡眠时期评定,得到的标签用于后续计算自动睡眠分期方法的训练以及性能评定。在采集的各个通道的信号中,本实施例选取“C3”通道的脑电信号,以及“HEOL”、“HEOR”两个通道的眼电信号相减后得到的垂直差分眼电信号“HEOG”,用于后序基于深度神经网络的自动睡眠分分期模型的训练或迁移。
2)选取数据集作为迁移学习的源数据集:
本实施例中,选取公开数据集的来源为PhysioBank的Sleep-EDF数据库,该数据库包含两个数据集,其中选取Sleep Cassette(SC)数据集作为源数据集。Sleep-EDF-SC数据集的数据来源为20个无睡眠相关疾病的受试者,其年龄范围在25至34岁之间,每个受试者都完成了1至2次的数据采集过程,因此数据量充足,适用于对深度神经网络模型进行预训练。该数据集中信号的采样频率为100Hz,其中包含Fpz-Cz和Pz-Oz两个通道的EEG信号,以及一个Horizontal EOG信号,在本实施例中选取Fpz-Cz通道的EEG信号以及HorizontalEOG信号作为模型的输入。
3)对源数据集和目标数据集中的数据进行预处理:
3.1)遵循AASM标准,对于采用R&K标准进行标记的数据,合并标签中的S3期和S4期,统一为AASM标准中的N3期,并消除睡眠前和睡眠后过长的清醒期,最终使得数据集中的数据按AASM标准分为W期、N1期、N2期、N3期和R期;
3.2)为减少数据集中的噪声,同时保留信号中有效的信息,采用零相位滤波器,对脑电信号实施0.5-25Hz的带通滤波,对眼电信号实施0.3-25Hz的带通滤波。其中使用零相位滤波器可以减少输入信号中的失真,从而保留信号中的与睡眠分期相关的有效特征,在本实施例中该滤波器的具体实现方法如下:选取与滤波参数对应的IIR滤波器,先将输入序列按顺序通过IIR滤波器,再将所得结果逆转后再次通过该IIR滤波器,最终将上一步的结果逆转后输出,即得到精确零相位失真的滤波后的输出序列;
3.3)为减少模型输入的维度,同时保留信号中有效的信息,对数据集中的信号进行下采样,下采样后信号的采样频率为50Hz;
3.4)将数据集中选取的作为模型输入的脑电和眼电信号按30s长度换分为多个片段,处于同一时间范围的一个脑电信号片段和一个眼电信号片段就构成一个输入样本。
4)构建基于深度神经网络的自动睡眠分期模型:
参照图2,构建基于深度神经网络的自动睡眠分期模型的具体步骤如下:
4.1)经过步骤3中的数据预处理后,每个输入样本中包含一个30s的EEG信号片段以及一个30s的EOG信号片段,由于信号的采样频率均下采样至50Hz,因此每个输入样本中EEG信号和EOG信号均有1500个样本点,随后将EEG信号和EOG信号以一维信号的形式分别输入到模型的两个CNN中,分别从EEG和EOG信号中进行特征提取;
4.2)处理EEG信号和EOG信号的两个CNN具有相同的网络结构,因此统一进行描述,输入的1500个样本点的信号首先经过一个sinc一维卷积层,该卷积层中的各个卷积核使用不同参数的sinc卷积核对输入样本进行卷积,具有带通滤波器的效果,输出的各个通道是具在某个频率范围内的信号,且由于sinc层各个卷积核参数只有两个,因此该卷积层在具有良好的特征提取能力的同时可以有效减少模型参数,提升泛化性能。
具体地,在本实施例中,sinc卷积层中使用一组参数化的sinc滤波器对输入进行卷积,其中离散的sinc滤波器可以表示为如下公式:
g[n,f1,f2]=2f2sinc(2πf2n)-2f1sinc(2πf1n)
其中sinc函数可以表示为sinc(x)=sin(x)/x,f1和f2是该滤波器的低频和高频截止频率,是在sinc层中每个卷积核仅有的两个可学习的参数。由于离散sinc滤波器时长度有限的,因此需要加窗,本实例中采用了汉明窗,汉明窗以及加窗后的sinc滤波器可以表示为如下公式:
gw[n,f1,f2]=g[n,f1,f2]·w[n]
最终,对输入x[n],输入sinc卷积层后经过每个sinc卷积核得到输出y[n]的过程可以用如下公式表达:
y[n]=x[n]*w[n]g[n,f1,f2]
4.3)sinc卷积层的输出随后输入到3个连续的一维卷积模块中,每个卷积模块中,首先经过一个一维卷积层,然后经过一个最大池化层,最后把池化层的输出经过一个Weight Normalization(WN)以及一个leaky Relu,得到每个一维卷积模块的输出。
4.4)步骤4.3中3个连续的一维卷积模块中最后一个模块的输出作为输入,输入到一个rule-based一维卷积模块中,该卷积模块根据AASM睡眠分期标准,在两个通道中采用了不同的池化方法,使得输出能更有效地提取与分期标准相关的特征;首先rule-based一维卷积模块的输入分别分发到该模块的两个通道中作为它们的输入:第一个通道的输入首先经过一个一维卷积层,随后该卷积层的输出经过WN和leaky Relu,最后经过一个特殊设计的最大池化层,该池化层的核大小和步长大小的设计思想是使得其输出的长度只有4个数据点,从而模拟AASM标准中判断特殊波形是否出现的规则;第二个通道与第一个通道除了最后的池化层,前面的结构完全相同,该通道最后的池化层使用的是平均池化层,该池化层的核大小为输入的长度,步长为1,基本思想是对该层的所有输入数据点作平均,模拟AASM标准中计算波形出现时间的规则;最后,rule-based一维卷积模块中,把两个通道的输出先flatten为一维输出之后,再拼接两个通道的输出,得到一个最终的一维输出作为该模块的输出;
4.5)在S44中,模型的分别处理EEG和EOG的两个CNN都得到的一个一维的输出,将这两个一维输出拼接之后,经过一个dropout层,得到CNN部分最终的一个一维输出;
4.6)为了提取时间上相邻的各个30s的输入样本之间的时序信息,在本发明中,把N个相邻的样本分别输入到S41-S45描述的CNN部分后,得到N个输入样本对应的N个一维输出,作为双向LSTM的NN个时间点上的输入,最终从双向LSTM得到N个时间点上的一维输出,并分别把这些输出经过一个dropout层;具体地,在本实施例中,N设置为20。
具体地,在LSTM层中,对于每个时间位置t的输入xt以及上一时刻的隐藏层信息ht-1其前向传播过程在的具体计算公式如下:
it=sigm(Wxixt+Whiht-1)
ft=sigm(Wxfxt+Whfht-1)
ot=sigm(Wxoxt+Whoht-1)
ht=ot⊙tanh(ct)
其中⊙代表逐元素相乘,sigm代表sigmoid函数,tanh代表tanh函数;
4.7)把S46中得到的LSTM部分的20个一维输出,与S45得到的CNN部分的20个一维输出,按相同的时间片段拼接起来,得到20个一维输出,分别输入到一个全连接(FC)层,该FC层的激活函数为leaky Relu,然后其输出再经过一个dropout层,最后把dropout层的输出输入到具有5个神经元的softmax层,最终就得到了各个30s输入样本对应5个睡眠阶段的输出概率,取对应概率最大的阶段就得到睡眠分期结果。
5)使用源数据集对构建的自动睡眠分期模型进行训练,训练完成后可对源域上的数据进行自动睡眠分期,对目标域则可以得到预训练后的模型
5.1)把源数据集划分为训练数据和测试数据,训练数据再划分为训练集和验证集,训练集上使用上采样,使得训练集中5个睡眠阶段的样本数目大致相同;
5.2)模型训练过程中,使用focal loss计算损失,优化函数使用Adam。
其中本实施例中采用focal loss可以缓解训练样本中难易样本数量不平衡导致训练不充分的问题,focal loss的具体计算公式如下所示:
其中
为模型softmax层的输出中,对应真实标签的类别的输出预测概率。
5.3)使用训练集对模型进行训练,在本实施例中,总共迭代遍历训练数据集20次,迭代的batch_size设为8,每迭代训练1000个batch,就用当时的模型对验证集进行预测,保存在验证集上准确率最高的模型作为训练的结果,训练完成后,对源域来说可以对测试集上的数据进行自动睡眠分期,验证模型的分期性能,对之后要进行迁移的目标域来说则得到了一个经过预训练的模型;
具体地,为了验证本发明提出的模型在源数据集中直接训练后得到的模型的分期性能,在本实施例中,在包含20个被试数据的Sleep-EDF数据集上执行了一次20折交叉验证,其具体过程为在每一折交叉验证中,选取数据集中一个被试的数据作为测试集,15个被试的数据作为训练集,4个被试的数据作为验证集,按照上述步骤5.1)-5.3)训练并计算每一折在测试集上的性能,最终计算得到20折交叉验证的平均性能,如下表1所示:
表1.本发明与其他基于深度神经网络的方法的分期性能对比
其中总体性能中ACC代表准确率,k代表kappa系数MF1代表宏平均F1值,是先计算每一类的F1,然后各类求平均;而SeqSleepNet则是在本实施例中选取作为对比的一个基于深度神经网络的自动睡眠分期方法,它们都是在自动睡眠分期领域中性能好且认可度高的方法。
从表1中可以看出,在该实施例中,本发明提出的模型在Sleep-EDF数据集的20折交叉验证的分期结果中取得了84.9%的准确率、0.789的MF1以及0.785的kappa系数,与SeqSleepNet相比,具有较好的分类性能,因此本发明中提出的自动睡眠分期方法十分有效。
6)使用少量目标数据集上的数据对预训练后得到的模型进行迁移,并将迁移后得到的模型对目标数据集上的数据进行自动睡眠分期
6.1)从目标数据集中,仅随机选取两名被试的数据用作迁移,两名被试中共有4晚数据,其中2晚划分为训练集,2晚划分为验证集,其余所有被试的数据作为测试集;
6.2)使用微调方法,对模型进行迁移,微调方法是指在训练过程中保持预训练模型的一部分参数不变,而另一部的参数随训练的过程进行更新,在本实施例中,具体的微调方法为保持预训练的CNN部分参数不变,使LSTM部分和FC部分的参数随训练的过程进行更新;
6.3)模型迁移过程中,使用的focal loss计算损失,优化函数使用Adam;
6.4)使用训练数据集对模型进行迁移,在本实施例中,总共迭代遍历训练数据集200次,迭代的batch_size设为8,每迭代训练1000个batch,就用当时的模型对验证集进行预测,保存在验证集上准确率最高的模型作为迁移的结果,最终可以对测试集进行预测,验证模型迁移后的性能;
6.5)迁移完成后,若在实际应用中,则可以使用迁移后的模型,对目标域上的未进行人工打标的新数据进行自动睡眠分期,缓解人工完成睡眠分期的压力。
具体地,为了验证本发明提出的模型在目标数据集中直迁移后得到的模型的迁移性能,在本实施例中,仅选取2名被试的数据作为训练集和验证集,目的是为了充分验证模型的迁移性能,同时使模型能够在小数据量的实际场景中也能很好的发挥作用。在本实施例中首先按步骤1)的方法采集了12个被试的睡眠数据,之后执行了一次6折交叉验证,其具体过程为在每一折交叉验证中,选取数据集中2个被试的数据作为训练集和验证集,其余剩下的10个被试的数据都作为测试集,随后按照上述步骤6.1)-6.4)进行迁移并计算每一折在测试集上的性能,最终计算得到6折交叉验证的平均性能。最终得到的6折交叉性能如表2所示:
表2.本发明与其他基于深度神经网络的方法的迁移性能对比
从表2中可以看出,在该实施例中,本发明提出的模型在6折交叉验证的迁移结果中取得了83.6%的准确率、0.798的MF1以及0.778的kappa系数,与SeqSleepNet相比,具有更好的迁移性能,因此本发明中提出的自动睡眠分期方法有良好的迁移性能。
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。