孙 鹏,彭敦陆
(上海理工大学 光电信息与计算机工程学院,上海 200093)
开发具有情商的聊天机器人一直是人工智能的一个长期目标[1].近十年来,情感识别领域致力于理解情绪的声学表现,并追求对语音内容更稳健的识别[2].然而,随着此类系统在移动设备上的普及,尤其是微信语音等实时对话软件的普遍应用,用户对此类系统的期望值也有所提高.一个重要的表征就是,人们期待机器能够理解对话中所携带的情感和意图,并能够以一定的同理心做出回应,从而可以改善整个人机交互体验.
然而,想要跟踪对话中的情感动态是一项较大的挑战.因为对话人之间的情感是会被互相影响的,两者之间存在复杂的依赖关系.根据Morris和Keltner的研究表明,对话中的情感动态变化主要由两个因素影响:自我依赖和他人依赖[3].自我依赖也被称作情感惯性,指的是对话过程中自身对自身造成的情感影响.他人依赖则指的是其他人的情感状态也会引起自身的情感状态变化.因此,在对话过程中对话双方更倾向于考虑对方的情感表达从而建立更融洽的对话情境.图1中来自数据集的一段对话很好的印证了自我依赖和他人依赖对情感动态的影响.然而现有的大多数对话系统只考虑到了自身依赖.例如Berter提出的根据当前的会话推断情绪的上下文无关系统.Poria提出的利用长短时记忆网络(LSTM)对上下文语境进行建模等[4].
图1 Pa最终的情感受到了Pb的影响Fig.1 Pa′s final emotion is affected by Pb
本文提出的E2E-CER综合考虑到了上述的两种情感依赖.可将本文的贡献可以总结为以下几点:
1)本文提出了一种基于端到端的对话情感识别模型E2E-CER,以原始数据作为输入,充分考虑了自我依赖和他人依赖对情感检测的影响;
2)本文针对语音和文本的多模态融合,提出了基于注意力机制的融合方法,以不同模态数据对分类结果的贡献值不同,为每种模态输出一个注意力评分,生成融合特征;
3)实验结果表明,该方法在IEMOCAP数据集上表现明显高于基线模型平均水平.
多年以来,情感识别一直是一个跨学科的研究领域[5].这一领域的初步研究主要涉及视觉和听觉处理.随着Alm等人的研究,文本在情感分析中的作用越来越明显[6,7].目前该领域的研究主要是从多模态的角度,分析不同模态对识别结果的影响,以获得更好的识别效果.由于最近在机器智能任务中应用深度学习方法的激增,相关工作进一步证明了对话情感识别率的显著提高.例如Han等人使用深度神经网络对话语层面的情绪进行建模[8].Trigeorgis等人将卷积神经网络与长短时记忆相结合,学习到对原始数据更好的表示[9].Mirsamadi等人使用基于注意力机制的CNN提取帧级特征实现语音情感识别[10].虽然已有的工作对语音情感取得了较好的识别效果,但其建立的模型往往侧重于孤立地对语音段里的语音信息进行建模而忽略了考虑上下文对最终语音情感识别的影响.
因此在本文的研究中,着重考虑上下文中隐含的语境信息,通过注意力机制将上下文信息嵌入到声音表现中,以进一步提高语音对话中的情感识别.例如,Hazarika等人利用一个记忆网络模拟对话双方当前话语和历史话语的相关性实现情感语音识别[11].Ruo等人提出了一种基于框架级声学特征的交互转换模型[12].虽然这些工作都有对语境信息进行建模,然而,这些研究使用的都是手工制作的特征或预处理特征作为输入的深度学习方法.其实深度神经网络应该能够自己提取这些特征,比如Marcel AJ等人采取了一种不同的方法,将原始音频和视频样本提供给网络[13].然而,他们主要是为计算机视觉设计网络,没有进行任何调整或考虑不同模态的融合方式.
相比之下,本文提出的E2E-CER利用了一种新的基于端到端的深度学习方法,将原始数据作为输入,将最终的分类结果作为输出,能够自动地学习特征的最佳表示,不受任何由预处理引起的约束.另外,E2E-CER的不同之处在于融合不同模态特征时引入了一个注意力机制,根据不同模态对最终情感分类的贡献值不同,为不同模态分别输出一个注意力评分.而且本文模型可扩展到多人会话中.
本文提出的E2E-CER可以作为对话语音情感识别的通用框架.网络完整的体系结构可以分为以下几个模块:多模态特征提取,多模态融合,情绪语境建模,多跳记忆网络.如图3所示.
由于本文研究的是二元对话,所以将对话双方分别表示为Pa和Pb,U可以表示为对话双方在一组对话中的有序集合,U={u1,u2,…,uT},T表示一段对话中有几句话.ui(i∈1,2,…,T)代表Pa或者Pb的发言,所以可将U中Pa的发言由集合Ua表示,Ua={ui|ui∈U},其中ui是由Pa说的话,Pb的发言由集合Ub表示,Ub={ui|ui∈U},其中ui是由Pb说的话,且有U=Ua∪Ub.
本文的研究目的在于推测出当前对话中的语句情感.假设在一个时间步长t∈[1,T],本文的模型需要推断的就是t时刻话语的情感,也就是话语ut的情感.Pa和Pb的历史对话分别由Ha和Hb表示,将选取的历史对话上下文窗口设为K,则Ha={ui|i∈[t-K,t-1],ui∈Ua},同理Hb={ui|i∈[t-K,t-1],ui∈Ub},并且由|Ha|+|Hb|≤K,表1可以更清晰的看出当上下文窗口K=4时对话双方的历史对话表示.
表1 当上下文窗口K=4时,历史会话集合Table 1 Historical session collection when context window K=4
对于输入文本,先进行清洗和预处理,利用Tokenizer方法对文本分词,生成单词索引对,利用预先在谷歌新闻数据训练好的300维词嵌入[14].这使我们能够考虑到更多的上下文信息,然后进行匹配得到嵌入矩阵输入到CNN中.CNN的结构受到Kim的启发[15].卷积层包括大小为3、4和5的过滤器,每个过滤器有50个特征图,再执行最大池化,滑动窗口大小为2×2.最后,利用由50个神经元组成的全连接层,激活函数为RELU,将激活值作为输出文本对话的特征,生成50维特征向量.
而音频通道关注的更多是语音中的声学和韵律信息,即非语言信息.端到端的方法直接采用语音原始波形作为输入,用一维向量表示,而不是常用的光谱图或手工调整的特征,因为CNN可以直接从音频中自动提取相关特征[16].本文为了计算速度,将音频波形降采样到8kHz并标准化均值为0和方差为1.选取32000个采样点,则输入向量长度为32000,设置第一个卷积层感受野为80,卷积步长为4,过滤器为256,然后通过一个池化层,池化窗口大小为4.第二个卷积层设感受野为3,过滤器为100,卷积步长为1,再通过第二个池化层,池化窗口为4,输出向量维度为(500,256),最后使用全局平均池化层平均256个特征映射,最终得到一个256维向量.
同一个对象有不同的表现形式是很自然的事情.但是由于不同模态的数据大小和表示方式不统一,很难直接集成.所以如何通过融合方法揭示模态之间的语义信息是很关键的问题.注意力机制能够将注意力集中在与分类结果最相关的部分,从而提高深度神经网络的性能[17].但并不是所有的模态在情绪分类中都是同等重要的.以往的关于语音会话情绪的研究,对模态之间的融合只是简单的拼接,忽略了不同模态对情绪分类结果影响的大小.所以为了优先考虑重要的模态,本文引入了一个注意力网络,将音频和文本作为输入,并为每个模态输出一个注意力评分.
在将文本和语音两种模态输入到注意力网络之前,通过一个全连接层将维数均衡到d=300,V=[Va,Vt].其中Va表示语音特征,Vt表示文本特征,V∈Rd×2.如图2所示.
图2 文本与语音特征处理过程Fig.2 Text and speech feature processing
注意力权重向量和融合后的多模态特征向量F计算方法如下:
PF=tanh(WF.V)
(1)
(2)
(3)
为了对当前话语ui进行分类,需要先获取到对话双方的历史对话记录Ha和Hb,对话双方分别表示为Pa和Pb,同样用多模态特征向量表示Rd,在对话部分建模的时候,分成三个部分,首先是将对话双方的历史对话利用GRU建模到记忆单元中,也就提供了会话的上下文信息,也称作语境建模.下一步为了考虑情感在对话过程中的传递性以及对话者之间情感的依赖性,引入了一个全局GRU,用来对全局的情绪状态进行建模.然后利用注意力机制将需要预测的当前话语与记忆单元匹配,生成一个注意力向量P∈RK.最后利用一个多跳机制,不断迭代计算,根据注意力机制过滤出与话语ui相关的内容,每一跳的输出都会成为下一跳的输入.E2E-CER模型如图3所示.
图3 E2E-CER模型Fig.3 E2E-CER model
3.4.1 对话人GRU
本模块主要处理会话双方的历史对话Ha和Hb,利用GRU针对历史对话建模,尝试从中模拟出说话者的情感惯性.对于每句历史对话ui GRU是Cho等人(2014)引入的门控循环单元,在时间步j,GRU通过计算个门单元重置门rj和更新门zj以及之前的状态sj-1可得到隐层状态sj.计算公式如下所示: zj=σ(Vzxj+Wzsj-1+bz) (4) rj=σ(Vrxj+Wrsj-1+br) (5) vj=tanh(Vrxj+Wh(sj-1⊗rj)+bh) (6) sj=(1-zj)⊗vj+zj⊗sj-1 (7) 上式中,输入xj=ui,sj=hj. 3.4.2 全局GRU 为了考虑情感在对话过程中的传递性和对话者之间情感的依赖性,引入了一个全局GRU对全局的情感状态进行建模,接受对话历史纪录GRU建模的输出作为输入,并在每个时间步上递归更新,将每个时间步的输出存储到一个记忆单元中.全局GRU的状态gk同样由当前输入和之前的状态计算得到,对于任意k∈[1,K],当前的输入会话为u(t-K+k-1),之前的状态为gk-1,则全局状态gk可由下式计算得: (8) 由全局GRU建模生成的记忆序列可表示为M=[g1,g2,…,gk]∈Rd×K.利用注意力机制从记忆库中读取记忆,将每个记忆单元mk∈M和当前测试语句进行匹配,生成一个注意力向量Vatt∈RK,标准化后的评分代表着记忆单元和测试语句的相关性.计算过程如下: Vatt=softmax((M)Tut) (9) 上式中softmax(xi)=exi/∑jexj.式(9)得到的注意力评分可以计算出记忆单元的加权表示. (10) 最后通过将测试话语和记忆单元的加权表示合并进行更新: (11) 在本文中,还应用到了一个多跳机制,将记忆单元M作为输入重新生成序列M′,公式表示为M′=GRU(M),其中GRU的各项参数是互相共享的.则经过R跳后,测试会话表示为: (12) (13) 式(13)中,Wo为转换矩阵,bo为偏置.为了更好的分类,一般将O的维数设定等于类C的数目,O∈C.利用分类交叉熵作为损失函数. (14) 在林业发展的过程中,林业技术推广体系是不完善的,这严重阻碍了林业的发展。如果没有制度上的支持,林业工作将不能有序的开展,严重阻碍了林业技术的推广。此外,有一部分的领导人并重视林业技术的推广,而且还有一部分林业户并没有认识到林业技术推广的重要性,这将不利于林业工作的发展。 记忆网络可以用如下算法1概括: 算法1.多跳记忆网络算法 输入:预测话语,历史记忆,上下文窗口,跳数 输出:最后话语的情感分类结果 1. (ui,Ha,Hb,K,R)/*预测ui的情感*/ 3.forrin[1,R]do/*多跳机制*/ 4.M(r)←M(r-1) 本文实验所选用的数据集为IEMOCAP,这是一个由多段二元对话组成的多模态数据集,包括10个对话人(5男5女),分成了五组,每组在多个不同的对话场景进行对话并为每段语句都被打上情感标签.本文为了能和之前的语音会话识别框架做比较,取愤怒、快乐、悲伤、中立、兴奋、沮丧六类做实验.使用1-4组的对话作为训练集,第5组的对话作为测试集.表2为具体数据集划分. 表2 实验数据集分割Table 2 Experimental data set segmentation 本文采用20%的训练集作为超参调优的验证集.使用Adam优化器优化参数[18].初始学习率设为0.001. 使用准确率P(Precision)、召回率R(Recall)、F1值(F1-Score)以及微平均对模型做出评估,微平均的计算公式如下所示[19]: (15) (16) (17) 式(17)i表示分类情绪,gold(emotion=i)表示样本标注情绪为i的数目,sys_correct(emotion=i)表示模型预测结果与标注结果一致的数目,sys_proposed(emotion=i)表示模型预测情绪为i的数目. 本文一共进行了4组实验,第1组实验将本文提出的端到端模型与非端到端模型进行对比.第2组实验将本文提出的模型与基线模型做比较.第3组实验验证了多模态特征的重要性.第4组实验反应了两个重要的超参数K(上下文窗口大小),R(跳数)取值不同对实验结果的影响. 实验1.E2E-CER模型与非端到端模型的比较 为了验证端到端方法的有效性,同NAACL2018任务Emotion Recognition in Conversation结果做对比,该任务模型输入为TextCNN提取的文本特征向量和OpenSmile提取的音频特征向量.从表3的结果数据可以看出,本文提出的E2E-CER模型性能较好,相比表4非端到端模型的实验结果,其MicF1提高了3.8%. 表3 E2E-CER模型实验结果Table 3 E2E-CER model experiment results 表4 对比模型实验结果Table 4 Compare the results of model experiments 图4可以更清晰的看出对比模型对各个类F1值的比较结果.但是也可以发现,在对情绪分类时,唯独对happy这个类的分类效果表现不够理想.从数据集来说,数据分布不平衡可能是导致这种现象的主要原因. 图4 F1值对比图Fig.4 F1 comparative diagram 实验2.与基线模型比较 本文将所提出的模型与当前对话情绪识别领域的基线模型进行了比较,横轴为情绪分类,纵轴表示F1值.由图5可知,本文提出的E2E-CER模型在各类情绪的F1值均明显高于平均水平,与NAACL2018对话情感识别任务中第1名DialogueRNN的分数接近,比第2名ICON分数略高,比第3名CMN的F1值提高了7.3%,验证了本文方法的有效性.其中添加了注意力模块的bc-LSTM模型表现相比bc-LSTM也有所提升,再一次说明了注意力机制在对话情感识别中的重要性,可以很好的模拟出上下文语境信息. 图5 对比基线模型实验结果Fig.5 Compare baseline model results 实验3.不同模态特征对模型性能的影响 从表5可以看出文本加音频特征的各项性能都比单模态特征表现要好.而对于单模态特征,可以看出文本特征的表现比音频特征要好,可能是因为相对于视听资源,文本的噪声信号更少,因此在多模态方法中提供了更好的特征.也说明了文本特征在多模态方法中的重要性.在融合方法方面,拼接是最常用的融合方法之一,但可以从表5中看出,加入了注意力机制的融合相比拼接融合提高了1.7%,说明采用注意力机制进行融合可以进一步提高模型的性能. 表5 不同模态及融合机制对MicF1值影响Table 5 Influence of different modes and fusion mechanism on the experimental MicF1 value 实验4.超参数值对模型性能的影响 从图6可以看出本文提出的模型在超参数K(上下文窗口)和R(跳数)的不同值下的性能趋势.图6(a)中,可以看出当R取值较小时准确率明显提高,体现了多跳机制在整个模型中的重要性.然而随着R值的进一步增加,每增加一跳都会产生一组新的参数,从而导致模型总参数的增加,使模型更容易发生过拟合,本文选取跳数为3时模型表现最好.上下文窗口大小的取值也很重要.随着K值不断增加,有更多的历史话语参与模型建模作为历史记忆,图6(b)中可以观察到当K值取40时,模型效果最好,但如果历史话语过多同样会导致模型性能饱和,从而导致模型的性能下降. 图6 R(跳数)和K(上下文窗口大小)值变化时模型的性能趋势Fig.6 Trends of the model as R(number of hops)and K(context window size)values change 本文提出的端到端对话情感分类模型E2E-CER,利用端到端的方法对原始文本和原始波形进行处理,并在多模态融合过程中运用到注意力机制,考虑到了不同模态特征对分类结果的影响大小,对于对话双方的情感依赖性.利用一个记忆网络对其进行模拟,并通过多组对比实验,证明了本文方法的有效性. 对多模态对话情感分类的研究仍然可待拓展,例如针对主题的特定说话人的情感检测,多元对话,对话的讽刺性检测等都可以成为新的研究方向.4 实 验
4.1 实验参数
4.2 实验结果与分析
5 总结与展望