本文在传统的基于数据驱动的对话系统中引入了背景知识,试图增加对话回复的有效信息。AAAI2018
paper link
Introduction
目前基于纯数据驱动的端到端对话系统取得了很大的成功,但是缺乏背景知识的支持,生成的回复信息量不足。如下图所示,纯对话驱动的对话系统很难给出事实内容,无法引入实体到回复中。
本文的目标是使对话系统生成回复更加相关并且包含更大的有用信息,关键在于如何有效地利用外部知识(例如Wikipedia, book reviews on Goodreads, and restaurant reviews on Foursquare)。本文提出了一个基于背景知识的数据驱动的对话生成模型,同时基于对话历史和相关背景事实进行建模,具有很强的扩展性。实验表明,该模型与seq2seq相比在提供有用信息方面有了很大的改善。
To the best of our knowledge, this is the first large-scale, fully data-driven neural conversation model that effectively exploits external knowledge.
Grounded Response Generation
主要有以下过程:
- 首先要从大规模背景知识中(world facts)提取出与对话历史相关的facts : $F=(f_{1},…,f_{k})$ 。(作者直接用关键词检索,也可以使用NER)
- 分别对对话历史和facts进行编码,通过memory network(作者没有使用multi-hop,实际只有一层),最终输入到解码端。
作者还使用了多任务学习:
- 一种是纯数据驱动,无背景知识(S,R): S代表对话历史,R代表回复
- 一种是带有背景知识 $((f_{1},…,f_{k},S),R)$
多任务学习的优势在于:
- 允许基于纯数据驱动来训练encoder,decoder,相当于warm start
- 在第二个任务中如果将R替换成$f_{i}$,则任务二类似于autoencoder,使得生成的回复更有内容
Dialog Encoder and Decoder
编码器和解码器是两个独立的GRU RNN,互相不共享权重和词向量。
Facts Encoder
Facts Encoder 本质上是一个memory network,但是只有一跳(层)。
形式化定义如下:给定对话历史 $S=\{s_{1},s_{2},…,s_{n}\}$ 和事实集合 $F=\{f_{1},…,f_{k}\}$(这里指已经抽取之后的),先使用RNN编码整个对话历史(当作一个long sentence),得到所有时间步的隐层状态相加得到对话历史的表示 u:
其中u是一个d维向量,$r_{i}$是$f_{i}$的词袋向量,维度为v,$A,C\in R^{d \times v}$。
然后将$\widetilde{u}$作为decoder的隐层状态初始化,生成回复。
Experiments
Datasets
_Details in A Knowledge-Grounded Neural Conversation Model_
Multi-Task Learning
- FACTS task: $\{(f_{1},…,f_{k},S),R\}$
- NOFACTStask: (S, R)
- AUTOENCODERtask: $\{(f_{1},…,f_{k},S),f_{i}\}$
作者发现autoencoder任务有助于在回复中引入事实内容信息。
Decoding and Reranking
模型在解码端使用了改进的Beam Search,在选取topN的时候考虑以下三种因素:
- 解码器的似然概率 $P(R|S,F)$
- $P(S|R)$ :作者单独训练了一个Seq2Seq模型,但是输入是responses,输出是S(没有facts)
- 减少生成通用回复
最终的得分函数为:
Results
Conclusion
本文是利用背景知识来改善对话系统中的大量无意义、通用答复,融入更多的实体,使得对话系统更贴合真实实际,基于本文,DSTC7上有一个相关评测,主要研究的是对话系统中引入背景知识。