Knowledge Diffusion for Neural Dialogue Generation

Knowledge Diffusion for Neural Dialogue Generation

论文:Shuman Liu, Hongshen Chen, Zhaochun Ren, Yang Feng, Qun Liu, Dawei Yin:Knowledge Diffusion for Neural Dialogue Generation. ACL (1) 2018: 1489-1498
论文链接:http://www.nlp.org.cn/2017/Admin/kindeditor/attached/file/20190116/20190116234946_85260.pdf

1 Abstract

没有利用知识来引导的对话系统,往往会产生简短、笼统、没有意义的回复,这篇文章提出了一个NKD模型将知识融入到对话系统中,模型不仅能匹配出用户输入中的事实还能发散到其他的实体中。利用事实匹配实体发散,保证整个对话系统生成的对话能在知识库中发散收敛

2 Introduction

Although answering enquirers is essential for dialogue systems, especially for task-oriented dialogue systems (Eric et al., 2017), it is still far behind a natural knowledge grounded dialogue system, which should be able to understand the facts involved in current dialogue session (so-called facts matching), as well as diffuse them to other similar entities for knowledge-based chitchats (i.e. entity diffusion):

虽然对话系统中问答是至关重要的,特别是对于面向任务的对话系统(Eric et al ., 2017),但它还远达不到一个由自然知识建立的对话系统,该对话系统应该能够理解事实参与对话会议(所谓事实匹配),以及扩散给其他类似的实体知识型闲聊(即实体扩散):

  1. Facts matching:在对话系统中,将话语与确切的事实相匹配要比明确的事实询问回答困难得多。有些话语是与事实相关的查询,它们的主语和关系很容易被识别,而有些话语的主语和关系比较模糊,这就导致了准确的事实匹配困难。表1给出了一个例子:第1项和第2项谈论的是电影《泰坦尼克号》,而第1项是典型的问答对话,2是一种与知识相关的闲聊,没有任何明确的关系,很难为第2项定义准确的事实匹配。
  2. Entity diffusion:对话通常从一个实体转移到另一个实体。在表1中,第3项和第4项的话语是关于实体《泰坦尼克号》的,但是系统回复的实体是其他类似的电影,往往这种实体扩散关系很少被当前的知识三元组所捕获。第3项的回复表明,这两个实体为《泰坦尼克号》和《魂断蓝桥》与爱情故事有关联。第4项暗示了另一部类似的《泰坦尼克号》沉船电影。
    在这里插入图片描述
    针对上述挑战,本文提出了一种神经知识扩散(NKD)对话系统,使对话生成在知识库上具有收敛性和发散性思维的能力,同时处理基于事实的问答和基于知识的闲聊。NKD学会将话语与相关事实相匹配;匹配的事实然后扩散到相似的实体;最后,模型生成关于所有检索到的知识项的回复

3 Model

模型主要由4部分组成:
在这里插入图片描述

3.1 Encoder

为了从不同的角度捕捉信息,我们学习了两个独立的RNNs的话语表征,结果是两个最后的隐藏状态 h N X C h^C_{N_X} hNXC h N X K h^K_{N_X} hNXK 。隐藏状态 h N X C h^C_{N_X} hNXC 作为上下文的输入,利用RNN跟踪对话状态。 h N X K h^K_{N_X} hNXK 用于知识检索,用于对输入话语中的知识实体和关系进行编码。

3.2 Knowledge Retriever

知识检索器从知识库中提取一定数量的事实,并指定它们的重要性。通过事实匹配和实体扩散,使基于知识的神经对话系统具有收敛和发散的思维能力。对话系统中的知识由三元组组成:subject - relation - object,其中 subject 和 object 都是实体

3.2.1 Facts Matching
  1. 给定输入话语 X X X h N X K h^K_{N_X} hNXK,从知识库和对话历史中提取相关事实。通过字符串匹配、实体链接或命名实体识别获得语句中的实体 F = { f 1 , f 2 , . . , f N f } F=\{f_1,f_2,..,f_{N_f}\} F={f1,f2,..,fNf},通过平均实体向量和关系向量,这些实体和知识三元组被转换成向量表示 h f = { h f 1 , h f 2 , . . , h f N f } h_f=\{h_{f_1},h_{f_2},..,h_{f_{N_f}}\} hf={hf1,hf2,..,hfNf}
  2. 利用非线性函数或子神经网络计算事实与输入话语之间的相关系数 r f r_f rf,其取值范围为0 ~ 1。这里,我们应用一个多层感知器(MLP): r k f = M L P ( [ h N X K , h f k ] ) r_k^f=MLP([h^K_{N_X},h_{f_k}]) rkf=MLP([hNXK,hfk])
  3. 对于多轮对话,前面语句中的实体也被继承和保留,如图2中的虚线所示。例如,在图2(右)的第二句话中,没有从输入语句中提取新的事实。因此,有必要对历史实体进行记录和保留,通过事实表示的加权平均将事实总结为相关的事实表示 C f C^f Cf : C f = ∑ k = 1 N f r k f h f k ∑ k = 1 N f r k f C^f=\frac{\sum_{k=1}^{N_f}r_k^fh_{f_k}}{\sum_{k=1}^{N_f}r_k^f} Cf=k=1Nfrkfk=1Nfrkfhfk
3.2.2 Entity Diffusion
  1. 为了检索对话话语中通常没有提及的其他相关实体,我们扩散匹配的事实。我们通过一个多层感知器计算知识库中的实体(除了之前话语中出现的实体)与相关事实表示之间的相似性,得到相似性系数re,范围从0到
    1: r k e = M L P ( [ h N X K , h f k , e k ] ) r_k^e=MLP([h^K_{N_X},h_{f_k},e_k]) rke=MLP([hNXK,hfk,ek]) e k e_k ek 是实体的词向量
  2. 选择相似度最高的 n n n 个实体 E = { e 1 , e 2 , . . , e N e } E=\{e_1,e_2,..,e_{N_e}\} E={e1,e2,..,eNe},计算相似的实体表示 C s C^s Cs 形式化为: C s = ∑ k = 1 N e r k e e k ∑ k = 1 N e r k e C^s=\frac{\sum_{k=1}^{N_e}r_k^ee_k}{\sum_{k=1}^{N_e}r_k^e} Cs=k=1Nerkek=1Nerkeek
    在这里插入图片描述
    在图2中的示例中,第一轮对话时,输入话语中直接在事实匹配中具有较高的关联系数。当一个事实被匹配时,直觉上它不需要实体扩散。在这种情况下,从图2中可以看出,“实体扩散”中的实体相似性较低。在第二轮中,没有与话语匹配的三元组,而实体“泰坦尼克”的相关度要高得多,接着实体发散到相似实体:《魂断蓝桥》,并且相似权值比第一轮相对较高。
3.3 Context RNN

上下文RNN记录话语层次的对话状态。它包括话语表征和知识表征。上下文RNN的隐藏状态更新为: h t T = R N N ( h t C , [ C f , C s ] , h t − 1 T ) h_t^T=RNN(h_t^C,[C^f,C^s],h^T_{t-1}) htT=RNN(htC,[Cf,Cs],ht1T)

3.4 Decoder

在这里插入图片描述
解码器通过以 h t T , C f , C s h^T_t , C^f,C^s htT,Cf,Cs 为条件顺序生成回复。设 C C C h t T , C f , C s h^T_t , C^f,C^s htT,Cf,Cs 的级联。知识项系数 R R R 是关联系数 r f r^f rf 和相似系数 r e r^e re 的级联。文章中介绍了单词生成器的两种变体:
Vanilla decoder:其中 y t y_t yt 为检索到的知识项的词汇表或对象实体的嵌入, s t s_t st 为解码器RNN的隐藏状态
在这里插入图片描述
Probabilistic gated decoder : 使用门控变量来指示单词是由词汇表生成的还是由知识实体生成的。
在这里插入图片描述
在响应生成期间,如果一个实体被过度使用,回复多样性将会降低。因此,当一个知识项在回复中出现时,当一个知识项出现多次时,相应的系数应该减小。为了跟踪知识项的覆盖率,我们在每一步更新了知识项系数
R R R。还探索了两种覆盖跟踪机制:

  1. Mask coefficient tracker:直接将所选知识项的系数降为0,以保证再也不会被选为回复的字。
  2. Coefficient attenuation tracker:基于 s t , R 0 , R t − 1 , y t − 1 s_t, R_0,R_{t-1}, y_{t-1} st,R0,Rt1,yt1计算一个衰减得分, i t i_t it 从0到1并逐渐减小,并更新系数: i t = D N N ( s t , R 0 , R t − 1 , y t − 1 ) i_t=DNN(s_t, R_0,R_{t-1}, y_{t-1}) it=DNN(st,R0,Rt1,yt1) R t = i t ∗ R t − 1 R_t=i_t *R_{t-1} Rt=itRt1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值