论文阅读总结:AAAI 2022 Knowledge Bridging for Empathetic Dialogue Generation

本文主要是介绍论文阅读总结:AAAI 2022 Knowledge Bridging for Empathetic Dialogue Generation,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

代码:GitHub - qtli/KEMP: [AAAI 2022] Knowledge Bridging for Empathetic Dialogue Generation

论文:https://arxiv.org/abs/2009.09708

代码阅读:CSDN

个人总结:这篇论文主要的创新点是外部知识部分(ConceptNet和Nrc_Vad),建立了情感上下文图。首先根据对话,对每个非主体词从ConceptNet检索一组候选组,然后,通过置信度得分和移情反应创建子集,并根据Nrc_Vad排序(选前几个),最后通过临时边,情感边和全局边创建上下文图。

后续就是一个Transformer结构,包括encoder和decoder。在encoder部分的改动:首先加入了图的MHA,其次是将Nrc_Vad得到的情感强度值得分映射到了输出中。在decoder部分的改动:在输入部分首先使用过一个线性层将encoder的输出线性变换并与词嵌入结合,作为新的input;其次就是再次将情感信号Ce(由情感强度值和节点嵌入生成)与当前生成的嵌入拼接成情感上下文嵌入c(使用了两次情感值,即Nrc_Vad)。

1 摘要

外部知识的缺乏使得共情对话系统难以从有限的对话历史中感知隐含的情绪学习情绪交互。为了解决上述问题,我们提出利用外部知识,包括常识知识和情感词汇知识,在移情对话生成中明确地理解和表达情感。首先通过与外部知识的共同交互来丰富对话历史,并构建一个情感上下图。然后,我们从知识丰富的情感上下文图中学习情感上下文表示,提取情感信号,这是预测响应中表达的情感的先决条件。最后,为了产生移情反应,我们提出了一种情感交叉注意机制,从情感上下文图中学习情感依赖。


2 以往研究存在的问题

社会心理学研究表明,共情是实现更人性化对话系统的关键因素。尽管已经有很多研究通过明确分配情感标签或通过一般术语鼓励更高水平的情感来控制回应的情感内容,但仍然面临着在没有明确情感标签的情况下进行共情对话的挑战。

2.1如何从外部知识中更好地感知情感

人们通常依赖经验和外部知识来认知和表达隐含的情感。下图展示了共情对话的一个实例,如果使用发言者输入的非停用词作为查询,并通过外部知识获取知识,可以获得各种与情感相关的概念以及它们的情感强度值,这在情感理解中对于共情对话系统起着至关重要的作用(红色情绪值,蓝色情绪相关的概念)。外部知识对于获取有用的情感知识并改善共情对话生成性能至关重要。然而,从外部知识中感知和表示情感对于共情对话生成仍然存在问题。

2.2在对话中捕获情感依赖

共情对话中常常出现情感依赖和情感惯性。我们使用基于CNN的情感分类器对话语进行标记,并在下图可视化了从发言者到听众的情感转换。较深的对角线网格表示听众倾向于模仿对话方的情感以建立良好的关系。此外,除了对角方向之外,还存在一些复杂的情感转移模式(在红色框中)。因此,建模对话参与者之间的情感依赖关系至关重要。


3 贡献

设计了一个情感上下文编码器和一个情感依赖解码器,来学习对话历史和目标回应之间的情感依赖关系。其中情感上下文编码器使用图感知Transformer来学习图嵌入,并提出情感信号感知过程来感知引导响应生成的上下文情感。在启用了丰富知识的情感上下文图的条件下,情感依赖解码器特别模拟情感依赖关系以生成共情回应。


 4 方法

先介绍一下KEMP用到的两个外部知识

ConceptNet:是用自然语言描述一般人类知识的大规模知识图,在情感相关任务中发挥有效作用包括590万元组、310万概念和38个关系。作者将每个元组(头部概念、关系、尾部概念、置信度得分)表示为τ = (x,r,c,s),例如(birthday,RelatedTo,happy,0.19)

NRC_VAD:是针对20k个英语单词的具有3维(Va,Ar,Do)的VAD(Valence-arous dominance)向量的词典,例如,单词“nice”的V广告载体与文化无关,在心理学中被广泛采用(Mehrabian 1996)。表1给出了V AD载体的解释AD向量是:[0.93,0.442,0.65]。vad与文化无关,在心理学中被广泛采用(Mehrabian 1996)。下图给出了VAD的解释

 情感强度值计算方法:

使用NRC VAD来计算对话词和外部概念x的情感强度值,其中min-max()是最小-最大归一化如果x不在NRC VAD中,η(x)将被设置为0。将ConceptNet中情感强度值较高的概念注入KEMP,帮助模型情感感知和表达

4.1 问题定义:

输入,M个对话历史,每个对话历史由字序列构成。

 4.2 情感上下文图

通过与两种类型的外部知识交互来构建情感情境图G。作者将对话历史展平成一个长单词序列,并在标记句的开头插入一个标记,即X = [CLS,x1,.。。,xm】。对于每个非主题词xi ∈ X,首先从ConceptNet检索一组候选元组,然后,采用三个启发式步骤来提炼情绪相关知识:

(1)过滤与(移情反应(例如,“原因”)和足够的置信度得分(即ski > 0.1))相关的元组来提取子集ti⊂TiB。

(2)通过情感强度值(NCR_VAD){η(cki )}k=1对元组进行排序,对于每个单词xi,选择前K个元组作为情感知识子图

(3)应用3种类型的有向边来连接顶点:(I)两个连续单词之间的临时边;(二)单词与其情感之间的情感边;(iii)CLS和其他顶点之间的全局边。最后,对话历史被情感知识丰富并表示为情感语境图。

4.3情感上下文编码器

4.3.1情感上下文图编码

首先使用单词嵌入层和位置嵌入层将每个顶点vi ∈ G转换为向量Ew(vi) 词嵌入和Ep(vi) 位置嵌入,d是嵌入的维数。在多回合对话设置中,区分对话历史或外部知识中的顶点是有帮助的。因此,我们将顶点状态嵌入到顶点vi的Ev(vi)中。顶点vi的矢量表示是三种嵌入的组合:

之后应用多头图注意机制,用情感知识更新顶点表示。通过与邻居结点Ai进行注意力交互。

 第n个头的自注意机制公式如下,其中W为参数矩阵

 由于先前的操作仅针对局部上下文(邻居节点),所以接下来用全局上下文信息(所有其他顶点)来更新顶点表示,以对全局交互进行建模。具体来说,我们使用Transformer来获得全局信息

 LayerNorm是层归一化,MHAtt是由H个注意头组成的多头自注意层;FFN是一个以ReLU为隐激活函数的两层前馈网络。

4.3.2情绪信号感知

从情感情境图中学习情感信号,以指导移情反应的产生。情绪信号表示是基于情感强度的图顶点表示的加权和。

 然后,使用具有softmax操作的线性层将向量ce投影到情绪标签上的情绪类别分布Pe中,以识别移情反应的情绪信号:

其中We ∈ Rq×d,q是情感类别的数量

4.4 情感依赖解码器

从中间情感信号开始,提出了一种情感相关解码器来顺序生成目标词。为了从情感上下文图中获得情感依赖性控制移情表达,作者通过线性层:

ep线性转换为新嵌入e0p。在第j个解码步骤e0p与解码器输入词[y1,.。。,yj1]转换成新嵌入[y0,.。。,yj1],其中y0 = e0p:

为改善情感情境图和目标移情反应之间的情感依赖性,作者设计了两种情感策略融合情感特征强化情感注意损失

4.4.1 融合情感特征

为了从情感语境图中捕获对话上下文嵌入,作者计算最后一个预测词Yj和顶点Vi之间的注意力得分:

​其中H是注意力头的数量。为了提高响应的移情表达,将情境向量Gs与情感信号Ce拼接成情感上下文嵌入c,

然后,将y_{j-1}和向量c输入到一个前馈网络,生成y_{j}

 4.4.2 强化情感注意损失

由于人在谈话过程中会自然地额外注意情绪显著信息,因此实施了情绪注意力丢失,以关注那些具有较高情绪强度值的顶点:

 其中首先对每个结点的注意力分数按照注意力头的个数取平均,然后根据每个结点的情绪强度和注意力值将损失最小化。然后,产生第j个单词在词汇V上的分布:

接着通过使用外部概念,计算从顶点{Vi}i=1复制的概率Pgen,得出最终概率分布P (yj):

 

这篇关于论文阅读总结:AAAI 2022 Knowledge Bridging for Empathetic Dialogue Generation的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

关于C++中的虚拟继承的一些总结(虚拟继承,覆盖,派生,隐藏)

1.为什么要引入虚拟继承 虚拟继承是多重继承中特有的概念。虚拟基类是为解决多重继承而出现的。如:类D继承自类B1、B2,而类B1、B2都继承自类A,因此在类D中两次出现类A中的变量和函数。为了节省内存空间,可以将B1、B2对A的继承定义为虚拟继承,而A就成了虚拟基类。实现的代码如下: class A class B1:public virtual A; class B2:pu

十五.各设计模式总结与对比

1.各设计模式总结与对比 1.1.课程目标 1、 简要分析GoF 23种设计模式和设计原则,做整体认知。 2、 剖析Spirng的编程思想,启发思维,为之后深入学习Spring做铺垫。 3、 了解各设计模式之间的关联,解决设计模式混淆的问题。 1.2.内容定位 1、 掌握设计模式的"道" ,而不只是"术" 2、 道可道非常道,滴水石穿非一日之功,做好长期修炼的准备。 3、 不要为了

Windwos +vs 2022 编译openssl 1.0.2 库

一 前言 先说 结论,编译64位报错,查了一圈没找到解决方案,最后换了32位的。 使用qt访问web接口,因为是https,没有openssl库会报错 QNetworkReply* reply = qobject_cast<QNetworkReply*>(sender());if (reply){if (reply->error() == QNetworkReply::NoError

人工智能机器学习算法总结神经网络算法(前向及反向传播)

1.定义,意义和优缺点 定义: 神经网络算法是一种模仿人类大脑神经元之间连接方式的机器学习算法。通过多层神经元的组合和激活函数的非线性转换,神经网络能够学习数据的特征和模式,实现对复杂数据的建模和预测。(我们可以借助人类的神经元模型来更好的帮助我们理解该算法的本质,不过这里需要说明的是,虽然名字是神经网络,并且结构等等也是借鉴了神经网络,但其原型以及算法本质上还和生物层面的神经网络运行原理存在

Java注解详细总结

什么是注解?         Java注解是代码中的特殊标记,比如@Override、@Test等,作用是:让其他程序根据注解信息决定怎么执行该程序。         注解不光可以用在方法上,还可以用在类上、变量上、构造器上等位置。 自定义注解  现在我们自定义一个MyTest注解 public @interface MyTest{String aaa();boolean bbb()

tensorboard-----summary用法总结

Tensorflow学习笔记——Summary用法         最近在研究tensorflow自带的例程speech_command,顺便学习tensorflow的一些基本用法。 其中tensorboard 作为一款可视化神器,可以说是学习tensorflow时模型训练以及参数可视化的法宝。 而在训练过程中,主要用到了tf.summary()的各类方法,能够保存训练过程以及参数分布图并在

七种排序方式总结

/*2018.01.23*A:YUAN*T:其中排序算法:冒泡排序,简单排序,直接插入排序,希尔排序,堆排序,归并排序,快速排序*/#include <stdio.h>#include <math.h>#include <malloc.h>#define MAXSIZE 10000#define FALSE 0#define TRUE 1typedef struct {i

Java实现MD5加密总结

Java实现MD5加密总结 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿! 1. 什么是MD5加密 MD5是一种常用的哈希算法,用于将任意长度的数据通过哈希运算转换为固定长度的数据串,通常为128位的二进制串,常用于对密码等敏感信息进行加密存储或传输。 2. Java实现MD5加密的方法 2.1 使用java.sec

Linux通配符总结

Linux通配符总结 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿! 在Linux系统中,通配符是一种用于匹配文件名或路径名的特殊字符。通过使用通配符,可以方便地匹配多个文件或目录,从而进行文件操作或查找。 2. 常用的通配符 在Linux系统中,常用的通配符包括以下几种: *:匹配任意长度的任意字符。?:匹配任意单个字符

(1995-2022年) 全国各省份-技术交易活跃度

技术交易活跃度是一个关键指标,用于衡量技术市场的交易频繁程度和活跃性。它不仅显示了市场参与者对技术交易的参与热情,而且交易的频率也体现了市场的活力。这一指标对于不同的利益相关者具有不同的意义: 对投资者而言,技术交易活跃度是把握市场趋势、评估交易策略和预测市场波动的重要工具。对企业来说,技术交易活跃度反映了其技术创新的活跃程度和市场竞争的激烈程度,有助于企业制定技术创新和市场竞争策略。对政策制定