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

相关文章

使用python生成固定格式序号的方法详解

《使用python生成固定格式序号的方法详解》这篇文章主要为大家详细介绍了如何使用python生成固定格式序号,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以参考一下... 目录生成结果验证完整生成代码扩展说明1. 保存到文本文件2. 转换为jsON格式3. 处理特殊序号格式(如带圈数字)4

Java使用Swing生成一个最大公约数计算器

《Java使用Swing生成一个最大公约数计算器》这篇文章主要为大家详细介绍了Java使用Swing生成一个最大公约数计算器的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下... 目录第一步:利用欧几里得算法计算最大公约数欧几里得算法的证明情形 1:b=0情形 2:b>0完成相关代码第二步:加

k8s admin用户生成token方式

《k8sadmin用户生成token方式》用户使用Kubernetes1.28创建admin命名空间并部署,通过ClusterRoleBinding为jenkins用户授权集群级权限,生成并获取其t... 目录k8s admin用户生成token创建一个admin的命名空间查看k8s namespace 的

Docker多阶段镜像构建与缓存利用性能优化实践指南

《Docker多阶段镜像构建与缓存利用性能优化实践指南》这篇文章将从原理层面深入解析Docker多阶段构建与缓存机制,结合实际项目示例,说明如何有效利用构建缓存,组织镜像层次,最大化提升构建速度并减少... 目录一、技术背景与应用场景二、核心原理深入分析三、关键 dockerfile 解读3.1 Docke

Vue3 如何通过json配置生成查询表单

《Vue3如何通过json配置生成查询表单》本文给大家介绍Vue3如何通过json配置生成查询表单,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录功能实现背景项目代码案例功能实现背景通过vue3实现后台管理项目一定含有表格功能,通常离不开表单

Java使用Javassist动态生成HelloWorld类

《Java使用Javassist动态生成HelloWorld类》Javassist是一个非常强大的字节码操作和定义库,它允许开发者在运行时创建新的类或者修改现有的类,本文将简单介绍如何使用Javass... 目录1. Javassist简介2. 环境准备3. 动态生成HelloWorld类3.1 创建CtC

Python从Word文档中提取图片并生成PPT的操作代码

《Python从Word文档中提取图片并生成PPT的操作代码》在日常办公场景中,我们经常需要从Word文档中提取图片,并将这些图片整理到PowerPoint幻灯片中,手动完成这一任务既耗时又容易出错,... 目录引言背景与需求解决方案概述代码解析代码核心逻辑说明总结引言在日常办公场景中,我们经常需要从 W

C#使用Spire.XLS快速生成多表格Excel文件

《C#使用Spire.XLS快速生成多表格Excel文件》在日常开发中,我们经常需要将业务数据导出为结构清晰的Excel文件,本文将手把手教你使用Spire.XLS这个强大的.NET组件,只需几行C#... 目录一、Spire.XLS核心优势清单1.1 性能碾压:从3秒到0.5秒的质变1.2 批量操作的优雅

Python使用python-pptx自动化操作和生成PPT

《Python使用python-pptx自动化操作和生成PPT》这篇文章主要为大家详细介绍了如何使用python-pptx库实现PPT自动化,并提供实用的代码示例和应用场景,感兴趣的小伙伴可以跟随小编... 目录使用python-pptx操作PPT文档安装python-pptx基础概念创建新的PPT文档查看

在ASP.NET项目中如何使用C#生成二维码

《在ASP.NET项目中如何使用C#生成二维码》二维码(QRCode)已广泛应用于网址分享,支付链接等场景,本文将以ASP.NET为示例,演示如何实现输入文本/URL,生成二维码,在线显示与下载的完整... 目录创建前端页面(Index.cshtml)后端二维码生成逻辑(Index.cshtml.cs)总结