论文浅尝 | 基于图注意力的常识对话生成

OpenKG 祝各位读者新春快乐,猪年吉祥!


640?wx_fmt=png

来源:IJCAI 2018.

论文下载地址:https://www.ijcai.org/proceedings/2018/0643.pdf

项目源码地址:https://github.com/tuxchow/ccm

动机

在以前的工作中,对话生成的信息源是文本与对话记录。但是这样一来,如果遇到OOV 的词,模型往往难以生成合适的、有信息量的回复,而会产生一些低质量的、模棱两可的回复,这种回复往往质量不高。

为了解决这个问题,有一些利用常识知识图谱生成对话的模型被陆续提出。当使用常识性知识图谱时,由于具备背景知识,模型更加可能理解用户的输入,这样就能生成更加合适的回复。但是,这些结合了文本、对话记录、常识知识图谱的方法,往往只使用了单一三元组,而忽略了一个子图的整体语义,会导致得到的信息不够丰富。

为了解决这些问题,文章提出了一种基于常识知识图谱的对话模型(commonsense knowledge aware conversational modelCCM)来理解对话,并且产生信息丰富且合适的回复。本文提出的方法,利用了大规模的常识性知识图谱。首先是理解用户请求,找到可能相关的知识图谱子图;再利用静态图注意力(static graphattention)机制,结合子图来理解用户请求;最后使用动态图注意力(dynamic graph attention)机制来读取子图,并产生合适的回复。

通过这样的方法,本文提出的模型可以生成合适的、有丰富信息的对话,提高对话系统的质量。

贡献

文章的贡献有:

1)首次尝试使用大规模常识性知识图谱来处理对话生成问题;

2)对知识图谱子图,提出了静态/动态图注意力机制来吸收常识知识,利于理解用户请求与生成对话;

3)对比于其他系统,目前的模型生成的回复是最合适的、语法最正确的、信息最丰富的。

方法

Encoder-Decoder 模型

经典的Encoder-Decoder模型是基于sequence-to-sequenceseq2seq)的。encoder模型将用户输入(user postX=x_1 x_2…x_n 用隐状态 H=h_1 h_2…h_n 来表示。而decoder模型使用另一个GRU来循环生成每一个阶段的隐状态,即 640?wx_fmt=png。在解码过程中利用了注意力机制。

decoder模型根据概率分布生成了输出状态后,可以由这个状态经过softmax操作得到最终的输出:640?wx_fmt=png。可以看到,在这个经典的encoder-decoder模型中,并没有图的参与。

 

⒉模型框架

如下图1所示为本文提出的CCM模型框架。

640?wx_fmt=png

1 CCM模型框架

如图1所示,基于n个词输入,会输出n个词作为回复,模型的目的就是预估这么一个概率分布:640?wx_fmt=png,即将图信息 G 加入到概率分布的计算中。在信息读取时,根据每个输入的词x,找到常识知识图谱中对应的子图(若没有对应的子图,则会生成一个特殊的图Not_A_Fact),每个子图又包含若干三元组。

⒊知识编译模块

如图2所示,为如何利用图信息编译post的示意图。

640?wx_fmt=png

2 知识编译模块

      如图所示,当编译到“rays”时,会把这个词在知识图谱中相关的子图得到(图2最上的黄色高两部分),并生成子图的向量。每一个子图都包含了key entity(即这里的rays),以及这个“rays”的邻居实体和相连关系。对于词“of”,由于无法找到对应的子图,所以就采用特殊子图Not_A_Fact来编译。之后,采用基于静态注意力机制,CCM会将子图映射为向量,然后把词向量 w(x_t)g_i 拼接为640?wx_fmt=png,并将这个替换传统encoder-decoder中的 e(x_t) 进行GRU计算。

对于静态图注意力机制,CCM是将子图中所有的三元组都考虑进来,而不是只计算一个三元组,这也是该模型的一个创新点

⒋知识生成模块

如下图3所示,为如何利用图信息生成回复的示意图。

640?wx_fmt=png

3 知识生成模块

在生成时,不同于静态图注意力机制,模型会读取所有相关的子图,而不是当前词对应的子图,而在读取时,读取注意力最大的就是图中粉色高亮的部分。生成时,会根据计算结果,来选择是生成通用字(generic word)还是子图中的实体。

⒌损失函数

损失函数为预期输出与实际输出的交叉熵,除此之外,为了监控选择通用词还是实体的概率,又增加了一个交叉熵。

实验

实验相关细节

常识性知识图谱选用了ConceptNet,对话数据集选用了reddit的一千万条数据集,如果一个post-response不能以一个三元组表示(一个实体出现于post,另一个出现于response),就将这个数据去除。然后对剩下的对话数据,分为四类,一类是高频词,即每一个post的每一个词,都是最高频的25%的词;一类是中频词,即25%-75%的词;一类是低频词,即75%-100%的词;最后一类是OOV词,每一个post包含了OOV的词。

而基线系统选择了如下三个:只从对话数据中生成responseseq2seq模型、存储了以TransE形式表示知识图谱的MemNet模型、从三元组中copy一个词或生成通用词的CopyNet模型。

而选用metric的时候,采用了刻画回复内容是否语法正确且贴近主题的perplexity,以及有多少个知识图谱实体被生成的entity score

实验结果

如下图4所示,为根据perplexityentity score进行的性能比较,可见CCMperplexity最低,且选取entity的数量最多。并且,在低频词时,选用的entity更多。这表示在训练时比较罕见的词(实体)会需要更多的背景知识来生成答复。

640?wx_fmt=png

4 CCM与基线系统对比结果

另外,作者还采用众包的方式,来人为审核response的质量,并采用了两种度量值appropriateness(内容是否语法正确,是否与主题相关,是否有逻辑)与informativeness(内容是否提供了post之外的新信息)。如下图5所示,为基于众包的性能比较结果。

640?wx_fmt=png

5 CCM与基线系统基于众包的对比结果

从图5中可见,CCM对于三个基线系统来说,都有将近60%的回复是更优的。并且,在OOV的数据集上,CCMseq2seq高出很多,这是由于CCM对于这些低频词或未登录词,可以用知识图谱去补全,而seq2seq没有这样的知识来源。

如下图6所示,当在post中遇到未登录词“breakable”时,seq2seqMemNet都只能输出一些通用的、模棱两可的、毫无信息量的回复。CopyNet能够利用知识图谱输出一些东西,但是并不合适。而CCM却可以输出一个合理的回复。

640?wx_fmt=png

6 case study

总结

本文提出了一种结合知识图谱信息的encoder-decoder方法,引入静态/动态图注意力机制有效地改善了对话系统中response的质量。通过自动的和基于众包的形式进行性能对比,CCM模型都是优于基线系统的。

 

论文笔记整理:花云程,东南大学博士,研究方向为知识图谱问答、自然语言处理。



OpenKG.CN


中文开放知识图谱(简称OpenKG.CN)旨在促进中文知识图谱数据的开放与互联,促进知识图谱和语义技术的普及和广泛应用。

640?wx_fmt=jpeg

点击阅读原文,进入 OpenKG 博客。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/480130.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Facebook、阿里等大佬现身说法,NLP是否被高估了?

NLP (自然语言处理),利用计算机对人类的语言文字进行处理。由于语言文字是人类交流沟通的最基本方式,因此 NLP 也是最典型的 AI 领域之一。NLP 被誉为“人工智能皇冠上的明珠”。这话也许没错,但听起来难免空洞。所以我去实际问了3位从事 NLP…

玩转算法面试-第二章

1 时间复杂度分析 正常处理的数据规模,为了保险起见,可将将上面的数在除以10,防止电脑假死。 空间复杂度分析: 注意问题:递归调用是有空间代价的 3 常见的复杂度分析 翻转的代码: 选择排序的方法&a…

论文笔记(Attentive Recurrent Social Recommendation)

注意力循环社交推荐 原文链接:Attentive Recurrent Social Recommendation, SIGIR’18 原理:将用户的朋友和历史交互项按时间划分,用注意力机制整合各个时段的朋友影响和交互项影响后输入LSTM来学习动态用户向量,动态用户向量与动…

回溯算法(Backtracking Algorithm)之八皇后问题

文章目录1. 回溯算法思想2. 算法应用2.1 八皇后问题1. 回溯算法思想 前面讲过贪心算法并不能保证得到最优解,那怎么得到最优解呢? 回溯思想,有点类似枚举搜索。枚举所有的解,找到满足期望的解。为了有规律地枚举所有可能的解&am…

最全Java锁详解:独享锁/共享锁+公平锁/非公平锁+乐观锁/悲观锁

在Java并发场景中,会涉及到各种各样的锁,比如:高并发编程系列:4种常用Java线程锁的特点,性能比较、使用场景,这些锁有对应的种类:公平锁,乐观锁,悲观锁等等,这…

论文浅尝 | Generative QA: Learning to Answer the Whole Question

链接: https://openreview.net/forum?idBkx0RjA9tX传统的机器阅读理解的模型都是给定 context 和 question, 找出最有可能回答该 question 的 answer,用概率表示为 p(a|q,c),这其实是一个判别模型。判别模型在大多数任务上可以取得比生成模型更好的准确…

打破BERT天花板:11种花式炼丹术刷爆NLP分类SOTA!

星标/置顶小屋,带你解锁最萌最前沿的NLP、搜索与推荐技术文 | JayLou娄杰编 | 小轶在2020这个时间节点,对于NLP分类任务,我们的关注重点早已不再是如何构造模型、拘泥于分类模型长什么样子了。如同CV领域当前的重点一样,我们更应该…

论文笔记(A Neural Influence Diffusion Model for Social Recommendation)

神经影响传播模型为了社交推荐 原文链接:A Neural Influence Diffusion Model for Social Recommendation, SIGIR’19 原理:社交网络上应用GNN提取朋友对用户的影响候选项对用户历史交互项的注意力影响用户向量,用户向量和项向量的内积预测评…

玩转算法面试-第三章

数组中常见的问题 排序: 选择排序;插入排序;归并排序;快速排序 查找:二分查找法 数据结构:栈;队列;堆 … 二分查找法: 1964年提出,没有bug的二分查找法是在1…

回溯应用-- 0-1背包问题

文章目录1. 问题描述2. 回溯解决思路1. 问题描述 0-1背包非常经典,很多场景都可以抽象成这个问题。经典解法是动态规划,回溯简单但没有那么高效。 有一个背包,背包总的承载重量是 W kg。现有n个物品,每个物品重量不等&#xff0…

Java多线程系列(五):线程池的实现原理、优点与风险、以及四种线程池实现

为什么需要线程池 我们有两种常见的创建线程的方法,一种是继承Thread类,一种是实现Runnable的接口,Thread类其实也是实现了Runnable接口。但是我们创建这两种线程在运行结束后都会被虚拟机销毁,如果线程数量多的话,频繁…

论文浅尝 | 面向单关系事实问题的中文问答模型

来源:NLPCC 2017论文下载地址:http://tcci.ccf.org.cn/conference/2017/papers/2003.pdf动机开放领域的QA问题是一个被广泛研究的问题,而且目前这个问题并没有被很好地解决。在中文领域,相关的数据集并不多。而NLPCC开放了一个KBQ…

玩转算法值面试-第五章 -在链表中穿针引线

5-123 数组中可以随机访问,相反链表就不行 leetcode:206 反转一个链表,链表如果没有特别声明,则节点的值不发生改变 一共需要三个指针:current指向当前需要处理的指针 next指向当前需要处理的元素的下一个元素的指针…

论文笔记(SocialGCN: An Efficient Graph Convolutional Network based Model for Social Recommendation)

一个有效的基于图卷积神经网络的社交推荐模型 原文链接:SocialGCN: An Efficient Graph Convolutional Network based Model for Social Recommendation, arxiv 原理:在用户-项交互图上应用GNN来学习用户向量的表示,用户向量和项向量内积预测…

POJ 1753 Flip Game(回溯)

文章目录1. 题目1.1 题目链接1.2 题目大意1.3 解题思路2. 代码2.1 Wrong Answer代码2.2 Accepted代码1. 题目 1.1 题目链接 http://poj.org/problem?id1753 1.2 题目大意 一个黑白棋子的棋盘,一个反过来周围四个也跟着反过来(如果存在的话),颜色取反…

他读书时挣了五十万,找工作时收获阿里腾讯快手等ssp offer

今天介绍一位dalao,他之前在中科院获取了计算机硕士学位,现在是一名大厂的算法工程师。大多数人的学生生活,是在枯燥的课程和任务中度过的,但他却有所不同,乐于折腾,收获了不一样的精彩。他喜欢去公司实习&…

Java多线程系列(三):Java线程池的使用方式,及核心运行原理

之前谈过多线程相关的4种常用Java线程锁的特点,性能比较、使用场景,今天主要分享线程池相关的内容,这些都是属于Java面试的必考点。 为什么需要线程池 java中为了提高并发度,可以使用多线程共同执行,但是如果有大量线程短时间之内…

论文浅尝 | 图神经网络综述:方法及应用

论文链接:https://arxiv.org/pdf/1812.08434.pdfGNN相关论文列表链接:https://github.com/thunlp/GNNPapers近日,清华刘知远老师组在arXiv上发表了一篇关于图神经网络的综述,本次论文浅尝在分享这篇论文的基础上,对图神…

论文笔记(Social Attentional Memory Network:Modeling Aspect- and Friend-level Differences in Recom-)

社交注意记忆网络:模拟面级别和朋友级别的区别 原文链接:Social Attentional Memory Network: Modeling Aspect- and Friend-Level Differences in Recommendation, WSDM’19 1. 摘要 社会中的连接有助于提升推荐系统的性能,但是&#xff…

玩转算法之面试-第六章(栈和队列)

leetcode 20 此时栈顶的左括号和当前遍历的右括号匹配,故将左括号从栈顶pop出。 leetcode 150: leetcode 71 栈和递归的关系 递归算法:二叉树中的算法 、二叉树的前序遍历,中序遍历,后序遍历 前序遍历代码&am…