代码: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,。
然后,将和向量c输入到一个前馈网络,生成
4.4.2 强化情感注意损失
由于人在谈话过程中会自然地额外注意情绪显著信息,因此实施了情绪注意力丢失,以关注那些具有较高情绪强度值的顶点:
其中首先对每个结点的注意力分数按照注意力头的个数取平均,然后根据每个结点的情绪强度和注意力值将损失最小化。然后,产生第j个单词在词汇V上的分布:
接着通过使用外部概念,计算从顶点{Vi}i=1复制的概率Pgen,得出最终概率分布P (yj):