论文笔记:基于外部知识的会话模型Learning to Select Knowledge for Response Generation in Dialog Systems
Learning to Select Knowledge for Response Generation in Dialog Systems
1 出发点
-
传统的Seq2Seq模型趋向产生一般的且信息含量较少的回答。
-
现有的具有外部知识的模型中,很少有人证明他们的模型有能力将适当的知识纳入生成的回答中。
2 论文贡献
- 在训练阶段,利用后验知识来实现有效的知识选择和整合,并且指导先验知识分布的训练。在测试阶段利用学习好的先验知识去选择合适的知识并产生具有更多信息的回答。
- 对比其他的模型效果很好(废话)
3 模型结构
图1为网络的整体结构:
3.1 Encoder
Utterance Encoder和Knowledge Encoder都由双向GRU组成,但是两个双向GRU参数并不是共享的。
3.1.1 Utterance Encoder
输入:对话历史X
输出:x,是双向GRU产生的两个方向的最后一个单词的隐藏状态的拼接
3.1.2 Knowledge Encoder
输入1:外部知识{K1…KN}
输出2:{k1…kN}, 是双向GRU产生的两个方向的最后一个单词的隐藏状态的拼接
输入2:目标话语Y
输出2:y,是双向GRU产生的两个方向的最后一个单词的隐藏状态的拼接
(note:训练时有Y,测试时没有)
3.2 Knowledge Manager
Knowledge Manager的目的是选出合适的Ki,图2为Knowledge Manager的详细结构:
输入:上一步得到的x, {k1…kN}, y
操作:1. 通过后验知识概率计算选取每个ki 的概率,如公式1:
MLP代表全连接层,点积的作用是计算ki 与 [x;y] 之间的关系。因为该条件概率是以 x, y 为条件的,所以视为后验知识概率。
2. 通过先验知识概率计算选取每个ki 的概率,如公式2:
在训练阶段使用公式1去选取ki(训练阶段也会计算公式2但是不作为结果输出,仅作为KL_loss的输入),在测试阶段使用公式2选取ki(因为测试的时候没有Y)。因此就需要公式1与公式2的能力相同,所以在训练阶段添加一个KL_loss使得两个条件概率的输出相似,如公式3:
输出:选取的ki
3.3 Decoder
输入:st-1 :decoder的上一个隐藏状态,yt-1 :decoder的上一个输出,ct :由x得到的基于注意力机制的上下文向量
操作,作者提出了两种方式分别为:
1. Standard GRU with Concatenated Inputs,如公式4:
2. Hierarchical Gated Fusion Unit (HGFU),如公式5、6、7:
输出:在每次得到st 之后接一个softmax层得到最后的输出 yt
4 损失函数
- 第一个损失函数为3.2节中的KL_loss
- 第二个为交叉熵损失函数(作者称为负log似然函数),如公式8:
- 第三个损失函数为词袋损失函数,旨在通过强制知识和目标回答之间的相关性来确保采样知识ki的准确性。如公式9、10、11:
5 扩展阅读
- A knowledge-grounded neural conversation model
- Commonsense knowledge aware conversation generation with graph attention
- Knowledge diffusion for neural dialogue generation