Knowledge Diffusion for Neural Dialogue Generation
1 出发点
现有的话语生成模型缺少必要的外部知识,生成的话语都是一般的、短的、信息量较少的
2 贡献
提出了神经知识发散模型(Neural Knowledge Diffusion model),通过事实匹配和实体发散,使得该模型具有收敛和发散思维能力
3 网络结构
网络结构如图1所示:
主要由以下四部分构成:
1. Encoder:将输入的话语X=(x1...xNx)X=(x_{1}...x_{N_{x}})X=(x1...xNx)编码为向量h
2. Context RNN:记录对话状态,将h作为输入,输出一个向量,其为回答的生成提供指导
3. Decoder:生成回答Y=(y1...yNy)Y=(y_{1}...y_{N_{y}})Y=(y1...yNy)
4. Knowledge Retriever:执行事实匹配和相似实体发散
3.1 Encoder
为了捕获XXX的不同信息,作者将XXX分别通过两个RNN,然后取两个RNN的最后一个隐藏状态记为:hNxKh^{K}_{N_{x}}hNxK 和 hNxCh^{C}_{N_{x}}hNxC。其中 hNxCh^{C}_{N_{x}}hNxC 输入至 Context RNN 跟踪对话状态,hNxKh^{K}_{N_{x}}hNxK输入至 Knowledge Retriever 视为对X 中实体和关系的编码。
3.2 Knowledge Retriever
Knowledge Retriever从知识库中抽取一定的相关事实,并给这些事实赋予权重,它通过事实匹配和实体扩散,使模型具有收敛和发散的思维能力。Knowledge Retriever的过程构如图2:
3.2.1 Facts Matching
相关事实F={f1...fNf}F=\{f_{1}...f_{N_{f}}\}F={f1...fNf}的抽取依赖于知识库和对话历史,可以通过字符串匹配、实体连接和命名实体识别等技术抽取。如图2右边,实体“Titanic”被识别,与它相关的知识三元组被抽取,然后通关平均知识三元组中的entity embedding和relation embedding得到hf={hf1...hfNf}h_{f}=\{h_{f_{1}}...h_{f_{N_{f}}}\}hf={hf1...hfNf}作为每个事实(三元组)的向量表达。然后通过MLP计算事实和输入的相似度(相似度也就是计算得到的权重),如公式1:
对于多轮对话,实体匹配依赖于对话历史的原因是,当前话语可能并不能抽取有效的实体,例如图2中右边,“Is there any film like it?”。这时就需要对话历史去提供相应的实体例如:“Titanic”和“James Cameron”。最后将这些得到的相关事实概括为Cf,如公式2:
3.2.2 Entity Diffusion
为了检索其他相关的实体,论文通过MLP计算句子中出现的实体与知识库中的所有实体的相似度,并且取最高的NeN_{e}Ne个为相似实体E={e1...eNe}E=\{e_{1}...e_{N_{e}}\}E={e1...eNe}。然后将CsC^{s}Cs作为所有相似实体的表达,如公式3和公式4:
3.3 Context RNN
Context RNN记录对话状态并且指导Decoder做出回应,它将htCh^{C}_{t}htC、CfC_{f}Cf和CsC_{s}Cs作为输入,然后如公式5更新隐藏状态:
3.4 Decoder
将[htT;Cf;Cs][h^{T}_{t};C_{f};C_{s}][htT;Cf;Cs]表示为C,将[rf;re][r^{f};r^{e}][rf;re]表示为R。作者提出了两种Decoder如下:
3.4.1 Vanilla Decoder
会用由RNN依次生成,生成的回应Y=(y1...yNy)Y=(y_{1}...y_{N_{y}})Y=(y1...yNy)的概率如公式6和公式7:
其中,θ\thetaθ为网络的模型,sts_{t}st为RNN的隐藏状态。
3.4.2 Probabilistic gated decoder
Probabilistic gated decoder 使用了一个门控变量ztz_{t}zt去指导第t个单词是由单词生成还是由知识实体生成,如公式8:
其中,p(zt∣st;θ)p(z_{t}|s_{t};\theta)p(zt∣st;θ)由逻辑回归计算得到
在生成回应的时候,如果一个实体被过度使用,也就是出现多次,这将导致多样性下降。因此,一旦一个知识项出现多次则应该减少它的系数,以减少它出现的概率。为了跟踪知识项的覆盖范围,作者在每个时间步更新知识项系数R.作者提出了两种机制:1)Mask coefficient tracker,一旦某个知识项出现后就将它的系数调整为0,使其不能再生成。2)Coefficient attenuation tracker,计算一个衰减得分如公式9和公式10:
其中,it∈(0,1)i_{t}\in(0,1)it∈(0,1),每生成一个单词,R都会乘一个衰减系数,使得分数降低。