基于图注意力的常识对话生成

栏目: 数据库 · 发布时间: 5年前

内容简介:OpenKG 祝各位读者新春快乐,猪年吉祥!

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

基于图注意力的常识对话生成

来源: IJCAI 2018.

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

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

动机

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

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

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

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

贡献

文章的贡献有:

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

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

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

方法

Encoder-Decoder 模型

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

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

⒉模型框架

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

基于图注意力的常识对话生成

1 CCM 模型框架

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

⒊知识编译模块

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

基于图注意力的常识对话生成

2 知识编译模块

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

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

⒋知识生成模块

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

基于图注意力的常识对话生成

3 知识生成模块

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

⒌损失函数

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

实验

实验相关细节

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

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

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

实验结果

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

基于图注意力的常识对话生成

4 CCM 与基线系统对比结果

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

基于图注意力的常识对话生成

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

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

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

基于图注意力的常识对话生成

6 case study

总结

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

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

OpenKG.CN

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

基于图注意力的常识对话生成

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


以上所述就是小编给大家介绍的《基于图注意力的常识对话生成》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

JavaScript & jQuery交互式Web前端开发

JavaScript & jQuery交互式Web前端开发

[美]达克特(Duckett,J.) / 杜伟、柴晓伟、涂曙光 / 清华大学出版社 / 2015-6-9 / 79.80元

欢迎选择一种更高效的学习JavaScript和jQuery的方式。 你是一名JavaScript新手?或是您曾经向自己的Web页面上添加过一些脚本,但想以一种更好的方式来实现它们?本书非常适合您。本书不仅向您展示如何阅读和编写JavaScript代码,同时还会以一种简单且视觉化的方式,教您有关计算机编程的基础知识。阅读本书之前,您只需要对HTML和CSS有一些了解即可。 通过将编程理论......一起来看看 《JavaScript & jQuery交互式Web前端开发》 这本书的介绍吧!

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

html转js在线工具
html转js在线工具

html转js在线工具