基于情感变量的二阶段对话生成模型

2022-06-21 07:47冯广敬刘婷婷王媛怡柴艳杰
中文信息学报 2022年5期
关键词:语句语义变量

冯广敬, 刘 箴, 刘婷婷, 许 根, 庄 寅, 王媛怡, 柴艳杰

(1.宁波大学 信息科学与工程学院,浙江 宁波 315211;2.宁波大学科学技术学院 信息工程学院,浙江 慈溪 315300;3.中国科学院宁波材料技术与工程研究所 先进制造技术研究所,浙江 宁波 315201)

0 引言

对话系统作为自然语言处理任务中的一大难题,受到了工业界和学术界的广泛关注。早期研究致力于提取高质量的语义信息来生成逻辑通顺的对话响应,这虽然保证了响应的语义连贯性,但是对话响应质量不高,不具备交互性和多样性。近几年,为生成多样化的响应,研究者们尝试从主题[1-2]、外部知识库[3-4]以及个性化特征[5-6]等不同的角度进行了探索。也有人发现情感在对话过程中发挥着重要的作用,融合了情感因素的对话系统能够明显降低对话中断的概率并提高用户的满意度[7]。社会心理学研究表明,“共情”是让对话系统走向更加人性化的关键一步,其能够在社交活动中提高对话系统的情感感知能力[8]。将情感信息融入对话系统有助于实现更好的人机交互,增加社会联系感。

近几年提出的情感对话生成模型大部分采用类似的方法,即在典型的Seq2Seq模型[9]基础上增加了情感处理模块来编码情感信息。Seq2Seq模型虽然能用于生成任务,但是其受限于语料库的大小和目标函数,极易生成逻辑性有一定问题的响应。语料库的大小决定了模型在语义理解方面的能力;目标函数容易限制模型生成单调、趋于安全性的响应。在情感处理模块的处理中,通常直接设定响应的情感类别,并将情感类别用向量进行表征[10],这虽然在一定程度上确保了生成响应的情感一致性,但是也容易让模型倾向于生成同类情绪中单调、重复的回答,从而降低了响应的交互性和多样性。

针对上述问题,本文提出了一个基于情感变量的二阶段对话生成模型,将整个对话生成过程划分为两个阶段。首先,为了确保生成逻辑正确的响应,本文在DialoGPT[11]预训练模型基础上利用多轮对话数据集进行微调以获得第一阶段的响应;然后对上下文进行情感建模,在主倾向情感的基础上混合了其他情绪,并在第二阶段用获得的情感变量对第一阶段的响应进行重写,最终获得逻辑正确且多样性的响应。本文的主要贡献为以下三个部分:

(1) 提出了二阶段的对话生成模型,在确保生成逻辑通顺的对话响应的基础上利用情感变量对响应进行重写,这既确保了语义逻辑的正确性,也加强了生成响应的多样性。

(2) 在情感信息编码中,本文提出将主情感变量和通过采样得到的混合情感变量进行融合作为全局情感变量,在确保响应的情感一致性的基础上增加了多样性。

(3) 采用自动评价方法和人工评价方法对多个模型进行对比分析,实验结果表明,本文提出的模型优于其他模型,生成的响应具有高质量、多样性的特点。

1 相关工作

现有的情感对话生成的研究工作大多以对话数据为驱动,基于生成式对话模型生成情感对话响应。根据情感信息引入方法的不同,情感对话模型可以划分为指定响应情感的生成和不指定响应情感的生成。

指定响应情感的生成是根据事先设定好的情感类别来产生相应的响应语句。Zhou 等[10]首次尝试将离散情绪信息融入到生成对话模型中。他们提出的ECM模型(Emotional Chatting Machine)是在传统的Seq2Seq模型基础上引入了情感处理模块。情感处理模块用来处理情绪信息,让响应语句中包含的情绪信息随着时间衰减。此后,ECM模型作为情感对话生成模型的基础,获得了不同的进阶版本。例如,Shen 和 Feng[12]引入了对偶和课程学习来强化模型。他们认为根据指定的情绪进行响应会造成上下文情感不一致的情况,因此需要将情感一致性问题考虑在内。Song 等[13]认为情绪的表达方式有两种,一种是通过情感词直接表达自己的情绪;另一种是隐含在上下文语境中内敛地表达情绪。基于此,他们在序列到序列模型(Sequence-to-Sequence,Seq2Seq)的基础上,提出了词典注意力机制的方法,基于词典赋予现实情感词更高的权重,并将上下文信息加入到解码阶段得到隐式情绪状态。最后输出的词汇选取自情感词典或者语料库词典。Ma等[14]认为对话过程中情感状态会有一定程度的转移,他们增加了一个控制单元来控制情感状态的转移过程。

不指定响应情感的生成认为响应所需的情感信息已经包含在了上文语境中。相比于指定情感的生成,不指定响应情感的生成所蕴含的情感更具多样性。Li等[15]尝试捕捉人类情感的细微差别,通过引入一个利用用户反馈的交互式学习框架,提出了EmpDG 对话生成模型。整个模型一共分为两部分,分别是基于Tranformer模型[16]的端到端情感对话生成器和基于情感以及语义判断的交互判别器。Majumder[17]等认为对话中的共情过程通常在不同程度上模仿用户的情绪,这取决于它的积极或消极内容。他们引入了一种新的共情生成方法,该方法对上下文和情绪进行编码,并使用情绪随机采样和情绪模仿来生成对积极或消极陈述适当和共情的响应。Nie等[18]提出了一个带有自适应解码器的多模式对话系统,先理解给定的多模态上下文的意图,然后采用自适应解码器来生成所需的响应。

2 DialoGPT模型

DialoGPT[11]是以GPT-2[19]模型为基础利用单轮对话数据集进行的再训练。本文实验用的是最小规模的DialoGPT预训练模型。GPT-2是OpenAI团队在GPT模型[20]的基础上获得的改进版,模型的训练分为两个阶段: 无监督的语言模型预训练和无监督的下游任务训练。GPT-2模型的框架同GPT模型基本一致,都是以Transformer模型中的解码器为基础架构,但是增加了叠加的解码器的层数,导致参数量提升至了15亿。

GPT-2将单向Transformer中的解码器模块作为块(block),并以块为单位进行堆叠,并在第一阶段采用八百万的高质量文档进行训练以增强语言模型的泛化能力。Transformer中的解码器是形成GPT-2模型的主要架构,包含遮掩自注意力机制、层归一化和前馈神经网络,其内部结构如图1所示。

图1 GPT-2模型的内部结构

3 基于情感变量的二阶段对话生成模型

3.1 问题定义

一段多轮对话由两个会话者所说的M条语句组成。本文假设在对话过程中包含上下文语境和情感语境,其中上下文语境包括句子序列CO,每条语句Ui;情感语境包括情感标签E。给定CO和E,本文模型的目标是最大化概率P(Y|CO,E)以生成一个长度为N的响应Y={y1,y2,…,yN}。

3.2 模型结构

本文提出的二阶段对话生成模型主要用于生成

语义正确且蕴含情绪的多样性响应。整个模型框架如图2所示,主要包括两个阶段,分别是第一阶段基于语义信息的响应生成和第二阶段基于情感信息的语句重写。第一阶段使用DialoGPT模型[11]作为预训练模型,后用多轮对话数据集进行微调以生成逻辑通顺且上下文一致的响应,并作为第二阶段重写任务的输入;然后对上下文进行情感编码,采用双流架构分别提取主情感变量和混合情感变量,最后通过FC(全连接层)将两类信息融合获得全局情感变量。第二阶段的语句重写模型中,本文先将第一阶段的语义响应和全局情感变量进行融合来提高特征信息的丰富性多样性,最后将其输入到Transformer的解码器模块中解码生成多样性的响应。

图2 二阶段对话生成模型框架图

3.2.1 语义信息编码

GPT-2自发布后,依赖于庞大的预训练数据集和参数量,其在多个自然语言处理任务中均获得了不错的效果。虽然GPT-2取得了不错的效果,但它的本质是一个单向语言模型,而对话生成是一个下游任务,因此本文采用基于GPT-2模型并用单轮对话数据集来再次训练的DialoGPT预训练模型。在将上下文文本输入到DialoGPT模型以生成响应前,需要先对句子序列进行数据预处理操作。先利用BPE(Byte Pair Encoder)算法将上下文中的每条语句拆分为子词序列,接着将若干条上下文语句和目标语句拼接在一起形成单条语句输入到模型中,并在上下文语句和目标语句之间使用了特殊字符“”来加以区分。最后,将语句中的每个词汇映射到对应的数字。鉴于模型的巨大参数量,DialoGPT分别对不同的GPT-2预训练模型进行了再训练,并得到对应的几大预训练模型。本文选用12层Transformer解码器模块堆叠而成的GPT-2 Small作为主要模型,然后用Empathetic Dialogues数据集对整个模型进行微调,以生成多轮对话下的响应。

3.2.2 上下文编码

在获取情感信息前,需要对上下文进行建模编码。本文采用Transformer模型中的编码器来对上下文信息进行建模。

(1)

3.2.3 情感信息编码

在获得了全局上下文语境信息S后,本文对其做进一步处理以获得情感变量并用于后续的语句重写操作。情感信息的提取分为两类,分别是主情感信息和混合情感信息: 主情感信息的提取用于确保重写后语句中的情感和上下文情感是一致的;混合情感信息用来加强情感信息的多样性。

(1) 主情感信息的提取

提取主情感信息是为了确保上下文语句中的情感一致性。本文期望生成的情感趋向于某一类去优化,因此尝试在基于上下文语境信息的基础上训练一个情感分类器。将全局上下文语境信息S输入到全连接层中并用softmax函数获得情绪分布E′,并训练模型,如式(2)、式(3)所示。

其中,We∈R768×32为可训练参数,e*为真实情感类别标签。

(2) 混合情感信息的提取

混合情绪是生活中常见的情绪状态,适当地混合情绪有助于个体改善心理症状获得幸福感[21],然而现有的绝大部分情感对话生成模型都是基于单一情感类别。本文期望获得混合情感,它是情感类别的分布,不会特别趋向于某一类的情感。受MIME模型[17]和Serban[22]的启发,本文利用变分自编码器的思想对上下文语境进行情感建模来获得情感类别的分布。本文提出一个假设: 混合情感的分布是影响对话生成的隐变量,且在一段对话中情感变量具有一致性的特点。因此,本文从Pθ(zet|CO)采样得到了情感类别的非线性分布zet,然后将分布zet输入到一个以softmax为激活函数的全连接层中获得归一化分布det∈R32:

本文将归一化分布det输入至全连接层获得每种情感类别的表示,如式(7)所示。

Eeet=dWe

(7)

其中,We∈R768×32是可训练参数,其实际意义是情感向量。

分布Pθ(zet|CO)的获取具体过程如式(8)~式(12)所示。

为了确保后续生成的语句能在情感一致性的基础上生成多样性的情感响应,需要将上述两类情感变量进行融合以获得全局情感信息,而变量的简单拼接并不能将信息进行真正意义上的融合。因此,本文先将两类情感进行拼接操作,然后将其输入到以sigmoid为激活函数的全连接层中,最后将得到的输出与Eall进行点乘后输入到全连接层以形成最后的全局情感信息,如式(15)~式(17)所示。

其中,We∈R768×32是可训练参数,其实际意义是情感向量;且Wf∈R(768+768)×768,Wfinal∈R(768+768)*(768+768)。

3.2.4 二阶段响应重写

本文在第二阶段语句重写过程中采用Transformer模型。本文将第一阶段生成的输出Res以及全局情感变量efinal作为第二阶段重写模型的输入。为了更好地融合语义信息和情感信息,本文在对这两类信息进行拼接的基础上利用Transformer模型中的编码器对信息进行编码融合,而后将融合后的信息输入到Transformer的解码器中,利用Mask遮住一句话中未生成的词语,根据前面的词语来生成下一个词语,最后生成完整的响应语句,如式(18)~式(20)所示。

其中,Wo∈R768×50 265,50 265是词向量的词表大小。

4 实验分析

4.1 数据集

本文使用了共情对话数据集EmpatheticDialogues[23]来生成多样性情感响应,并采用不同的评价标准对模型进行综合评价。Empathetic Dialogues是纯文本下的多轮对话数据集,主要用于情感对话生成任务,其中每段对话包含三部分,分别是当前对话的情景描述、每条语句对应的情绪以及对话内容。每个对话都基于一种特定的情景,标注的情绪类型共32种,其中包含积极情绪13种和消极情绪19种。数据集中共包含24 850个对话,数据集详情如表1所示。

表1 Empathetic Dialogues数据集详情

本文使用了该数据集作者定义的8:1:1的训练/验证/测试分割。每个样本都包含一段上下文(完整对话的摘录)、对话的情感标签和对上下文中最后一句话语的响应回答。32种情绪类别大致均匀地分布在数据集上均匀分布在训练、验证及测试集上。

4.2 实验设置

训练模型时的硬件配置、模型的各种参数设计以及模型训练的方法都会对实验结果产生重要影响,因此针对这三部分内容,本文进行相关信息的说明。

4.2.1 硬件配置

第一阶段的DialoGPT模型的微调在4块GeForce GTX 2080Ti的GPU上运行;第二阶段的重写过程在1块GeForce GTX 2080Ti的GPU上进行训练。

4.2.2 参数设置

本文在第一阶段的训练过程中,采用了warmup(step=16 000,warmup_proportion=0.1)的学习率更新策略,优化器采用Adam,词向量经由DialoGPT训练生成;在第二阶段的训练中,采用noam的学习率更新策略(初始学习率为0,betas=(0.9, 0.98), eps=1e-9),优化器采用Adam。词向量与DialoGPT词向量矩阵共享,不参与训练。不同阶段模型的具体参数设置如表2所示。

表2 不同阶段模型的参数设置

4.2.3 模型训练

在训练过程中,两个不同阶段下的模型是各自训练的。

第一阶段下本文以DialoGPT提供的预训练模型为基础,利用EmpatheticDialogues语料库进行微调获得语义逻辑正确的生成响应;在第二阶段重写过程中,去掉DialoGPT中最后的词分类层,以隐藏层输出作为重写阶段中语义信息。需要注意的是,第二阶段中的情绪提取中的词向量矩阵共享第一阶段中DialoGPT训练好的词向量矩阵,另外,在重写阶段中最后生成单词的前馈网络层中的参数WO和词向量矩阵共享。在训练时,固定DialoGPT的参数(包括词向量矩阵),然后训练整个网络。

4.3 评价标准

本文用两类评价方法对模型进行评价,分别是自动评价和人工评价两类。

(1)自动评价: BLEU[24](Bi-Lingual Evaluation Understudy)可用于评估生成的句子与实际句子之间的差异。同时,为了评估模型生成语句的多样性,本文采用Distinct-N[25]这个度量标准,Distinct-N代表语句中词汇的多样性。虽然自动评价能在一定程度上反映生成语句的质量,但是在开放领域下标准的对话响应并非是唯一的[26]。本文将自动评估的结果作为一种参考,同时提出了人工评价的方法。

(2)人工评价: 首先从测试集对应的每个情感类别中随机抽取两条语句,然后分别用不同的模型生成对话。接着,由20个评价员对生成的响应进行打分,打分的范围为1~5,其中1表示最差,5表示最好。然后,在其于三类指标共情、相关性和流畅性的基础上[27],对模型进行了评估。其中,流畅性用于衡量生成语句的语法正确性和可读性;相关性用于衡量生成语句是否上下文相关;共情用于衡量生成语句所表达的情感是否包含了对说话者的理解。

4.4 Baseline模型

为了验证模型的有效性,本文提出的模型与以下五类模型进行对比分析。

(1)Transformer[16]: 利用Transformer模型中的编码器和解码器实现端到端生成模型,模型的训练采用极大似然估计。

(2)DialoGPTPretrained[11]: 利用单轮对话数据集在GPT-2预训练模型的基础上进行再训练。本文使用DialoGPT Small模型。

(3)DialoGPTFine-Tuned[11]: 在DialoGPT预训练模型基础上利用多轮对话数据集进行微调。本文使用DialoGPT Small模型并用Empathetic Dialogues语料库进行微调。

(4)MIME[17]: 基于Transformer框架下的对话生成模型,但是对情感变量进行了处理,将情感变量看作是积极情感和消极情感的融合。

(5)EmpDG[15]: 整个模型一共分为两部分,分别是基于Tranformer模型的端到端情感对话生成器和基于情感以及语义判断的交互判别器。

4.5 基于语义信息的分析

在语义分析中,本文采用自动评价中的指标来对比分析生成语句的多样性和相似性,结果如表3所示。

表3 不同模型下的语义分析结果

从表3可以发现,DialoGPT Pretrained 模型生成的响应在多样性方面要高于其他模型,但是观察生成响应的实例可以发现DialoGPT Pretrained生成的响应与原语句间的相似性很低。这说明一味地追求语句多样性可能会导致前后关联性变差;而本文在微调后的DiaoGPT模型的基础上融入情感变量,生成的响应在提高了一致性的基础上同时也保证了多样性,这说明情感信息也是语义信息中重要的一部分,增加情感信息可以提高模型对语言的理解能力。对比情感对话生成模型EmpDG、MIME,可以发现在多样性方面本文提出的模型是高于其他两类模型的;在相似度方面,EmpDG模型利用生成对抗网络会向目标响应进行靠拢,可以得到最高的相似度;而MIME模型和本文提出的模型为了加强生成响应的多样性,相似性会有所下降。

4.6 基于情感信息的分析

情感作为一种主观变量,难以用具体的计算方式评判其好坏。为了验证生成响应中情感信息的有效性,本文采取人工评价的方法,实验结果如表4所示。从表4中的人工评价结果中可以看出: DialoGPT虽然在语义的分析上效果较好,但是生成的响应所包含的情感色彩是最差的;EmpDG模型主要针对语义信息生成流畅性和相关性的响应;而本文提出的模型和MIME模型均在相关性上未取得很好的效果,增加情感多样性变量会大大降低情感的相关性,但是因为融合了主情感变量,本文模型的相关性比MIME模型更好些,同时本文模型的共情性和流畅性是要好于其他模型。

表4 不同模型下的情感分析结果

为了验证主情感变量、混合情感变量对于生成高质量语句的重要性,以及模型分二阶段进行训练的有效性,本文进行了消融实验,实验结果如表5所示。

表5 情感变量消融实验结果

在语义信息的分析上,本文发现基于主情感变量的生成响应逻辑性要稍微优于基于混合情感变量的生成,但是与原语句的相似性相对较差。而本文的模型在一定程度上结合了混合情感变量和主情感变量的特点,有效改善了生成响应的语义相关性,使其更接近于真实的对话;在情感信息的分析上,单纯靠混合情感变量进行语句重写可能会导致响应的生成在相关性上有一定程度的偏离,但是能在一定程度上增加语句的流畅性。主情感变量的语句重写在相关性和共情性上有较好的效果,更接近于真实响应。而本文模型在混合情感变量的基础上融合了主情感变量,能让生成的响应在有较好流畅性的基础上向真实响应靠拢,提高了响应的共情性和相关性,这一点从指标数据中能看出,在融合了两类情感信息之后能更加有效地提高生成响应的质量。

本文模型的主情绪分类{top-1,top-5}正确率为{31.6%,73.2%},相对于MIME的主情绪{top-1,top-5}正确率{34%,77%}低了{2.4%,3.8%}个点,这可能是由于我们同时在语义信息中学习主情绪和混合情绪,多种任务同时优化影响了主情绪分类器的正确率。

4.7 对话生成结果分析

本文从生成结果中抽取了一些实例,具体结果如表6所示。在第一个实例中情感标签为孤独,对于EmpDG、MIME、只包含主情绪和只包含混合情绪的模型来说,都生成相对“安全”的响应,即“i am sorry to hear that”。而对于主情绪和混合情绪相融合的模型来说,生成的响应不仅与用户的情绪保持着一致性,且混入了些许正面情绪,在共情的同时,也表达了“i hope you are ok”的祝福。对于第二个实例,“当最好的朋友去世时很悲伤”的问句,所有模型的相应都表达了悲伤,对于我们提出的模型,这时候主情绪主导了响应的生成,响应相对也偏“悲痛”情绪。

表6 不同模型下生成结果对比

在第三个实例中,情感标签为“乐意”。对于问句“我痴迷于为任何事情做好准备”,EmpDG的回答相对正常,即“你最痴迷的是什么”,MIME的响应这时相关性较低,对于我们只包含主情绪的模型中,生成的响应相对积极,而对于主情绪和混合情绪融合的模型,则带入了部分消极情绪,“我并不喜欢这样”。对于实例四来说,所有的响应与上下文情绪都相对一致,相对正面。

通过以上几个实例,可以发现通过融合情感,可以一定程度上提高对话的多样性。在主情感条件下融合混合情感,能够让响应在不特别偏离主情绪的情况下,可能引入一定其他情绪,增加了响应生成的多样性。

5 结论与展望

本文针对现有情感对话生成模型中存在的生成语句重复枯燥、前后关联性不强等缺点,提出了一种基于情感变量的二阶段对话生成模型。该模型将情感对话生成转变成一个二阶段任务,第一阶段在生成逻辑通顺响应的基础上融合情感变量进行重写来生成最终的高质量响应;第二阶段通过对上下文建模来获得主情感变量和混合情感变量以改善生成响应前后的情感不一致、重复枯燥等问题。

实验结果表明,本文提出的模型在情感共情性和流畅性上均有很好的效果。相比于其他模型,本文模型既保证响应的逻辑通顺性又加强多样性,更符合现实情况。目前的两类情感融合还是简单的,未来的工作可以在情感融合方法上展开。

猜你喜欢
语句语义变量
真实场景水下语义分割方法及数据集
寻求不变量解决折叠问题
抓住不变量解题
重点:语句衔接
“吃+NP”的语义生成机制研究
情感形容词‘うっとうしい’、‘わずらわしい’、‘めんどうくさい’的语义分析
汉语依凭介词的语义范畴
分离变量法:常见的通性通法
我喜欢
作文语句实录