首页 百科知识 网络运用于认知负荷多维综合评估的设计

网络运用于认知负荷多维综合评估的设计

时间:2023-03-19 百科知识 版权反馈
【摘要】:因此,本研究借助于MATLAB工具箱中的工具函数,结合认知负荷测评建模的实际,选择最优化的BP算法和网络结构,建立起用于认知负荷分类的BP网络模型,并对建模结果进行分析。输出项神经元个数,即所要区分和识别的认知负荷水平的等级数。对于特征量的选取,主要考虑它是否与认知负荷有比较确定的相关关系。传递函数是BP网络的重要组成部分。
网络运用于认知负荷多维综合评估的设计_认知负荷的评估与变化预测研究

二、BP网络运用于认知负荷多维综合评估的设计

MATLAB是Math Works公司开发的一种计算应用软件。它将数学计算、算法开发、建模与仿真、数据分析及可视化,集成于一个非常友好的环境中。软件还提供了一个现成的神经网络工具箱(Neural Network Toolbox,简称NNbox),使得我们能够方便地设计出复杂的神经网络来实现相关网络的建模。因此,本研究借助于MATLAB工具箱中的工具函数,结合认知负荷测评建模的实际,选择最优化的BP算法和网络结构,建立起用于认知负荷分类的BP网络模型,并对建模结果进行分析。BP网络的具体设计,涉及输入/输出项设计、网络结构设计、网络训练与测试等几个步骤。

(一)输入/输出项设计

BP网络设计中,最关键的一个问题在于如何确定合适的输入项/输出项。输出项神经元个数,即所要区分和识别的认知负荷水平的等级数。在实际的作业情境中,认知负荷水平受任务特征、个体特征及二者交互作用的影响,但在某个特定的时刻或较短时间内,个体特征又具有相对的稳定性,而任务特征是决定认知负荷大小的关键因素[15]。参照国外同类研究,本研究通过改变任务特征(任务复杂性和作业时间限制)来改变认知负荷水平。具体采用两种方法,一种方法是根据前述的实验设计,按照任务复杂性和时间限制的不同,将认知负荷分成6个等级,与此相对应,BP网络设计中输出项神经元个数设置为6个;另一种方法是按照任务复杂性的不同,将认知负荷水平分成3个等级,BP网络设计中输出项神经元个数设置为3个。我们尝试对两种输出项设置分别进行建模研究。

神经网络输入项的确定,实际上就是特征量的提取。对于特征量的选取,主要考虑它是否与认知负荷有比较确定的相关关系。根据前面的分析结果可知,对认知负荷变化敏感的评估指标有心理努力、任务主观难度、注视次数、注视时间、瞳孔直径、主任务反应时和主任务正确率共7个。我们将这7个指标作为网络的输入项。

(二)网络结构设计

网络结构设计包括网络层数、每层中的神经元个数和传递函数、训练函数、学习函数等方面。

网络层数。对于一般的分类和识别问题,一个三层的网络可以实现从输入到输出间任何复杂的非线性映射关系。因此,本研究采用单隐含层的BP网络。隐含层神经元的数目是非常重要的,它的选择结果直接影响到网络的性能好坏。如果隐含层的神经元数量太少,网络就不能够很好地学习,即便可以学习,需要训练的次数也非常多,训练的精度也不高;当隐含层神经元的数目在一个合理的范围内时,增加神经元的个数可以提高网络训练的精度,还可能会降低训练的次数。但是,当超过一定的范围后,如果继续增加神经元的数量,网络训练的时间又会增加,甚至可能引起“过度吻合”问题,反而降低了泛化能力。但对于隐含层神经元数目的选择,目前还没有确定的办法,通常通过尝试的方法来寻找最适合的隐含层神经元数目。在用尝试法时,可用一些确定隐含神经元数的经验公式,如m=2n+1(m为隐含层神经元数,n为输入层神经元数)等。例如,当输入层的神经元个数为7个,则隐含层神经元的个数为15,但隐含层神经元个数是不固定的,我们以15为中心分别选择临近的数字(如m=6、8、10、12、14、15、16、17、18、20、24)分别进行训练,最后根据实际训练结果来确定最后的隐含层神经元个数。

传递函数。传递函数是BP网络的重要组成部分。BP网络的传递函数经常采用S型的对数函数(logsig)、S型的正切函数(tansig)或纯线性函数(purelin)。本研究中,网络的输入项转化为[0,1]数据,因而隐含层神经元的传递函数采用S型的正切函数(tansig),输出层神经元传递函数采用S型的对数函数(logsig),这是由于输出模式采用0-1两分方式,正好满足网络的输出要求。

学习函数。学习函数主要有两种:一种是Learngd,该函数为梯度下降权值/阈值学习函数,它通过神经元的输入和误差,来计算权值或阈值的变化率;另一种是Learngdm,该函数为梯度下降动量学习函数,它利用神经元的输入和误差、权值或阈值的学习速率和动量常数,来计算权值和阈值的变化率。本研究选择Learngdm作为学习函数。

学习速率。训练过程中,学习速率的选取很重要,大了可能导致系统不稳定,小了会导致训练周期过长,收敛慢等误差。通常学习率选取在0.01~0.8之间,可以通过观察误差下降曲线,来判断和确定最终学习速率的大小。根据预测试,我们选择学习速率为0.1。

期望收敛精度。期望收敛精度越小越好,但是也要有合适值。根据预测试分析结果,选择0.008作为期望收敛精度。

训练函数。近年来,为解决BP网络收敛速度慢、训练时间长、容易陷入局部最小区等缺点,人们提出了许多改进算法。改进主要有两类:一类采用启发式技术,如附加动量法、自适应学习速率法;另一类是采用数字优化技术,如共轭梯度法、拟牛顿法、Levenberg-Marquardt(L-M)算法等。在MATLAB的神经网络工具箱中,提供了各种改进BP算法的函数。如traingd(基本的梯度下降法)、traingdm(带有动量项的梯度下降法)、traingdx(带有动量项的自适应学习算法)、trainlm(Levenberg-Marquardt算法)、trainbfg(BFGS,拟牛顿算法)、traincgf(Fletcher-Powell,共轭梯度法)、trainrp(弹性BP法)等。

我们选择测试样本,对以上7种训练函数和不同隐含层神经元的个数设置组合分别进行了学习和训练。其训练次数和收敛精度见表3.1。

从表3.1中可以看出,当采用trainlm训练函数(Levenberg-Marquardt算法),隐含层神经元数为14、18、20时收敛精度达到期望收敛精度值。当采用trainrp训练函数,隐含层神经元数为16、20、22时,收敛精度也达到期望收敛精度值,但收敛速度较trainlm训练函数慢。神经元数越少,意味着网络越简单,计算量越小,需要的测试样本也较少。因此,我们选择trainlm作为BP网络的训练函数,隐含层神经元数设定为14个。

表3.1 不同隐含层神经元个数和训练函数训练结果的比较

img71

续表

img72

注:表中数字为训练次数,括号中数字为收敛精度。训练次数设定为10 000次,期望收敛精度为0.008,学习速率为0.1,*表示到达设定的训练次数前网络收敛。

MATLAB中提供了建立BP网络的专用函数newff。它用来生成BP神经网络并进行初始化,以确定网络层数、每层中的神经元数和传递函数。这个函数有6个输入参数,分别是输入向量的范围、网络结构、各层传递函数、训练函数、学习函数和性能函数。输出参数为所生成的BP神经网络名net。其代码为:

net=newff(PR,[S1,S2,…,SN1],[TF1,TF2,…,TFN1],BTF,BLE,PF)

其中:

PR是一个由每个输入向量的最大最小值构成的R×2矩阵,R为输入神经元数目。

Si是第i层网络的神经元个数,网络共有N1层。

TFi是第i层网络神经元的传递函数,缺省为tansig(双曲正切S型函数)。

BTF是BP训练函数,缺省为trainlm(Levenberg-Marquardt算法)。

BLE是学习函数,缺省为learngdm(梯度下降动量学习函数)。

PF是性能函数,缺省为mse(均方误差函数)。

newff在确定网络结构后会自动调用初始化函数init,用缺省参数来初始化网络中各个权值和阈值,产生一个可训练的前馈网络,即该函数的返回值net。根据上述设计,当输出项神经元个数为6个时,其网络生成函数可表示为:

net=newff(minmax(p),[14,6],{'tansig','logsig'},'trainlm',''learndgm','mse')

(P为输入项,14为隐含层神经元个数,6为输出层神经元个数)

(三)网络训练

网络设计完成后,要应用样本值进行训练。训练时对所有样本正向运行一轮并反向修改权值一次称为一次训练。训练之前,需将所有输入项进行归一化处理,转化成[0,1]区间的数据,输出项用0和1两分数据形式表示。在训练过程中,尽量使每个类别的样本数量大致相等。样本的组织要注意将不同类别的样本交叉输入,或从训练集中随机选择输入样本,要反复使用样本数据,直到确定一个最佳训练次数。

网络训练通过函数train来实现,它根据样本的输入项P、输出项T和预先已设置好的训练函数的参数,对网络进行训练。其MATLAB代码为:

net=train(net,P,T);       %网络训练

net.trainParam.epochs=10000;   %设置最大训练循环次数为10 000次

net.trainParam.goal=0.008;    %设置期望值为0.008

net.trainParam.Ir=0.1;       %设置学习速率为0.1

(四)网络仿真

网络的性能好坏主要看其是否具有很好的泛化能力,而对泛化能力的测试不能用训练样本集的数据进行,而要用测试数据对训练好的模型进行测试,检验模型的准确性。

MATLAB中通过函数sim实现,它根据已训练好的网络,对测试数据进行仿真计算。其设置为:

y=sim(net,P1);         %y为仿真结果,P1为选取测试样本数据

完整的BP网络构建MATLAB代码为:

load-ascii input.dat      %调用输入样本input

load-ascii output.dat      %调用输出样本output

load-ascii test.dat       %调用测试样本test

input=input'           %input进行转置

output=output'          %output进行转置

test=test'            %test进行转置

threshold=[0 1;0 1;0 1;0 1;0 1;0 1;0 1],%设定输入项最大、最小值

net=newff(threshold,[14,6],{'tansig','logsig'},'trainlm','learngdm')

                 %BP网络构建

net=init(net)          %网络初始化

net.trainparam.epochs=10000;  %设置最大训练循环次数为10 000次

net.trainparam.goal=0.008;   %设置期望值为0.008

LP.Ir=0.1;            %设置学习速率为0.1

net=train(net,input,output); %网络训练

y=sim(net,input);        %训练样本仿真

y1=sim(net,test)        %测试样本仿真

本研究共获得有效测试样本为31个,每个被试分别进行了6种实验条件下的试验数据,因而共有186组数据。我们选择其中的22个被试,共132组数据作为训练样本,其余的9个被试,共54组数据作为测试样本。

当输出项神经元个数为6个时,设计的网络经过22次训练后,其性能就达到了要求,其训练均方误曲线如图3.10所示。

img73

图3.10 L-M法的训练均方误曲线

从图3.10中可以看出,网络以很快的速度收敛至所要求的精度。

训练好的网络采用测试样本进行测试,可得到测试负荷值,将测试负荷值转换化成等级数据形式,就可以与测试样本中的输出项值(期望负荷值)进行比较。我们选择期望负荷值与测试负荷值之间的绝对误差、相对误差(取绝对值)和均方误差作为网络模型的性能指标,计算每个被试在每种负荷水平下,测试负荷值与期望负荷值的绝对误差、相对误差绝对值和均方误差,以此求取每种负荷水平下所有被试测试负荷值与期望负荷之间绝对误差、相对误差绝对值和均方误差的均值;同时计算三种负荷条件下绝对误差、相对误差绝对值和均方误差的总均值,其结果见表3.2。

表中绝对误差均值根据公式img74进行计算。Y^i表示第i个样本的测试负荷值,Yi表示第i个样本的期望负荷值,n表示样本数。

相对误差根据公式RE=(Y^i-Yi)/Yi×100%进行计算。相对误差均值根据公式进行计算。由于相对值可能有正有负,为了避免正负相互抵消,故取相对误差的绝对值,然后再进行平均。

均方误差根据公式进行计算,即绝对误差的平方和的均值。

表3.2 基于BP网络建模的多维综合评估结果(认知负荷等级:6种)

img75

注:表中期望负荷值1、2、3、4、5、6分别表示6个等级认知负荷水平。1、2对应任务复杂性为低,时间压力为30秒和16秒;3、4对应任务复杂性为中,时间压力为30秒和16秒;5、6对应任务复杂性为高,时间压力为30秒和16秒。相对误差均值为相对误差取绝对值后的平均,以下同。

img76

从表3.2中可以看出,模型对不同认知负荷水平等级条件下的评估性能有很大的差异:当任务复杂性为高,时间压力为30秒(期望负荷值=5)时,模型的评估性能最好;其次是任务复杂性为中,时间压力为30秒(期望负荷值=3)时,模型总体的平均绝对误差为-0.680,说明测试负荷值总体上较期望负荷值偏小;平均相对误差为27.222%,这说明将认知负荷水平分成6个等级时,构建的BP网络模型其准确率在73%左右。

当输出项神经元个数设置为3个时,根据作业时间压力不同,有作业时间压力为16秒和30秒两种类别。依据同样的程序,可以分别建立两种类别下的BP网络。我们利用相同的测试样本对网络进行测试,其结果见表3.3。

表3.3 基于BP网络建模的多维综合评估结果(认知负荷等级:3种)

img77

从表3.3中可以看出,当输出项神经元个数为3个,即认知负荷水平分成3个等级时,与将认知负荷水平分成6个等级时相似,模型对不同认知负荷等级水平的评估性能也存在差异。此外,无论作业时间是16秒还是30秒,平均绝对误差均为负值,说明测试负荷值相比于期望负荷值总体偏小,但相比于认知负荷水平分成6个等级的测试结果,无论是平均绝对误差、平均相对误差,还是均方误差,均有所减小。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈