基于心电信号的自注意力双向门控循环网络疲劳检测模型
2022-05-31刘婕王娆芬邓源
刘婕,王娆芬,邓源
上海工程技术大学电子电气工程学院,上海 201620
前言
国内外大量调查研究表明,70%~90%的事故是由于人的不安全行为导致的,其中,疲劳是引起这些事故的重要因素之一[1]。人类操作员的作业技术和身体疲劳程度直接影响其作业效率和质量,因此,研究可靠且高效的疲劳状态检测方法来识别操作员在作业过程中的疲劳状态,对减少由疲劳引发的作业事故及保护作业人员身心健康具有重要意义和研究价值。
由于心电信号的形态和特征存在较大的个体差异性,因此采用传统的机器学习方法对心电信号进行识别仍存在一些问题。例如,朱坤[2]针对驾驶疲劳的波动性变化特征,提出了一种基于心率变异性的驾驶疲劳识别方法,选取3 项时域指标和5 项频域指标构建驾驶疲劳识别特征向量,采用支持向量机实现疲劳等级识别,该方法仅适用于小样本量,且整体识别耗时较长。
深度学习相比较于传统的机器学习方法,对信号数据处理的效率相对较高,在特征提取过程中耗时相对较短[3]。例如,白志强[4]利用深度学习神经网络能够自动逐层提取数据特征的优点,在传统BP 神经网络的基础上进行改进,解决基于生理信号的精神状况识别问题,模型的准确性和适应性大大提高。Bhardwaj 等[5]提出一种基于Stacked Autoencoders 的深度学习模型,用来判断驾驶员的精神疲劳状态,与传统分类方法对比效果更优。刘海平[6]分别使用VGG-Net、AlexNet 对经过一维信号转换后的二维图像进行驾驶员疲劳状态识别分类,取得了不错结果。同时,对获得的心电信号进行分析,将不断改进和调整后的深度学习网络应用到信号的分类识别中,可大大提高网络对信号数据的分析性能,有利于深度学习在心电领域分类方法的研究。
本研究以不同任务负荷下的操作人员为对象,研究适用于作业环境的、高性能的基于心电信号的疲劳检测方法,提出一种基于自注意力(Self-Attention,SA)的双向门控循环(BiGRU)网络疲劳检测模型。以一维心电数据作为输入,经过BiGRU 神经网络完成特征提取后,通过添加一个SA 机制层对特征信息做进一步的筛选和加权,最后通过一个softmax分类器完成对心电信号的识别分类。
1 数据采集试验
1.1 试验环境
试验采用由Hockey 等[7]和Lorenz 等[8]编制的仿真软件——AutoCAMS(Automation-enhanced Cabin Air Management System)模拟安全性和可靠性较高的过程控制任务环境。AutoCAMS 包含了5 个子系统,并分别控制密闭舱内与人类生存息息相关的5项大气指标,即温度、氧气浓度、二氧化碳浓度、湿度和压力。整个试验过程中,系统对5个大气指标均控制在正常阈值范围内。
1.2 被试
试验选择7 名身体健康精神状况良好的男性研究生为被试者,试验开始前,被试者均经过一周的软件操作训练。试验前一天有充足的睡眠及良好的饮食,以保证实验时被试者的精神及身体状态良好、能够高度集中注意力。
1.3 试验设计
采用日本光电公司Nihon-Koden EEG1100 型生物电信号采集设备记录被试的心电数据,用贴电极的方式采集信号,电极放置部位分别为颈窝和腰部。在被试者执行不同难度任务阶段,记录被试者的心电信号数据。图1 为整个试验范式,试验包括8 个阶段,共持续100 min,其中C1 和C8 为基线测试阶段,持续5 min,此两个阶段所有子系统都自动运行,只需要观测界面上指标变化,即C1、C8 阶段内的生理数据是在被试无任务状态下测得;C2~C7 为常规阶段,每阶段15 min,将所需控制子系统数目作为划分任务难度等级标志,此6个阶段要求被试者手动控制子系统数目分别为1、3、4、4、3、1,同时7 名被试者还需完成自我评价等工作。
图1 试验范式Figure 1 Experiment paradigm
自我评价中将心理负荷划分为4 项:紧张(anxiety)、疲劳(fatigue)、努力程度(effort)、任务难度(difficulty),每项均为百分制,在每个阶段的开始和结束时询问被试者并记录分值。试验结束后,将每位被试者自我评价表中的分数重新加权计算,分别按照疲劳40%、紧张30%、努力20%、任务难度10%的权重比例,进行加权求和计算得到一个新的综合评价分值。并以综合评价分作为8 个阶段疲劳等级划分依据。本研究中,将疲劳等级划分为轻度疲劳、中度疲劳、重度疲劳3项,并分别赋予0、1、2标签。
2 方法
2.1 数据预处理
心电信号预处理的核心任务是,从包含干扰的信号中提取数据,并且保留有用的信息[9]。本研究采用小波阈值法对试验采集到的心电信号进行去噪,滤除信号中的基线漂移、工频干扰和肌电干扰。其核心思想是首先对噪声所分布的子带系数设定适当的阈值[10],当小波系数小于阈值范围时,则考虑该系数由噪声产生的,可将其置零或适当收缩,而大于阈值的系数则被保留。
本研究将采集到的心电数据去噪后,需进一步进行数据分割:将7 名被试者的每1 次试验中8 个阶段的数据,根据自我评价划分3个疲劳等级。训练集以1 000 个采样点作为一个样本,由于C1、C8 阶段试验数据只有5 min,因此,C1、C8阶段控制采样步长为500,共裁出596 个样本;C2~C7 阶段数据以1 000 个采样点为步长进行裁剪,得到449 个样本,共6 组,即共计有3 290 条数据,并按照7:3 的比例,对每个阶段额外划分出测试集。由此得到每个受试者1 次试验数据为:训练集2 303,测试集987,样本分布情况如图2所示。由于每位被试者均有3次试验,因此实际模型训练中样本数量均乘3倍。
图2 样本分布情况Figure 2 Sample distribution
2.2 BiGRU
门控循环单元(Gated Recurrent Unit,GRU)结构如图3 所示。它是长短期记忆网络(Long Short-Term Memory, LSTM)的一个变体,可以克服循环神经网络(Recurrent Neural Network,RNN)无法很好处理远距离依赖的问题[11]。相比较于LSTM,GRU 的参数更少,收敛速度更快,结构上仅有两个门(update 和reset)[12-13],因此在保持LSTM 功能的同时,结构更加简单也更易于计算,能很大程度上提高训练效率。
图3 GRU内部结构Figure 3 GRU internal structure
本研究采用由两个单向GRU 叠加的BiGRU 构建模型[13],结构如图4 所示,即将预处理后的心电数据同时经过由两个相反方向的GRU构成的网络模型进行特征提取,其隐含层状态分别由网络的正反向隐含层状态加权求和获得。因此,在保留GRU 优点的同时,BiGRU 可以更加充分学习心电信号前后时序的特征联系,更好把握全局特征信息,提高模型的分类识别性能。
图4 BiGRU内部结构Figure 4 BiGRU internal structure
本研究利用Tensorflow 深度学习框架搭建网络,模型选用经典的BiGRU 结构,并在BiGRU 网络前引入两层一维卷积层以及最大池化层,目的是在输入BiGRU 网络前起到降维的作用,减少网络参数,提升拟合速率。
2.3 SA机制
注意力机制在本质上与人类的视觉注意力机制相似,它通过网络自主学习出一组权重系数,并以“动态加权”的方式将注意力集中在相关性较大的特征信息上,忽略大多相关性较低的不重要信息,它就像是一个筛选器,能够从大量特征信息中有选择地筛选出相关比重较大的信息并聚焦到这些重要信息上[14-15]。
SA 是注意力机制的一种特殊形式[16-18],其结构如图5 所示。相比于传统的注意力机制,SA 旨在获得数据特征信息内部之间的相关性,本研究将SA 与BiGRU网络相结合,从而提高模型的整体分类性能。
图5 SA内部结构Figure 5 SA internal structure
2.4 SA-BiGRU模型
图6为SA-BiGRU的网络结构,共包含3个部分:输入层、隐含层和输出层。SA-BiGRU 模型结构图见图7。其中,隐含层分别由1 个BiGRU 层、1 个SA 层和1个Dense层(全连接层)构成。这3个部分的功能主要包括:(1)输入层。读取预处理好的心电信号向量数据。(2)隐含层。主要目的是对输入隐含层的向量数据进行深层次的特征提取。计算由BiGRU 层输出的特征向量,并在SA 层计算每个特征向量应分配的概率权重[19-20]。这个步骤主要是进一步提取特征,为不同特征向量分配相对应的权重比例,突出特征的关键信息。其中,SA 机制层的权重系数具体通过以下几个公式进行计算,ht为上一层的BiGRU 神经网络层的输出向量,bx表示偏置系数,wx表示权重矩阵,ux表示随机初始化的注意力矩阵,αw表示经过softmax 函数计算归一化后得到的权重系数,SA 机制矩阵st由SA 机制分配的不同概率权重与各个隐层状态相乘后累加得到。
(3)输出层。输出层的输入为上一层SA 机制层的输出。利用softmax函数对输出层的输入进行相应的计算从而进行分类,具体公式如下:
其中,w1表示SA 机制层到输出层的待训练权重系数矩阵,b1表示待训练相对应的偏置,yt为输出的预测分类标签。
图6 SA-BiGRU网络结构Figure 6 SA-BiGRU network structure
图7 模型结构图Figure 7 Model structure diagram
3 结果与分析
本研究基于python 3.6 环境,使用Tensorflow 平台库对提出的结合SA 机制的BiGRU 疲劳分类模型进行仿真。采集了模拟不同负荷水平的过程控制任务环境下操作人员的心电数据,通过小波阈值法进行去噪。(1)分解:选择小波基函数bior6.8 进行小波分解,分解尺度为9。(2)阈值去噪:选择软阈值函数,用极大极小准则计算阈值,消除目标噪声并获得新的小波系数。(3)重构:将1、2、3 尺度的小波系数置零,并滤除9尺度下的低频信号后重构信号。
将一维心电信号数据输入模型,并以交叉熵损失函数为目标函数[21-22],训练每一层网络参数。其中,每一批次训练输入的样本数量Batchsize=256,学习率Lr=0.01。以被试者2和被试者4为例展示结果,图8 为被试者2 的疲劳分类准确率变化图,本研究模型经过100 次训练后开始收敛,分类准确率最高在83%左右。图9为被试者2训练过程中的损失函数变化图,从图中可见,随着训练的次数增加,损失函数逐步下降最后趋于稳定,最终收敛于0.3 左右。图10为被试者4 的疲劳分类准确率变化图,从图中可见,本研究模型经过150次训练后开始收敛,验证集最高准确率在80%左右。图11 为被试者4 在训练过程中的损失函数变化图,随迭代次数的增加,训练过程中的损失函数逐步下降,最终收敛于0.3左右。
图8 被试2疲劳分类准确率变化Figure 8 Changes in accuracy of classifying the fatigue state of subject 2
图9 被试2在训练过程中的损失函数变化Figure 9 Changes in loss function of subject 2 during training
图10 被试4疲劳分类准确率变化Figure 10 Changes in accuracy of classifying the fatigue state of subject 4
图11 被试4在训练过程中的损失函数变化Figure 11 Changes in loss function of subject 4 during training
为了更好地对比本研究模型的特征提取分类效果,在对SA-BiGRU 模型仿真的基础上,同时选择传统GRU、单一BiLSTM 和BiGRU 训练模型分别对本研究数据集进行分类仿真。图12为本研究模型与其他几类模型的疲劳分类准确率对比图,从图中可见,在经过40 次训练之后,BiGRU 模型的准确率上升趋势逐渐高于传统GRU 模型,说明对传统GRU 模型的双向改进,更有利于深层次特征的提取。对比模型中,BiGRU 模型的分类性能整体高于BiLSTM,同时由于BiLSTM 网络结构较为复杂且参数计算量大,因此网络收敛速度慢于BiGRU。而结合了SA 机制的SA-BiGRU 模型,在原来的基础上,经过SA 层对特征信息进一步筛选后,整体准确率有较明显的提高,最高准确率在83%左右,分类性能显著高于其他3类对比模型。
如表1所示,以一维数据作为输入,7名被试者在SA-BiGRU 模型中的疲劳分类准确率较单一的BiGRU 模型,提高了2%~5%。说明在BiGRU 模型中经过SA 层对特征信息的权重分配及筛选,能够在减少参数量提高速度的同时,有效地提升BiGRU 模型对心电信号数据的分类精度。
图12 本文模型与其他模型疲劳分类准确率对比Figure 12 Comparison of fatigue classification accuracy of the proposed model and other models
表1 SA-BiGRU与BiGRU、GRU、BiLSTM 模型疲劳分类准确率(%)Table 1 Accuracies of SA-BiGRU,BiGRU,GRU and BiLSTM models for fatigue classification(%)
表2 为本研究模型在每一类别下的疲劳识别准确率,SA-BiGRU 对轻度疲劳的识别准确率为82.8%,中度疲劳的识别准确率为79.7%,重度疲劳的识别准确率为84.6%,相比于轻度疲劳和重度疲劳,中度疲劳的识别准确率最低。
表2 基于SA-BiGRU模型各疲劳等级分类准确率Table 2 Classification accuracy of fatigue grades based on SA-BiGRU model
从表1、表2 中的分类结果可以看出:(1)SABiGRU 模型在绝大多数情况下都优于传统的GRU、BiGRU、BiLSTM 模型,分类准确率提高2%~5%,说明经过改进后的SA-BiGRU 能够有效提高模型的整体分类准确率。(2)表2 中中度疲劳的识别准确率相对较低,考虑到心电信号在采集过程中易受环境影响且存在着一定的个体差异性,以致中度疲劳与轻度及重度疲劳类别中的临界差异较难区分,因此分类精度低于其他两类别,轻度疲劳识别准确率为82.8%,重度疲劳识别准确率为84.6%,总体分类准确率达83%。
通过以上试验可以看出,经过增加SA 机制改进后的BiGRU 模型在每名被试者的数据中都能达到较好的分类效果,同时相比较于其他双向长短时序列模型,BiGRU 的结构更简单,参数量较少且网络拟合速度更快。
4 结语
为了能够更加准确地对操作员的疲劳状态进行识别,本研究以BiGRU 为基础,在模拟不同负荷水平的过程控制任务环境下,采集操作人员心电数据,根据特征信息间存在的依赖关系,增加SA 机制,构建一种基于心电信号的SA-BiGRU 疲劳分类模型。同时对比了一维心电信号在改进的SA-BiGRU 模型和传统的GRU、BiGRU 及BiLSTM 模型中的疲劳识别分类效果。经过仿真证实,本研究中一维信号输入在BiGRU 网络模型中的疲劳分类准确率显著高于传统的GRU 网络,与分类性能较为相近的BiLSTM 相比,其网络收敛速度更快。其次,在分类性能较好的BiGRU模型中增加一个SA 机制,结果表明,7名被试者在SA-BiGRU 模型中的疲劳分类效果高于原模型2%~5%,说明结合SA 机制能够使本文模型在每个被试的数据中达到最佳分类效果,总体分类准确率达83%。本研究提出的方法为生理信号研究方向提供了一种识别性能较好的疲劳分类模型,该研究方法可与疲劳检测相关的移动端设备相结合,对减少由于疲劳引起的作业安全事故具有一定现实应用意义。