论文《A Knowledge-Grounded Neural Conversation Model》来自于Information Sciences Institute和微软研究院,第一作者为为博士生Marjan Ghazvininejad,该工作为他在微软研究员访问时做出。
如今,端到端的神经网络模型已经可以在对话系统中产生十分自然的对话内容。然而,现有的神经网络对话模型仍然存在一个问题:如下图所示,对于一个用户的输入,现有的系统无法考虑对话外部事实信息或者用户对于实体的观点,使得其产生的对话内容十分样式化,无法很好地在产生特定任务下的对话。
在本文中,不同于现有模型通过填空的方式考虑外部事实,作者提出了一个完全数据驱动的模型来生成带有知识的对话内容。该模型是现有端到端神经网络模型的一个扩展,通过选择基于对话历史或者外部事实产生对话内容,使得模型可以应用于开放领域。
作者提出的完全数据驱动的带有知识的对话模型如下图所示。
首先该模型拥有一个世界事实的集合(定义为一个以实体名字为索引的纯文本集合)。
其次,给定对话系统的历史内容或者输入的源句子S,该模型通过如关键词匹配或者其他更先进的技术(如实体链接和命名实体识别)从S中选择出关注点(一个或者多个实体)来作为链接事实的查询值。
然后该模型使用查询值从世界事实的集合中选择出和本次对话相关的事实集合
最后该模型对话系统的历史内容或者输入的源句子S输入到对话的encoder中,将相关事实集合输入到事实的encoder中,最后对两个encoder输出的状态输入到decoder中产生最终的对话内容。
下面我们详细介绍模型的encoder和decoder
1. 对话的encoder和decoder采用的是RNN,RNN的单元选择的是GRU
2. 事实的encoder和MemoryNetwork的结构非常相似,包含一个储存事实的辅助memory。具体来讲,给定一个输入的句子和一个和对话历史相关的事实集合,一个RNN encoder首先逐词读入输入的句子对隐状态进行更新产生输入句子的表示u。这里我们令ri为事实fi的词袋表示,那么我们有:
其中为模型的参数,公式5为最终的输出。
该模型通过多任务学习进行学习,包括
NOFACTS task:使用传统的对话系统的训练问答对进行学习,不学习模型中事实encoder的部分
FACTS task:使用其他任务包含事实集合的问答对对整个模型进行学习。
AUTOENCODER task:和FACTS task非常相似,将其训练问答对的回答内容进行替换得到,目标在于使得对话内容更具有意义。
进行多任务学习的好处在于利用传统对话系统的数据进行预训练,还可以综合利用不同任务的训练数据。
原文链接:
http://mp.weixin.qq.com/s/n5VQwPRF5EWGAhejI51l2A