Neural Response Generation——关于回复生成工作的一些总结

一、背景

1、两类方法

如前言所述,目前解决对话问题的方法是基于检索式的和基于生成式的两种。就检索式方法而言,其致力于建立模型刻画对话中的上文和下文之间的对应关系,通常的做法是先利用检索系统以对话上文为输入,得到一定数量的下文候选集,再对上下文进行大量的特征抽取,然后训练排序模型(Learning to rank)对候选集进行重排。由于这些对话都是数据集中真实存在的,所以检索式方法最终返回的结果在语言流畅性、语法正确性上有极高的保证,但由于数据集本身大小的限制,面对一个新的用户输入,可能无法得到一些合适的候选回复,从而无法做出合适的回答。

而生成式方法则不同,借助于深度学习的相关研究,模型可以对对话本身进行学习,从而在面对用户输入时,生成新的回复。生成式方法大多使用的是Seq2seq的模型框架,即将对话的上下文看作两个序列,通过对上文序列进行编码,再解码出下文。借助于GAN和VAE等生成式模型的研究,有学者将其应用于对话系统,也取得了较好的效果。

2、基础模型

本文之后介绍的论文及模型大多以Seq2seq模型为基础,配合以注意力机制(Attention Mechanism),在此进行一些简单的介绍。

备注:本小节参考了李军毅在RUC智能情报站专栏中《从文本生成看Seq2Seq模型》一文,若想对Seq2seq模型有进一步了解可移步从文本生成看Seq2Seq模型。

2.1 Seq2seq模型

该模型基本结构如下:

Neural Response Generation——关于回复生成工作的一些总结

图1:Seq2seq模型的基本结构

该图摘自Google2015年在ICML Deep Learning Workshop[1],如图所示,Seq2seq模型主要分为两个模块:编码模块(Encoder,图中Context部分)和解码模块(Decoder,图中Reply部分)。这两个模块通常使用RNN(包括LSTM和GRU)来实现。编码模块的作用是将对话的上文编码成固定长度的向量,而解码器的作用是利用该向量解码出对话的下文。图中ABC为上文句子中的三个单词,经过编码器编码后送入解码器中。解码器的第一个输入通常是一个开始标识符(或上文的结束符,即图中的),然后逐个生成下文的单词WXYZ。

这里需要注意的是,Seq2seq模型中的解码器在训练和预测阶段不太一样。在训练阶段,我们同时使用对话的上下文,Decoder每个时刻的输入都是我们给定的下文,利用每个时刻的输出与给定下文的不同来计算损失(loss),再用反向传播的方法对模型进行训练。但在预测阶段,我们希望给出上文让模型来生成下文,所以Decoder每个时刻的输入都是它自身上个时刻的输出(除了第一个开始标识符)。

2.2 注意力机制(Attention Mechanism)

从图中也可以看到,Decoder实际上只接受了Encoder传来的一个固定大小的向量,一个很自然的想法是,这唯一一个向量是否真的能编码上文的所有信息,这时,我们就需要介绍一下注意力机制。

这里十分推荐关于Attention Mechanism的两大经典论文,即Bahdanau Attention[2]和Luong Attention[3]。这里我们用Bahdanau Attention来介绍一下Attention的基本思想。

Neural Response Generation——关于回复生成工作的一些总结

图2:Bahdanau Attention

该图的下半部分实际上是Encoder(这里用的是双向RNN),而上半部分则是Decoder(只画了两个时刻)。可以看到,Decoder端在每个时刻生成输出时,不再只使用Encoder最后一个时刻的输出了,即这种方法打破了Encoder只能传一个固定长度向量的限制。Decoder实际上可以获得Encoder每个时刻的信息,通过每个时刻的信息加权求和得到的向量来进行解码。这样做的一大好处是,对每个时刻而言,可以使用的信息是不同的。这也非常符合直观感觉,在对话中,我们回答中的每个词肯定都是和上文中的部分词相关的,Attention即是这种相关性的一种体现。


二、相关模型介绍

在这一部分,将介绍对话生成中的一些模型,笔者的重点在于阐述每个模型想要解决的问题以及模型的创新性,实际上每个模型都在实验中取得了很好的效果,但对于实验部分不做任何的描述,如果有对实验感兴趣的读者可以在参考文献中前往原文阅读。之后介绍的模型按照解决的问题主要分为三大类:第一类是解决如何生成回复,第二类是解决如何生成更有质量的回复,第三类则是带有上下文的对话以及自动写诗等相关模型。

1、如何生成回复

1.1 NRM(Neural Responding Machine)[4]

该模型是李航老师组在ACL15上提出的。其模型结构如下图:

Neural Response Generation——关于回复生成工作的一些总结

图3:NRM模型结构

这篇文章的动机是将Seq2seq模型这种Encoder-Decoder的框架引入到短文本对话问题中,其对比的模型是统计机器翻译模型(SMT-based)和检索式模型。图中的左侧部分是Encoder,右侧部分是Decoder,可以看出,其使用了两种Encoder,即global encoder和local encoder。结合背景部分的介绍不难发现,这里的global encoder即是普通的RNN模型,用其最后一个时刻的输出。而local encoder则是一个引入了Attention的RNN模型。这里,作者将这两种RNN模型进行了结合,方法是将global encoder最后一个时刻的输出分别与local encoder中的输出进行拼接,再将Attention应用于拼接得到的向量上。这样做的考虑是,global encoder只使用最后一个时刻的输出,得到的向量是对整个句子的一种概括,可以说是比较偏向全局信息的一种编码。单单从这种编码里解码出所有的信息会比较难。而local encoder则很好的弥补了这一点,通过Attention机制的引入,让局部信息也能够得以使用。论文中也分别对单独使用global encoder和local encoder以及混合使用两种encoder的模型进行了比较,得出的结论是同时使用这两种encoder,生成的结果会更好。而相比于检索式模型和统计翻译模型,生成式模型取得了更好的效果。

1.2 DCGM-I 和 DCGM-II(Dynamic-Context Generative Model)[5]

该模型与上文模型所解决的问题以及使用的数据集的构造都有所不同。该模型试图解决在给定一个上下文信息的情况下,对话的生成问题,所以其使用的数据集是三元组的形式,包含一个上下文,一个信息,以及一个回复。

Neural Response Generation——关于回复生成工作的一些总结

图4:三元组数据集

这两个模型的结构示意图如下:

Neural Response Generation——关于回复生成工作的一些总结

图5:DCGM-I和DCGM-II模型结构


图中所示的是Decoder端的情况,解码时,每个时刻DCGM-I使用一个矩阵与上一时刻使用的向量进行相乘,作为当前时刻生成所使用的向量。这实际上与RNN的循环结构有些类似,但并没有直接使用RNN作为Encoder。在DCGM-I中, b 表示一个0-1向量,其中在context和message中出现过单词的位置都是1,其余为0。在初始时刻,使用 W 与 b 相乘,得到初始时刻使用的向量,与隐含层状态一起生成初始时刻的单词。而在后续时刻,分别使用 W 与上一时刻使用的生成向量相乘得到第i时刻使用的向量,再与隐含层状态一起生成该时刻的单词。而DCGM-II则稍微出现了变化,并没有将context和message的信息一开始就融合成为一个 b向量而是分别作为两个向量与 W 相乘,之后再进行拼接操作,使用该拼接得到的向量循环运算并送往下个时刻生成单词。该模型的一大特点是没有使用RNN作为Encoder,即没有将上文编码为固定长度的向量,而是在Decoder每个时刻生成时,不断将上文(包含context和message)的信息重新计算作为该时刻的输入进行生成工作。这样做的好处是每个时刻生成用到的输入信息是不同的,但又与上文信息息息相关。

2、如何生成更有质量的回复

如果你使用过Seq2seq模型,会发现生成得到句子中,有很多都是非常泛化性的句子,这些句子虽然可以勉强作为上文的一个回复,但实在是没有什么实质性信息。这也是该模型面临的一个很大的问题,即无法生成富含内容的、有趣的回复。针对这个问题,以下几个模型分别从多个角度对Seq2seq模型进行了改进,分别取得了一定的效果。

2.1 MMI-antiLM和MMI-bidi[6]

该模型是李纪为老师在HLT-NAACL16上提出的。与其他模型不同,他认为解决回复过于泛化的问题应当着力于目标函数。从标准的Seq2seq模型的目标函数来看,其实际上是在找以上文为条件下最大概率的下文,写成数学形式即为

Neural Response Generation——关于回复生成工作的一些总结

其中S为上文序列,T为下文序列。从这个式子本身就可以看出其无法过滤一些高频率的下文T。于是这里引入最大交互信息(MMI),即:

Neural Response Generation——关于回复生成工作的一些总结

直观的来看,这个式子对上一式子做出了一定的惩罚,即减去了一项。而被减去的这一项恰好是T本身的概率,乍一看这个模型非常的好,同时考虑了生成最大概率的下文以及该下文本身出现的概率。这里引入一个参数稍稍将式子进行变形,得到:

Neural Response Generation——关于回复生成工作的一些总结

即通过这个参数我们可以人为控制对T概率的惩罚力度,我们将使用该式子作为目标函数的模型记为MMI-antiLM。有过概率论基础的同学也不难发现,如果我们引入条件概率公式:

Neural Response Generation——关于回复生成工作的一些总结

可以将上式变形为:

Neural Response Generation——关于回复生成工作的一些总结

使用该式子作为目标函数的模型记为MMI-bidi。

这里我们首先看第一个模型,MMI-antiLM。其名是因为式子看起来是对语言模型进行了一个惩罚,有点逆-语言模型的意思。这个式子看起来非常好,但第二项的引入既保留了低概率的回复也保留了错误的(不符合语法的)回复。理论上如果引入的参数值小于1,错误的回复应当被第一项所惩罚,但实际使用时发现,还是会有错误的回复逃过了惩罚。针对这个问题,作者提出,对第二项作一些修改,将

Neural Response Generation——关于回复生成工作的一些总结

调整为:

Neural Response Generation——关于回复生成工作的一些总结

而其中

Neural Response Generation——关于回复生成工作的一些总结

背后的想法是,对语言模型而言,在前面生成的词会极大的影响后面生成的词(条件概率),所以前面生成的词应当获得准确的惩罚,以保证句子的多样性,而后面的句子相对来说影响力会小一些,应当更多的让条件概率发挥作用以保持其正确性。事实上我们也发现,错误的回复往往是在靠后的位置出现语法错误,特别是长句子。于是这一模型最终变化为使用如下的式子作为目标函数:

Neural Response Generation——关于回复生成工作的一些总结

其次我们来看MMI-bidi模型。这里稍微回顾一下其目标函数:

Neural Response Generation——关于回复生成工作的一些总结

可以看到,无法直接使用该目标函数来生成回复。因为第二项需要在完成T的生成后才能够计算出来,由于T的搜索空间是庞大的,探索所有的可能性是不现实的。所以在实际使用中,将该模型分为两个步骤来看,先生成第一项下概率最大的一些回复,形成一个大小为N的列表,再对列表中的回复用第二项进行重排序。因为第一项即普通的Seq2seq模型生成的结果,其较为符合语法结构,再使用第二项进行重拍后,得到的结果是比较好的。

在实际使用时,这两个模型都引入了其他因子来综合考虑生成句子的长度。最终结果也表明这两个模型相比于标准的Seq2seq模型都能取得更好的结果,但这二者在不同的数据集上的效果存在一定的差异。

2.2 TA-Seq2seq(Topic Aware Seq2seq)[7]

除了像上文一样对目标函数进行修改外,也有学者对Seq2seq模型的结构进行了一些改进,TA-Seq2seq是其中之一。其模型示意图如下:

Neural Response Generation——关于回复生成工作的一些总结

图6:TA-Seq2seq模型结构

与之前提到的Seq2seq+Attention相比,作者引入了新的Topic Attention来强化主题的作用。从图中可以看到,这一Attention是作用在Topic Words上的。而这些Topic Words则是使用Twitter-LDA[8]训练得到的。通过预训练主题模型,能够得到每个上文对应的主题信息,以及包含的一定数量的主题词。在进行回复生成时,同时考虑主题词的作用,从而使生成的回复更加有趣,内容更加丰富。此外,右侧部分可以看到,作者对Decoder端生成词的概率进行了一定调整,这里的想法是,我们自然的认为生成的句子中这些主题词出现的概率应当大一些,正如图中所示,上文在说自己皮肤干燥的问题,主题词是一些皮肤、干燥、脸等相关词汇,当这些词汇出现在回复中时,既与上文息息相关,又增加了回复的信息量,所以对这些词进行概率加成会取得一定的效果。实验结果表明,这种在Encoder端和Decoder端同时考虑主题词的方法能够生成更加有趣、更有具有内容的回复。

2.3 Seq2BF(Sequence to Backward and Forward Sequences)[9]

在修改模型结构方面,COLING16上提出的Seq2BF也是非常棒的一种想法。其模型结构如下:

Neural Response Generation——关于回复生成工作的一些总结

图7:Seq2BF模型结构

从图中可以看出,这一模型具有三个模块。第一个模块是关键词预测模块,作者使用PMI这一共现频率作为关键词选择的依据。PMI是在整个数据集上计算得到的每个词和一些关键词的共现频率。通过这种方法,给定一个上文时,就可以得到与其最相关的关键词了。与之前的模型不同,该模型希望显式的控制生成,保证关键词出现在回复中。背后的想法是很直观的,只要保证了该关键词一定在回复中出现,该回复的信息量就得到了保证。具体的做法是,分两步生成回复,先以该关键词为首词反向生成该关键词之前的一些词,再将这生成的半个句子,倒过来送入另一个模型中,继续生成后续的词,最终得到一个完整的句子。实验表明,这种方法生成的句子内容的丰富度得到了提高。这种方法与上述的引入主题的方法形成了一个很好的对比,一个是通过隐式的引入主题词控制生成的内容,一个通过显式的加入关键词来控制生成的回复,两种方法都取得了很好的效果。

3、古诗生成与多轮对话

这一部分将会介绍一篇百度自动写诗的论文与几篇多轮对话的论文,其都是与对话生成息息相关的工作,使用的方法对解决单轮对话生成也具有一定的借鉴意义。

3.1 PPG(Poetry Generation with Planning based Neural Network)[10]

该模型翻译为中文是基于规划的古诗生成模型,其框架如下:

Neural Response Generation——关于回复生成工作的一些总结

图8:PPG模型框架

可以看到,整个模型分为两大部分,第一部分是规划模块,在用户输入了一个句子后,先对该句子进行意向的抽取,如果意向不足则对该主题的意向进行扩充,从而得到指定数量的意向作为之后生成句子的依据。如图可以看到,由“春天的桃花开了”最终可以获得四个相关意向:春天、桃花、燕、柳。之后生成部分的模型如下:

Neural Response Generation——关于回复生成工作的一些总结

图9:PPG生成部分模型结构

如果抛开左边意向部分不看,左边即是Seq2seq+Attention模型,而左边恰好是意向引入的模块,其使用了一个单独的RNN序列将意向进行编码,得到的结果与上一句诗一起通过Attention机制进行生成。当然,第一句诗的生成只使用了左边意向部分的编码。这样生成得到的诗在韵律、流畅度、语义等方面都有一定的保证,取得了很好的结果。

3.2 HRED(Hierarchical Encoder-Decoder)[11]与VHRED (Hierarchical Latent Variable Encoder-Decoder)[12]

这两个模型均为Benjio所在的小组先后两年在AAAI上提出的。后者是在前者的基础上进行进一步改进得到的。这里首先介绍HRED:

Neural Response Generation——关于回复生成工作的一些总结

图10:HRED模型结构

这里需要说明的时,该模型解决的是多轮对话的问题,HRED中使用的3轮对话,从图中可以看到左下方是第一个句子,左上方是第二个句子,右上方是第三个句子。在预测时,输入模型前两个句子来生成第三个句子。乍一看该模型也是Seq2seq的结构,那么是如何将其拓展到多轮对话中呢。这里就需要介绍作者提到的层次性(Hierarchical)的概念。从图中可以看到,正中间的两个神经元实际上是单独的一个RNN结构,而各个句子分别是一个RNN结构,即Encoder将一个句子编码完送给Decoder时,先送给一个单独的RNN,我们可以认为是上下文RNN,该RNN对输入的编码进行计算后的输出送给Decoder端进行解码。当这句话作为下一个句子输入时(右下方),由RNN得到的编码再次送入这个上下文RNN中,得到的结果用来解码出第三个句子。可以看到,中间的这个上下文RNN实际上就是更高一个层次的RNN了,用它来对上下文的连贯性的信息进行储存,从而实现多轮对话的生成。该模型能够很好的刻画连续对话的特征,而在此基础上,作者又提出了VHRED模型:

Neural Response Generation——关于回复生成工作的一些总结

图11:VHRED模型结构

这一模型与HRED模型相比,多了一个隐式变量的部分,这一个模块背后的含义非常复杂,与VAE(变分自动编码器)的核心思想类似。这里笔者对VAE了解的还不够深入,无法很好的描述其工作机理,遂不进行详细描述。总而言之,利用该隐式变量,模型能够更好的刻画上下文信息,从而生成出内容更连贯的回复。

3.3 HRAN(Hierarchical Recurrent Attention Network)[13]

这将是本文介绍的最后一个模型了,是今年出现在arXiv上的一个工作,是TA-Seq2seq模型的作者提出的一个用于解决多轮对话问题的模型。其结构如下:


Neural Response Generation——关于回复生成工作的一些总结

图12:HRAN模型结构

HRAN其模型结构在名称中得到了很好的体现。如果只看Word Level Encoder中的一个模块直接连接到最上层的Decoder,则其就是一个Seq2seq+Attention的结构。其实下面的多个紫色的模块就是多个句子,对应于多轮对话。而中间的蓝色部分,则是句子级别的Attention了。作者提出,相比于HRED和VHRED只使用词语级别的信息,模型无法抓住句子中的重点内容,而且多个句子之间的信息也没有突显其重要度的关系。于是引入两个层次的Attention机制,让模型能够自动的学到词语与句子级别的重要度信息,从而更好的生成新一轮的对话。仔细观察可以发现,作者在句子级别的信息中,是反向学习的,即认为下一句的信息中更能够包含上一句的信息,所以从总体上来看,其对于对话的学习是逆向使用每一轮对话的内容的。实验结果表明,该模型相比于HRED和VHRED能够取得更好的结果。


三、总结

在这篇报告中,我们对神经回复生成的工作进行了一些总结,主要是从如何生成、生成质量以及写诗和多轮对话三个方面进行了介绍。可以看到,在Seq2seq这一基本模型下,衍生出了许许多多的改进模型,Seq2seq模型本身具有两部分结构,其改进的思路当然也集中于Encoder和Decoder这两端。不论是在Encoder端引入更多信息指导生成,还是在Decoder修改目标函数调整生成内容。学者们都在不断优化这二者的效果,也最终取得了更好的结果。当然,现有的一些自动生成回复的工作还远不能满足用户的需求,还有很多问题亟待解决。本文是笔者基于自己学习后的得到的一些理解,如果有什么错误的地方,请大家指出,在此也希望和大家多多讨论,多多学习。


四、参考文献

[1] Vinyals O, Le Q. A neural conversational model[J]. arXiv preprint arXiv:1506.05869,2015.

[2] Bahdanau D, Cho K, Bengio Y. Neural machine translation by jointly learningto align and translate[J]. arXiv preprint arXiv:1409.0473, 2014.

[3] Luong M T, Pham H, Manning C D. Effective approaches to attention-basedneural machine translation[J]. arXiv preprint arXiv:1508.04025, 2015.

[4] Shang L, Lu Z, Li H. Neural responding machine for short-textconversation[J]. arXiv preprint arXiv:1503.02364, 2015.

[5] Sordoni A, Galley M, Auli M, et al. A neural network approach tocontext-sensitive generation of conversational responses[J]. arXiv preprintarXiv:1506.06714, 2015.

[6] Li J, Galley M, Brockett C, et al. A diversity-promoting objective functionfor neural conversation models[J]. arXiv preprint arXiv:1510.03055, 2015.

[7] Xing C, Wu W, Wu Y, et al. Topic Aware Neural Response Generation[C]//AAAI.2017: 3351-3357.

[8] Zhao W X, Jiang J, Weng J, et al. Comparing twitter and traditional mediausing topic models[C]//European Conference on Information Retrieval. Springer,Berlin, Heidelberg, 2011: 338-349.

[9] Mou L, Song Y, Yan R, et al. Sequence to backward and forward sequences: Acontent-introducing approach to generative short-text conversation[J]. arXivpreprint arXiv:1607.00970, 2016.

[10] Wang Z, He W, Wu H, et al. Chinese poetry generation with planning basedneural network[J]. arXiv preprint arXiv:1610.09889, 2016.

[11] Serban I V, Sordoni A, Bengio Y, et al. Building End-To-End DialogueSystems Using Generative Hierarchical Neural Network Models[C]//AAAI. 2016:3776-3784.

[12] Serban I V, Sordoni A, Lowe R, et al. A Hierarchical Latent VariableEncoder-Decoder Model for Generating Dialogues[C]//AAAI. 2017: 3295-3301.

[13] Xing C, Wu W, Wu Y, et al. Hierarchical Recurrent Attention Network forResponse Generation[J]. arXiv preprint arXiv:1701.07149, 2017.


原文转自:
https://zhuanlan.zhihu.com/p/30533380


分享到:


相關文章: