期望最大化(洪亮劼的专栏) 分享技术、管理、团队和业界的思考

ACL 2017文章精读(三)

我们在这里对ACL 2017文章Towards End-to-End Reinforcement Learning of Dialogue Agents for Information Access进行一个简单的分析解读。

全文PDF

代码地址

这篇文章的作者群来自于微软研究院、卡内基梅隆大学和台湾国立大学。文章中还有Lihong Li和Li Deng(邓力)这样的著名学者的影子。第一作者的Bhuwan Dhingra是在卡内基梅隆大学William W. Cohen和Ruslan Salakhutdinov的博士学生。两位导师都十分有名气。而这个学生这几年在NLP领域可以说是收获颇丰:在今年的ACL上已经发表2篇文章,之前在今天的ICLR和AAAI上都有论文发表。

这篇文章的核心思想是如何训练一个多轮(Multi-turn)的基于知识库(Knowledge Base)的对话系统。这个对话系统的目的主要还是帮助用户从这个知识库中来获取一些信息。那么,传统的基于知识库的对话系统的主要弊病在于中间有一个步骤是对于“知识库的查询”。也就是说,系统必须根据用户提交的查询(Query),进行分析并且产生结果。这一步,作者们称为“硬查询”(Hard-Lookup)。虽然这一步非常自然,但是这一步阻断了(Block)了整个流程,使得整个系统没法“端到端”(End-to-End)进行训练。并且,这一步由于是“硬查询”,并没有携带更多的不确定信息,不利于系统的整体优化。

这篇文章其实就是想提出一种“软查询”从而让整个系统可以得以“端到端”(End-to-End)得进行训练。这个新提出的“软查询”步骤,和强化学习(Reinforcement Learning)相结合,共同完成整个的回路,从而在这个对话系统上达到真正的“端到端”。这就是整个文章的核心思想。

那么,这个所谓的“软查询”是怎么回事?其实就是整个系统保持一个对知识库中的所有本体(Entities)所可能产生的值的一个后验分布(Posterior Distribution)。也就是说,作者们构建了这么一组后验分布,然后可以通过对这些分布的更新(这个过程是一个自然获取新数据,并且更新后验分布的过程),来对现在所有本体的确信度有一个重新的估计。这一步的转换,让对话系统从和跟知识库直接打交道,变成了如何针对后验分布打交道。而显然,从机器学习的角度来说,和分布打交道往往容易简单很多。具体说来,系统的后验分布是一个关于用户在第T轮,针对某个值是否有兴趣的概率分布。

整个对话系统是这样运行的。首先,用户通过输入的对话(Utterance)来触发系统进行不同的动作(Action)。动作空间(Action Space)包含向用户询问某个Slot的值,或者通知用户目前的结果。整个系统包含三个大模块:一个Belief Trackers、一个Soft-KB Lookup以及一个Policy Network。

Belief Trackers的作用是对整个系统现在的状态有一个全局的掌握。这里,每一个Slot都有一个Tracker,一个是根据用户当前的输入需要保持一个对于所有值的Multinomial分布,另外的则是需要保持一个对于用户是否知道这个Slot的值的置信值。文章中奖了Hand-Crafted Tracker和Neural Belief Tracker(基于GRU)的细节,这里就不复述了。有了Tracker以后,Soft-KB Lookup的作用是保持一个整个对于本体的所有值得后验分布。最后,这些后验概率统统被总结到了一个总结向量(Summary Vector)里。这个向量可以认为是把所有的后验信息给压缩到了这个向量里。而Policy Network则根据这个总结向量,来选择整个对话系统的下一个动作。这里文章也是介绍了Hand-Crafted的Policy和Neural Policy两种情况。我们就不复述了。

整个模型的训练过程还是有困难的。虽然作者用了REINFORCE的算法,但是,作者们发现根据随机初始化的算法没法得到想要的效果。于是作者们采用了所谓的Imitation Learning的方法,也就是说,最开始的时候去模拟Hand-Crafted Agents的效果。

在这篇文章里,作者们采用了模拟器(Simulator)的衡量方式。具体说来,就是通过与一个模拟器进行对话从而训练基于强化学习的对话系统。作者们用了MovieKB来做数据集。总体说来整个实验部分都显得比较“弱”。没有充足的真正的实验结果。

可以说整个文章真正值得借鉴主要还是那个“软查询”的思想。整个流程也值得参考。但是训练的困难可能使得这个系统作为一个可以更加扩展的系统的价值不高。本文值得对对话系统有研究的人泛读。