4 基于BP神经网络的情感模型及实验结果(The results of theexperiment)
4.1 基于BP神经网络模型的建立
4.1.1 神经网络输入和输出的确定
考虑硬件条件提供的参数有限,不能通过生理信号和面部表情进行情感分析[10],只能检测用户的抚摸力度、抚摸位置、抚摸时间,本文采用二维情绪环状模式[18],如图 9所示。
情绪被划分为愉快度和情感强度两个维度,其中愉快度分为愉快和不愉快,强度分为中强度和高强度。本文提取四个区别明显的情感,即快乐、轻松、悲观、愤怒[17],为了保证实验的可实施性,本文将悲观情绪改为接近的悲伤情绪,让具有上述情绪的人抚摸机器人,并采集训练数据,进行人工标定。
可见,神经网络输入为13个传感器的数字量及其被抚摸时长;神经网络输出为四种情绪,人工标定为快乐(0,0,1,0)、轻松(0,0,1,0)、悲伤(0,0,1,0)、愤怒(0, 0,1,0)。神经网络训练输入和训练输出示例如表3所示。
图9 二维情绪环状模式
Fig.9 Two-Dimensional emotional ring model
表3 神经网络训练输入和训练输出示例
Tab.3 ANN training input and output examples
续表
4.1.2 神经网络的搭建
本实验的神经网络输出为四种情感模型,为多分类问题,采用softmax回归,可以在识别某一分类时做出预测。损失函数采用交叉熵函数[13],如公式(1)所示。在具体实验时,神经网络的输入为26个节点,输出为4个节点,隐藏层神经元的个数为 5 个,学习率为0.2。图10为本实验的神经网络结构图。
图10 神经网络结构图
Fig.10 Structural Chart of Neural Network
4.1.3 实验过程
BP 神经网络情感模型的实验过程主要分为五个部分[14]。第一部分是数据的读入。将已经收集好的数据按照训练输入、训练输出、预测输入、预测输出存放在文本文档中,然后再存到对应的数组中。第二部分是数据的归一化和权值的初始化。使用公式(2)进行数据的归一化,并对所有权值进行初始化,保证它们都在[0,1]。第三部分是进行神经网络的训练。对所有样本正向计算网络的输出,计算网络的总误差,然后再根据总误差反向计算修正权值,只有当训练数据被训练过20000次和总误差小于等于0.1时才可进入预测数据的检测,根据训练数据得到的权值计算预测数据的误差;只有当预测数据的平均误差小于等于0.12时,神经网络的训练才算结束;否则一直循环上述步骤,直到满足条件为止。第四部分是权值的输出,将训练的权值保存在指定的文本文档中。第五部分是将程序移植到 stm32 芯片上,进行实时的情感检测。
InpointData为输入数据,InpointDataMIN为输入多样本数据中同类型输入数据的最小值,InpointDataMAX为输入多样本数据中同类型输入数据的最大值。
4.2 实验结果
4.2.1 神经网络训练结果
损失函数输出随训练次数增加的下降曲线如图11所示。从图11中可以看出,经过多次训练,损失函数逐渐收敛,并趋向于0。
图11 损失函数下降曲线
Fig.11 Loss function descent curve
4.2.2 情绪分类实验检测结果
情绪分类实验检测结果见表 4。从表 4中可以看出准确率达 60%以上,以下对准确率不高的原因进行分析。
(1)硬件条件的局限性。应变片太小,感知力度存在误差;应变片的数量太少,部分位置检测不到。
(2)神经网络没有训练出最优解。超参数的设定需要根据神经网络反复训练来选择合适的,由于最后要将神经网络嵌入 stm32芯片中,保证情感的实时性,神经网络的规模不能太大,所以隐藏层的个数只有一层不是最优的。学习率在默认情况下是很难找到最优的,需要进行反复多次的尝试。隐藏层神经元的个数不是选择最优的,太少的神经元数量没有能力来表达任务,太多的神经元会导致训练缓慢。
(3)训练数据不够多。训练数据较少,训练过程发生过拟合的情况。
(4)抚摸动作与情感之间的对应关系还没有相关的科学证明。
表4 情绪分类实验检测结果
Tab.4 Test results of emotional classificationexperiment
续表