CoAI

开放域闲聊对话系统

  • 2020年11月20日 22:32

研究领域概述

对话系统是自然语言处理领域重要的应用场景,包括自然语言理解,语义分析与对话管理,自然语言生产等核心技术,近年来正受到越来越多的企业和研究机构的重视和研究。对话系统从应用场景上可以分为开放领域闲聊式对话系统和特定领域任务导向式对话系统两类:开放领域闲聊式对话系统以闲聊和陪伴为目的,可以在任意开放领域与用户进行交流,如微软小冰;特定领域任务导向式对话系统则以完成特定任务为目的,通过特定任务领域的对话交流帮助用户完成任务,如苹果Siri、三星Bixby、谷歌Assistant等。

随着深度学习方法的发展,主流的开放域闲聊对话系统大致上可以分为生成式和检索式两种,前者通过生成式神经网络模型根据用户输入逐词生成直至构成一个完整对话NRM,MMI,ECM,CCM 等,后者通过在大规模对话语料库中检索得到合适的对话进行回复,代表工作有 SMN,DAU,DAM 等。近年来,随着大规模预训练模型的兴起,基于预训练的对话模型在性能上进一步提升,逐渐成为主流,代表工作有DialoGPT,Blender,Meena,PLATO-2等。

我们的工作

ECM: Emotional Chatting Machine

近年来,随着深度学习的发展,应用于开放领域的对话系统正在受到越来越多的关注。与之前基于信息检索的对话系统不同,基于深度学习的生成式对话系统可以从大规模的语料中学习到潜在的回复模式,从而可以生成语料中从未出现过的回复语句,在适用性与扩展性上都比基于信息检索的对话系统有了极大的提升。之前,大量的生成式对话系统的工作都致力于提升对话系统生成语句的语言质量,包括语法性、多样性以及话题相关性等等,却缺乏对人类情感的理解。然而,很多研究表明,情感智力 (Emotion Intelligence) 对人机对话系统的表现有着至关重要的影响,是一个成功的对话系统不可或缺的重要组成部分。

《Emotional Chatting Machine: Emotional Conversation Generation with Internal and External Memory》首次将情感因素引入了基于深度学习的生成式对话系统,提出了基于记忆网络的情感对话系统 Emotional Chatting Machine (ECM) ,在传统的 Sequence to Sequence 模型的基础上,ECM 使用了静态的情感向量嵌入表示,动态的情感状态记忆网络和情感词表加权的机制,使得 ECM 可以根据用户的输入以及指定情感分类输出相应情感的回复语句。实验表明,ECM 可以在语言和情感两个维度上生成恰当的回复,并且通过人工实验验证了人们偏好于引入了情感因素的对话系统。作为第一篇将情感因素引入基于深度学习的生成式对话系统的论文,该工作受到了包括 MIT Technology Review 和 NVIDIA DEVELOPER 的关注。

image.png

图1. ECM 模型框架

模型的总体框架如图1所示,用户问题输入为“What a lovely day!”,通过Encoder 将其编码为隐向量表示 h,然后通过注意力机制,结合 decoder 的状态向量 s 在生成不同的词时,对问题的隐向量表示 h 的不同部分的信息选择性的加强,得到向量 c。指定情感类别为“Happiness”,经过索引得到情感类别嵌入向量,初始的情感状态记忆向量和相应的情感词表。decoder 接受经过注意力机制的问题向量 c,情感类别嵌入向量和初始的情感状态记忆向量作为输入,通过循环神经网络生成下个词的生成概率 o,之后再经过情感词表对情感词和非情感词的加权,得到最终词的生成概率,通过采样即可得到输出“Haha, so happy today!”

image.png

图2. ECM 生成的对话样例

ECM 生成的对话样例如图所示,对大部分在语料中出现较多的情感类别,ECM 都能生成相应情感的回复,但是对于在语料中出现较少的情感类别(如最后2行),ECM 回复的质量会有所降低。

image.png

图3. 情感互动模式

我们对于数据集中的情感互动模式,<post 情感类别,response 情感类别>,进行了统计,可视化结果如图3所示,颜色越深表示其互动模式所占比重越大。深色的对角线代表了共情(Empathy)的回复模式是一种较为常见的回复模式。我们的后续工作会基于这些回复模式,在 ECM 的基础上设计一种对话系统可以自动根据用户输入语句的情感类别来通过某种策略选择合适的情感类别,从而生成对应情感的回复。

CCM: Commonsense Knowledge Aware Conversation Generation with Graph Attention

image.png

1. 模型示意图

对话系统的实现方法大致分为两类:传统的基于模板和规则来进行对话生成方法,然而这种方法通常需要成千上万条模板和规则来搭建一个对话生成模型,十分耗时耗力;数据驱动的机器学习方法,通过设计一个机器学习模型从语料中自动学习对话模式进行回复,然而这种数据驱动的方法因为缺少知识的理解面临着高频回复、逻辑不一致等问题。Commonsense Knowledge Aware Conversation Generation with Graph Attention论文中,我们在数据驱动的对话生成模型中加入了常识知识,将其转化为对话数据驱动和常识知识驱动相结合的对话生成模型 (CCM) ,使其可以从知识角度更好的理解用户意图同时生成包含相关知识的回复。图1为本课题提出模型的示意图。从图中可以看出本模型在考虑对话数据语料之外,还引入了常识知识的知识图谱信息,相比之前数据驱动的方法,本课题提出的模型可以利用常识知识更好的理解用户意图并且生成包含相关知识的回复。

image.png

2. 框架示意图

2中描述了本课题提出模型的框架。从图中可以看出本模型在开放领域闲聊式对话生成模型的Encoder-Decoder结构基础之上,又加入了对知识图谱的建模,分别使用了基于Static Graph AttentionKnowledge Interpreter 进行知识驱动的语言理解,和基于 Dynamic Graph AttentionKnowledge Aware Generator 进行知识驱动的语言生成。给定用户输入语句后,本课题模型首先会在知识库中对用户输入语句中的所有单词进行实体匹配,并且提取以其为中心进行一度关系扩展的若干子图作为知识图谱,同时使用Static Graph Attention对这些实体进行知识表示与其词向量拼接而成输入 Encoder,在经过 Encoder 进行句子表示后,Decoder 根据其隐向量进行解码得到状态向量,此时使用Dynamic Graph Attention在知识图谱中选择概率最大的实体进行生成,或者选择普通单词进行生产,最后得到生成的包含相关知识的回复语句。

image.png

表1. CCM 对话样例

了显示我们的模型 (CCM) 的性能,我们提供了一组对话样例在表 1。在用户输入语句Post 中,红色的 “breakable” 为非词表的知识实体。由于 Seq2Seq 模型没有知识建模的能力,所以其不能很好地理解 “breakable” 只能将其当做非词表单词 “OOV” 处理,以致于生成了许多无信息的非词表单词 “OOV”MemNet 模型可以生成一定具有含义和信息量的回复因为其可以接受知识三元组的表示作为输入,然而其依旧会生成非词表单词 “OOV”CopyNet MemNet 的基础上可以从知识三元组中 Copy 一些知识实体进行生成,然而由于其将其作为独立的知识进行建模,其生成知识实体的数量会低于我们的模型 CCM。而我们的模型 CCM 则是将所有知识三元组作为一个整体的知识图谱进行建模,从而一方面增强了对用户输入语句的理解能力,另一方面也加强了生成语句的信息丰富程度。所以相比于基准对比模型,我们的模型可以生成语义更加合适且信息更加丰富的回复。 

大规模中文对话数据集LCCC与中文对话预训练模型CDial-GPT

详见平台工具

 KdConv:多领域知识驱动的中文多轮对话数据集

详见平台工具