AAMAS2023|三思而后行:一个类人的用于情感对话生成的两阶段对话代理

本文主要是介绍AAMAS2023|三思而后行:一个类人的用于情感对话生成的两阶段对话代理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

175800be0ae34e3041167d1ab4ca7b32.png

来自:社媒派SMP

进NLP群—>加入NLP交流群

2b64a33032c4e3d328268bcda1966aa7.png

题目:Think Twice: A Human-like Two-stage Conversational Agent for Emotional Response Generation

作者:钱宇珊(天津大学)、王博(天津大学)、马尚朝(天津大学)、吴斌(起硕智能)、张硕(起硕智能)、赵东明(中国移动)、黄堃(中国移动)、侯越先(天津大学)

会议:The 22nd International Conference on Autonomous Agents and Multiagent Systems. (AAMAS 2023)

论文链接:http://arxiv.org/abs/2301.04907

c0a2a6b27cc2ab0d42687c971c0e87bc.png

ed78500a0ff21e4fd85f57789a9c021c.gif

背景

7383297ca5dda7c52c88cb4316637ccc.gif

ce8eb1a8e43c48a5dbcac82326d70846.gif

在开放域对话场景中,融入一些特定因素(如个性、知识、情感等)可以有效提升对话质量。情感对话旨在人机对话中生成能够感知和表达适当情感的回复,大量研究表明包含情感的对话在人机对话系统中可以显著提升用户的满意程度。当前的情感对话方法主要基于神经网络模型,通过端到端的方式,在对话回复中共同建模语义和情感。然而,目前的端到端情感对话模型依旧面临几个挑战:首先,高质量大规模的情感标注对话语料很难获得,人工标注的成本很高。其次,端到端的模型,在解码过程中由于情感向量的约束,会影响回复生成的语义和范围,加剧了安全回复问题。最后,不少模型生成的回复存在相应情感状态表达不明显或者实际情感状态不符合预期的问题,输入的情感信号往往在复杂的学习过程中被削弱,概括地说,是对情感的可控性不强。

bc09209d4afb2fe14db1fecd0ac06940.png

为了解决上述问题,本文参考人类真实对话行为,提出了一种生成情感回复的策略。当人类在对话中进行回复时,同时处理情感和语义不一定能确保满意的结果,产生合适的情感回复的方法之一是在确定回复的语义后,再去单独考虑情感的选择,即,对情感的“三思”。如上图所示,每个回复首先有一个适当的语义来回应上文语境。然后,通过对上文语境的再次确认,从情感层面调整回复。调整回复时考虑采用“Rewrite(改写)”和“Add(增写)”两种方式,对同伴的情感状态做出回应。具体来说,首先在没有情感标注的对话语料上训练生成符合上文语义的原型回复。然后,在第二阶段利用一个具有共情假设的可控情感精炼器修改原型回复。在DailyDialog和EmpatheticDialogues数据集上的实验结果表明,本文所提出的对话模型在情感生成方面优于基线模型,并在自动和人工评估中显示出保持语义性能的能力。本文所提出的对话模型的架构如下图所示。

21312301bdba63f574104ed1b70f0f43.png

524effaa5248d110246b07af9723ac29.gif

对话模型总体框架

1d28d4ebc1268c114185de5b856c89b8.gif

5cff675552b61047c11de0c2f8480070.gif

对话模型由三个模块构成:1)原型语句生成器。该模块将上文语境作为输入,生成一个原型回复。2)对话情感检测器。该模块对上文语境作为输入进行情感分析,得到情感状态集,用来指导最终回复的情感。3)可控情感精炼器。该模块根据情感状态集对原型回复进行精炼,生成一定程度上兼具语义和情感的最终回复。

原型语句生成器 该模块使用具有大规模参数量、可微调的预训练模型作为原型语句生成器,以此来生成内容相关,表达丰富,与上文语境一致的回复。具体而言,本文选择了12-to-48层DialoGPT作为原型语句生成器的基础模型,将上文中的所有语句以“<|endoftext|>”拼接成一个长句子作为整体输入,目标原型语句的条件分布是一系列条件概率的乘积:

对话情感检测器 作为共情的一个直观假设,倾听者倾向于以一种承认说话者感受的方式做出回应,通过呼应说话者的情感,达到一定程度上的共情。对话情感检测器的目标是识别对话上文语境的情感状态,利用上述提到的日常对话中常见的共情原则,根据识别出的上文语境中的情感状态分布将期待的情感传给可控情感精炼器:

 , 

其中,  是每个对话上文语境的情感状态集。  表示情感状态集中每类情感属于积极情感状态的个数,  表示情感状态集中每类情感属于消极情感状态的个数。

对话情感检测器识别对话上文情感的部分主要基于DialogueGCN,将对话中每个语句作为图网络的结点,语句结点与语句结点之间通过有向边连接,边的方向根据语句的序列先后决定。这些有向边用于建模说话者以前说过的话和他人说过的话对说话者自己的情感影响。模型利用Glove编码和CNN抽取语句的特征,得到每个语句  的编码,也就是每个结点的向量。每个语句之前有b句话,之后有a句话,代表每句话的结点和a+b+1个结点(包括自身)有边,每条边的权重  由结点之间的关系程度得到:

最后,将来自序列编码器sq和说话者编码器sp的编码拼接起来,结合基于相似性的注意力机制获得语句结点的最终编码。然后用全连接网络进行多个情感类别(happy, sad, neutral, angry, surprise, disgust, and fear)的分类:

关于该模块的更多细节请参考论文。

可控情感精炼器 该模块将原型回复和期待的情感作为输入,生成最终回复。需要学习的目标可定义为:

可控情感精炼器由两个模块组成,“改写”模块和“增写”模块。“改写”模块通过将句子中的原始情感符号替换为表示目标情感的符号来转换原型回复的情感属性。“增写”模块通过添加额外的句子来调整情感状态。

具体来说,“改写”模块由两个部分组成。第一个部分是删除部分,它用来确定输入中的每个token是否为情感属性词,学习输入中的情感部分和非情感部分,并删除情感部分。采用Transformer的注意力机制提取注意力得分作为每个token的权重:

第二部分是生成部分,生成部分的输入是原型回复和目标情感。输出的是一个符合目标情感的句子。生成部分采用Transformer结构,在不需要并行语料的情况下,生成部分的训练目标是最小化下列重构损失:

“增写”模块在PPLM的工作基础上构建,通过添加具有指定情感的额外句子来改变原始句子的情感极性。借助贝叶斯规则,可以使用模型  和模型  来表示模型  :

选择器用于确定是来自“改写”模块还是“增写”模块的回复作为最终输出。选择器使用GLEU与原型回复进行比较作为判断回复总体效果的依据。选择器会选择GLEU分数较高的回复作为最终回复。

关于该模块的更多细节请参考论文。

0c96153e41b1de4989855d160f345fc3.gif

实验结果

feb981266137d63308ac861206b85811.gif

94d6297487dba56b031ceb79c7824707.gif

本文使用DailyDialog和EmpatheticDialogues数据集进行实验。在评价指标方面,自动评价采用了BLEU、Diversity和Emotion Accuracy(Acc),人工评价采用了Content(Con)、Emotion(Emo)、Emotion-intensity(Int)和Fluency(Flu),具体指标定义请参考原论文。

基线模型选用了通用模型、情感对话模型和共情对话模型。DailyDialog和EmpatheticDialogues数据集的实验结果分别显示在表3和表4中。可以观察到,在情感生成的性能方面,本文所提出的对话模型在两个数据集中的自动评估指标Acc和人类评估指标Emo方面都优于所比较的基线模型,表明在情感生成方面的性能表现优异。此外,本文提出的对话模型在DailyDialog和EmpatheticDialogues数据集的Int指标上分别取得了最优和次优结果,也证明了在表达情感强度方面的优势。在语义生成性能方面,对话模型在BLEU-4和Con指标上达到了最高水平,在Dist-1和Dist-2指标上得分也适中。这些结果证实了本文提出的对话模型在显著改善情感表达的同时保持了适当语义。

8b93fce2ca239ac8550df8194d5d7d75.png

98d31c42d79b98a1db46f7d65e44540b.png

本文也展示了消融研究的实验结果,如表5所示,可以观察到删除Add模块或Rewrite模块都会导致大部分指标下降。这表明,结合“改写”和“增写”策略符合人类语言显式和隐式的表达特点,有助于产生合适的回复。此外,对话情感检测器在情感回复生成中也发挥着重要作用,它优于将上文连接成长句或仅识别单个语句。

da3f03fe6748e2344f186ca20a93d113.png

此外,对于抽样的100个人类评估样本,本文还比较了原型回复的情感和精炼后的回复的情感在所提出的对话模型中的正确性和显著性。如下图所示,左栏和右栏分别表示原型回复和精炼后的回复。红色和蓝色列分别表示正确(即与上文情感分布一致)和错误的情感。列的长度表明了情感的重要性。结果表明,精炼后的回复提高了原型回复中情感的正确性和显著性。

7d6ff8e26bb947aa7e4cc104fc44eb24.png

本文同时也给出了实验的样例分析,如下表所示,展示了从所有七个模型中抽取的一些生成回复的案例,相应的上文没有出现在训练集中。从中可以观察到,其他基线模型生成的回复具有情感表达,但语义层面上并不具有特异性。相比之下,本文提出的对话模型生成的回复不仅继承了上文语境的语义,同时也包含了丰富而恰当的情感。如EmpatheticDialogues数据集上的案例1,对话模型生成的回复既表达了对将问题报告给经理的方法的不确定的语义,同时也以委婉的方式表达了合适的情感。具体的实验分析和相关细节可参考论文。

2a66a9267c7f35e7635f5264a1ecde65.png


发布招聘信息or进NLP群—>加入NLP交流群

这篇关于AAMAS2023|三思而后行:一个类人的用于情感对话生成的两阶段对话代理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/280025

相关文章

MybatisGenerator文件生成不出对应文件的问题

《MybatisGenerator文件生成不出对应文件的问题》本文介绍了使用MybatisGenerator生成文件时遇到的问题及解决方法,主要步骤包括检查目标表是否存在、是否能连接到数据库、配置生成... 目录MyBATisGenerator 文件生成不出对应文件先在项目结构里引入“targetProje

Python使用qrcode库实现生成二维码的操作指南

《Python使用qrcode库实现生成二维码的操作指南》二维码是一种广泛使用的二维条码,因其高效的数据存储能力和易于扫描的特点,广泛应用于支付、身份验证、营销推广等领域,Pythonqrcode库是... 目录一、安装 python qrcode 库二、基本使用方法1. 生成简单二维码2. 生成带 Log

Python使用Pandas库将Excel数据叠加生成新DataFrame的操作指南

《Python使用Pandas库将Excel数据叠加生成新DataFrame的操作指南》在日常数据处理工作中,我们经常需要将不同Excel文档中的数据整合到一个新的DataFrame中,以便进行进一步... 目录一、准备工作二、读取Excel文件三、数据叠加四、处理重复数据(可选)五、保存新DataFram

SpringBoot生成和操作PDF的代码详解

《SpringBoot生成和操作PDF的代码详解》本文主要介绍了在SpringBoot项目下,通过代码和操作步骤,详细的介绍了如何操作PDF,希望可以帮助到准备通过JAVA操作PDF的你,项目框架用的... 目录本文简介PDF文件简介代码实现PDF操作基于PDF模板生成,并下载完全基于代码生成,并保存合并P

详解Java中如何使用JFreeChart生成甘特图

《详解Java中如何使用JFreeChart生成甘特图》甘特图是一种流行的项目管理工具,用于显示项目的进度和任务分配,在Java开发中,JFreeChart是一个强大的开源图表库,能够生成各种类型的图... 目录引言一、JFreeChart简介二、准备工作三、创建甘特图1. 定义数据集2. 创建甘特图3.

AI一键生成 PPT

AI一键生成 PPT 操作步骤 作为一名打工人,是不是经常需要制作各种PPT来分享我的生活和想法。但是,你们知道,有时候灵感来了,时间却不够用了!😩直到我发现了Kimi AI——一个能够自动生成PPT的神奇助手!🌟 什么是Kimi? 一款月之暗面科技有限公司开发的AI办公工具,帮助用户快速生成高质量的演示文稿。 无论你是职场人士、学生还是教师,Kimi都能够为你的办公文

高效+灵活,万博智云全球发布AWS无代理跨云容灾方案!

摘要 近日,万博智云推出了基于AWS的无代理跨云容灾解决方案,并与拉丁美洲,中东,亚洲的合作伙伴面向全球开展了联合发布。这一方案以AWS应用环境为基础,将HyperBDR平台的高效、灵活和成本效益优势与无代理功能相结合,为全球企业带来实现了更便捷、经济的数据保护。 一、全球联合发布 9月2日,万博智云CEO Michael Wong在线上平台发布AWS无代理跨云容灾解决方案的阐述视频,介绍了

在JS中的设计模式的单例模式、策略模式、代理模式、原型模式浅讲

1. 单例模式(Singleton Pattern) 确保一个类只有一个实例,并提供一个全局访问点。 示例代码: class Singleton {constructor() {if (Singleton.instance) {return Singleton.instance;}Singleton.instance = this;this.data = [];}addData(value)

pdfmake生成pdf的使用

实际项目中有时会有根据填写的表单数据或者其他格式的数据,将数据自动填充到pdf文件中根据固定模板生成pdf文件的需求 文章目录 利用pdfmake生成pdf文件1.下载安装pdfmake第三方包2.封装生成pdf文件的共用配置3.生成pdf文件的文件模板内容4.调用方法生成pdf 利用pdfmake生成pdf文件 1.下载安装pdfmake第三方包 npm i pdfma

poj 1258 Agri-Net(最小生成树模板代码)

感觉用这题来当模板更适合。 题意就是给你邻接矩阵求最小生成树啦。~ prim代码:效率很高。172k...0ms。 #include<stdio.h>#include<algorithm>using namespace std;const int MaxN = 101;const int INF = 0x3f3f3f3f;int g[MaxN][MaxN];int n