基于检索结果融合机制的对话生成模型
2021-08-13刘喜凯林鸿飞徐博杨亮任玉琪
刘喜凯,林鸿飞,徐博,2,杨亮,任玉琪
(1.大连理工大学计算机科学与技术学院,辽宁大连116024;2.认知智能国家重点实验室(科大讯飞),安徽合肥230088)
0 引言
构建可以与人进行自然沟通的聊天机器人是人工智能领域的一个长期目标[1]。随着网络技术的不断发展,聊天机器人被广泛应用于客服、情感陪护、问答等多项任务之中。其中,对话生成任务致力于如何根据用户的输入查询给出相应的对话回复,也成为了近年来重要的研究课题。
随着近年来对话数据量的增多,许多研究学者倾向于利用数据驱动的方法来构建对话模型[2]。对比早期基于手动特征和规则的方法,这样的方法不仅节省人力和时间成本,还可以更好地挖掘数据的特性,以应对更多样的场景。其中,基于生成的方法和基于检索的方法是最常被研究的两种方法。基于检索的方法在得到用户的输入查询语句后,从已有的数据中检索与之匹配度较高,的相关查询,并将该查询的回复作为检索答案返回给用户。基于生成的方法将输入查询进行编码并依据该编码逐步生成语句作为最终回复。这其中,基于生成的方法因其可以产生新回复的特点而被广泛研究。但现存的基于生成的模型往往倾向于生成无意义的万能回复,如“好的”、“你说的对”等[3]。
为了解决这一问题,一些研究工作尝试将基于检索和基于生成的方法融合来生成最终的回复[4-5]。这些模型首先利用检索方法得到参考回复语句,并将该语句作为辅助信息引入生成模型中,以生成最终的回复。基于检索的方法可以为模型提供富含信息量的语句作为参考,生成模型利用辅助信息生成更加准确的对话回复。
尽管现有的方法可以提升模型的生成质量,但现有方法在利用检索答案信息时更加注重于如何更好地编辑检索答案,而忽略了检索答案信息和用户查询信息之间语义关系的差异。检索答案往往表征了回复语句的语义信息,而用户的查询语句则是查询语句的语义信息。在处理两种语义信息时,现有方法往往选择直接将两类信息进行拼接操作,后果是生成模型无法根据语义信息的不同生成更好的回复。
因此,本文提出基于检索结果融合的对话生成模型来解决这一问题。首先,利用信息检索模型检索得到合适的回复作为生成模型的辅助信息。为了更好地提取检索结果中可以增强生成模型性能的有效信息,本文利用双向LSTM 对检索结果进行编码,从而得到检索信息的最终表示。为了更好地利用检索信息,本文提出了具有融合机制的长短时记忆网络(fusion-LSTM),该网络在传统的长短时记忆网络(LSTM)中加入了“融合门”机制(fusiongate)。融合门作用在生成模型的每一步中,利用门控机制控制检索信息在这一步中所应提供的信息量。通过这样的方法可更好地让模型学习两种输入所携带的不同语义信息,从而更好地控制生成结果。
本文的贡献主要是:
(1)提出并构建了具有融合机制的长短时记忆网络(fusion-LSTM),网络通过“融合门”机制融合两种不同的语义信息,从而更好地控制生成模型的生成结果。
(2)实验结果表明,本文提出的方法生成的回复优于基线模型,在自动评价指标和人工评价指标上均取得了较好的结果。
1 相关工作
建造通用领域聊天机器人是人工智能领域内的一个长期目标[1]。开放域聊天机器人的目标是可以就开放域话题与人类进行自然流畅的对话。较早期的研究使用手动拼接特征和制定规则的方法[6]来产生回复。但这样的方法效果并不理想且耗时[2]。随着机器学习和深度学习的发展,一些工作尝试利用数据驱动的方法来构建对话模型[2]。数据驱动的方法也随着技术的进步不断发展。在现有的研究中,多数聊天机器人都使用基于检索的方法或基于生成的方法进行构建。
(1)基于检索的方法
基于检索的方法从包含输入—回复对的数据库中选择一个合适的回复作为模型的最终回复。随着数据驱动方法的流行,出现了一个代表性的方法:模型首先通过搜索引擎获得若干个候选结果,之后通过计算输入与候选答案的相似度对答案进行重排序。后来的研究工作着重解决如何选择候选答案的问题,如Hu等人[7]使用卷积神经网络获取输入信息与候选回复之间的交互关系;Wang等人[8]构建了语法特征来计算文本的相似度;Wu等人[9]将主题信息融入检索过程中增强检索效果。由于基于检索的方法可以选择一个现有的句子作为回复,所以选择的答案质量往往较高,但其回复质量受限于数据库的规模,且会存在回复内容与用户输入相关度不高的问题。
(2)基于生成的方法
基于生成的方法借鉴统计机器翻译的思想[2]或利用序列到序列模型[3,10-11]来直接生成最终回复。一个代表性的工作[11]是利用序列到序列(Seq2Seq)模型生成对话,模型首先利用基于神经网络的编码器对用户输入进行编码得到编码向量,然后通过相似的解码器进行解码获取生成的答案。后续研究中,研究人员着力解决对话系统中存在的一系列问题。如Li等人[3]利用互信息的方法优化模型,让模型可以生成更加多样性的回复;Xing 等人[12]和Mou等人[13]引入了外部知识来让模型可以获得更多的信息量;吴邦誉等人[14]采用拼音信息优化了中文的对话模型;宋皓宇等人[15]采用强化学习对开放域的多轮对话进行了优化。
为了能够结合两种方法的优势,也有工作尝试结合两种方法进行实验。Song等人[16]和Pandey 等人[17]使用Lucene检索答案后,将检索到的答案与用户输入直接拼接从而生成最后的结果。Wu 等人[5]尝试采用编辑向量的方法,从检索到的答案中提取部分文本作为句子骨干,之后再用以生成最后的答案。但这些方法在获取检索结果并编辑成辅助向量后都直接与原输入进行拼接或计算操作,没有考虑不同信息之间的语义关系。本文尝试利用新的模型结构来有效地融合检索到的检索语句与原用户的输入查询语句。利用这种方法,可让模型更好地处理不同信息源之间的语义关系,从而提升生成模型的生成质量。
2 基于多检索结果融合的对话生成模型
2.1 总体技术框架
图1是本文提出的基于检索结果融合的对话生成模型的总体结构图,本文的目标是通过检索到的回复语句增强生成模型的生成效果。在本文中,把当前的用户输入查询记为Q,给定对话数据集D=(x,y),其中,(x,y)为对话的查询—回复对,本文意在通过利用该数据集训练对话生成模型,可以针对任意给定的Q,生成合适的回复R。
图1 基于检索结果融合机制的对话生成模型总体框图
模型首先利用检索模块在对话数据集D中检索出与Q相似度最大的查询x,并将对应的y作为参考信息,之后将参考信息引入生成模块。生成模块首先利用双向LSTM 机制将y进行编码,之后利用具有融合机制的长短时记忆网络生成回复R。最后模型利用重排序模块将检索结果与生成结果进行重排序,得到最终的模型输出。
2.2 检索模块
本文利用Lucene来搭建检索模块。Lucene是一个被广泛用于文档检索的开源工具,可以有效地在文档库中找到最相关的文档。Lucene根据待检索库中的文本与查询文本的TF-IDF(词频与逆文档频率)相似度等指标来为每个文档打分,从而得到待查询文档的得分排行。在本文中,使用用户的输入查询Q作为查询文本,从数据集中检索出与输入查询Q语义相似度最高的查询x。之后将x所对应的y作为参考信息进行记录并传入生成模型中,用参考信息增强对话生成模型的生成效果。
2.3 具有融合机制的长短时记忆网络
在得到所有的参考信息y后,模型使用生成模块利用用户输入Q和参考信息y生成回复R,生成模块的总体框架图如图2所示。
图2 具有融合机制的LSTM 结构图
本文首先利用双向LSTM 将y进行编码,如式(1)~式(3)所示。
因此,y代表了检索模块所能为生成模块提供的可用信息的表示向量。在对话模型中,生成模型首先将用户的输入信息通过编码器进行编码,然后通过解码器进行解码,从而得到回复语句。在本文中,模型需要在编解码的过程中利用检索得到的检索答案信息y。
考虑到检索答案所编码的是回复信息,而用户的输入是输入信息,因此本文不选择就两种信息进行直接拼接,而是将检索答案加入到编解码的每一步中,让模型在每一步中学习使用检索答案。因此,在编解码的每一步内,除去上一步的隐层信息h,细胞状态C,这一步的输入x,还加入了检索答案y。
传统的LSTM 结构有三个门控机制:遗忘门、输入门、输出门。为了更好地利用新加入的信息,本文提出了具有融合机制的长短时记忆网络(fusion-LSTM),本文在模型中引入了“融合门”。“融合门”的模型细节如图2所示。因为检索答案编码的是整个句子的信息,其信息含有量远大于这一步的输入x所编码的一个词的信息。因此本文通过融合门对信息进行选择,fusion-LSTM 的计算如式(4)~式(11)所示。
其中,ft代表遗忘门,控制模型应该在每一步中舍弃哪些信息,ot代表输出门,控制模型在每一步的输出信息。表示这一步的模型输入经过编码后得到的向量,而代表检索答案的编码向量。fut代表融合门,fusion-LSTM 模型使用融合门控制检索答案和单词信息分别在每一步中所占的比例。利用这种方法,可以让模型同时学习到输入单词信息和辅助句子信息,从而得到该步最终的更新向量。
在解码阶段,模型同样利用fusion-LSTM 结构。同时,为了能够更好地捕获输出单词和输出文本之间的词级别关系,模型引入注意力机制。最后本文利用最大似然的方法进行训练获得最终的对话生成模型。
2.3 重排序模块
为了能够充分利用两种方法得到的结果,本文最后使用重排序模块对检索到的答案和生成模型得到的答案进行重排序操作,本文根据Song等人[16]提出的重排序方法,利用梯度决策树进行选择,与原文相同,本文仍利用实体相似度,与原查询TF-IDF相似度,及检索到的查询与原查询之间的相似度作为高维特征进行模型的搭建。并按照原文方法进行部署。
3 实验
3.1 实验设置
3.1.1 数据集
为了验证本文提出的模型的有效性及在不同语言之间的普适性,本文选择了三个数据集进行实验:中文微博数据集、中文豆瓣数据集和英文DailyDialog数据集。三个数据集的统计信息如表1所示。
表1 三个数据集的统计信息
中文微博数据集是一个大型中文对话数据集,由Shang等人[11]构建,数据集为从微博中获取的高质量对话对,输入为用户的微博文本,回复为微博的评论文本。数据集规模较大,适合用于对话生成任务中。在本文中,实验获取数据集并将数据集分成三部分,350万对用于模型训练,5万对用于模型效果验证,1万对用于模型测试。
Daily Dialog为高质量的英文对话数据集,由Li等人[18]构建,该数据集收集了英文学习网站中的常用对话文本。文本可以反映生活中的日常交流情况和在不同主题下的对话情况。可以较好地用于对话任务。在本文中,实验获取数据集并将数据集分成三部分,6.9万对用于模型训练,7 000对用于模型验证,7 000对用于模型测试。
豆瓣数据集是一个大型的中文对话数据集,由Wu等人[5]构建,该数据集从豆瓣小组内爬取对话对,并通过筛除长句及重复句,得到1 960万对左右的对话对数据集。本文选取1 960万对用以模型训练,1万对用以模型验证,1万对用以模型测试。数据集主要用以衡量检索与生成相结合的对话模型的性能。因此,本文为使对比结果更加合理,也跟从Wu等人[5]的设计,使用word embedding score及distinct指标作为验证指标。
3.1.2 参数设置
针对对话生成任务,模型设置每句生成对话的最长长度为20个词。根据中英文词汇量属性及数据集特点,对于中文微博数据集,模型以最常用的四万个词建立词表;对于英文DailyDialog数据集,模型以最常用的两万个单词构建词表。对于中文语料,我们使用jieba工具进行分词。词向量通过随机初始化进行赋值。模型使用梯度剪裁防止梯度爆炸。其余参数根据其在验证集上的结果表现进行选择。模型利用Adam 算法来更新本文提出的模型参数。其余模型参数如表2所示。
表2 模型主要参数设置
3.1.3 基线方法
为验证所提出模型的有效性,实验部分将本文的模型与若干被验证有效的方法进行对比,本文选择了三类方法作为基线方法:基于检索的方法、基于生成的方法、检索与生成相结合的方法。
Retrieval:Retrieval为基于检索的方法,用于衡量检索方法的有效性,使用Lucene搭建检索引擎,在数据集中检索与用户输入最相似的输入,并利用其回复作为模型的最终回复。
S2S:S2S是传统的序列到序列模型(sequence to sequence),是广为使用的对话生成模型。
S2SATT:S2SATT 是传统的序列到序列模型(sequence to sequence),模型在解码阶段使用注意力机制[19]提高模型的生成效果,为保证模型的有效性,本文按照Klein等人[20]的设计构建了模型。
MMI:MMI是Li等人[3]提出的基于互信息的对话生成模型,模型很好地提升了对话模型的生成质量,本文选择bidirectional-MMI来构造解码器,并根据原文设置参数λ为0.5。
Ensemble:Ensemble为基于检索和生成相结合的方法,由Song等人[16]提出。模型将检索结果进行编码并与原输入进行拼接从而生成最终的结果。为了更好地对比该方法与本文的方法,本文采用同样的设定,采用最终的联合rerank机制。
Ensemble-rerank:Ensemble-rerank(En-rk)为检索和生成相结合的方法,由Song 等人[16]提出。与Ensemble方法不同的是,该方法不采用rerank机制选择检索的答案,直接采用生成的结果作为最终结果来进行评测。这样的方法可以更好地与本文提出的方法对比,从而确认生成模块的生成质量。
EditVec:Edit Vec由Wu等人[5]提出,同样为基于检索与生成相结合的方法。模型将检索结果进行编辑得到编辑向量,并与原输入进行拼接,从而生成最终的回复。
Ours-rerank:Ours-rerank(Ours-rk)为本文提出的方法的变形,在本方法中,不采用rerank机制选取最终的结果,而是直接采用生成的答案作为最终的答案。本方法用以与基线方法中的生成模型进行对比,从而确认生成模块的质量。
Ours-FG:Ours-FG 为本文提出的方法的变形,在此方法中,不采用fusion gate来控制变量结果,而是直接将向量与每一步的输入进行拼接,通过这样的方法来判定所提出的fusion gate是否可以起到作用。
3.1.4 评价指标
本文采用自动评价指标和人工评价指标两种方法来评价本文的模型。
自动评价指标:对于最终的评价,本文采用BLEU[21]指标来评价模型,BLEU 指标用来衡量模型的生成结果与原答案之间的相似度,在对话生成任务中与人工评价的结果相关性较好[22]。同时,本文利用word embedding score[10]来评价生成的结果与原结果的语义相关性,word embedding score(wemb)通过计算句子级embedding向量的相似度来衡量生成结果与原答案之间的语义相关性,本文根据Wu等人[5]的方法,通过计算句子内所有词向量的均值来代表句子的embedding向量,并使用余弦相似度计算最终结果。为了衡量模型结果的多样性,本文使用Li等人[3]提到的方法,使用distinct-1和distinct-2两个指标进行衡量。distinct指标[3]是对话生成任务中最常使用的评价生成结果多样性的指标。distinct-1为所有生成回复结果内不同的一元组占所有一元组的比例;distinct-2为所有生成结果中不同二元组占所有二元组的比例。这两个指标取值越高,表示生成的结果中含有越多不同的n元组,说明结果的多样性更好。本文未使用Perplexity作为评价指标进行模型性能评价,因为本文的模型中需要使用检索信息,该指标无法进行合理的计算。
人工评价指标:对于对话系统任务,人工评价指标往往具有关键的作用。对于人工评价方法,本文利用Li等人[3]中提到的方法,使用20个众包人员对本文的模型进行评价。实验随机采样200个测试数据,并向众包人员展示原用户查询文本及各个模型生成的回复文本。众包人员对这所有的回复从1到10进行打分,分数越高,效果越好。在打分过程中,所有测试人员不知每个回复是由哪个模型产生的。本文用两种指标评价模型的质量,流畅性和相关性。流畅性表示生成模型产生的结果,其句子在语言上是否流畅、无语病,且能表达完整的含义。相关性表示模型的输出文本与原查询文本之间是否存在语义上的相关性,是否可以有效且有意义地回答用户的查询。最终通过计算几何平均数(G-SCORE)来衡量人工评价指标的最终结果。
3.2 实验结果
实验得到的自动评价指标和人工评价指标如表3~表5所示。在衡量生成模型生成质量的评价指标中,基于检索的方法往往会取得很好的结果,但是从相关性指标中可以发现,其检索到的结果与原始输入之间的相关性往往较差,这也导致了较差的用户体验。而本文的方法在各项指标中都可以取得较好的结果。尤其因为引入了检索的方法为模型提供了检索答案,生成结果的多样性指标有很好的提升。同时,与其他现有的融合检索生成的方法相比,本文提出的方法也取得了较好或可比的结果,可表明本文提出的方法可以有效地结合两种方法,从而提升生成模型的质量。
表3 本文模型与基线模型在DailyDialog数据集(左)及微博数据集(右)上的自动评价指标结果对比
表5 本文模型与基线模型在DailyDialog数据集上的人工评价指标结果对比
为了只对比生成部分的效果,本文进行了实验分析,通过表格内的数据可以看出,在除去re-rank部分后的Ours-rk模型与基线的生成模型相比仍有较大幅度的提升,这代表该方法可以有效地提升生成模型的生成效果。
同时,在人工评价中,将本文的方法与主要的基于生成的方法、基于检索的方法及检索和生成的方法进行对比。其中,用于消融实验的模型未进行评测。从人工评价指标中可以看出,基于检索的方法因其答案本就是语料库中存在的句子,所以流畅性要优于基于生成的方法。而基于生成的方法因其对输入句子进行了编码并有针对性地生成回复,所以相关性要优于基于检索的方法。本文的方法可以有效地将两者进行结合,既保留了优势,提升了模型的相关性指标,又在生成模型的基础上提升了生成结果的流畅度。
为验证本文模型每一部分的效果,本文设置消融实验对模型进行验证,结果如表3 及表4 所示。表中,Ours-FG 与Ours的方法进行对比,可以发现模型提出的fusion gate机制可以很好地利用检索的结果,而对去除fusion gate的方法与ensemble的方法进行对比,也可以发现将检索信息放入模型每一步的方法会比直接在初始阶段进行拼接的方法要好。
表4 本文模型与基线模型在豆瓣数据集上的自动评价指标结果对比_
3.3 实验分析
3.3.1 检索结果数量对结果的影响
对于实验结果的分析,本文讨论了使用若干条检索结果和仅使用一条检索结果作为检索答案时,生成模型所生成的结果是否有较大差异。为此,本文设计实验,使用了多条检索到的结果作为检索答案,为了聚合多条检索答案,本文将多条答案进行了拼接(本文选择三条作为检索答案)。两种方法分别在中文微博数据集上进行实验。实验结果如表6所示。
从表6可以发现,在主要的评价指标上,使用多条检索结果的方法效果与仅使用一条检索结果的方法性能差别不大,在部分指标上略有提升,这可能是因为多条检索结果之间的语义信息存在重复,或需要更优的模型结构先对多条结果进行更好的拼接。
表6 多条检索结果与一条检索结果对模型的性能差异
3.3.2 样例分析
为了展示本文所提模型的效果,表7展示了若干条本文的模型的生成结果,以及使用检索方法和生成方法得到的生成结果。从例子中可以看出,本文的方法可以生成更加有趣的回复,同时可以保持与输入语句的相关性。从第二个例子可以看出,当原检索结果效果较好时,模型可以直接利用检索结果作为最终的模型输出。从第四个例子可以看出,原生成模型生成的结果会存在无意义回复的情况,而本文的方法可以引入检索的结果,增强句子的多样性。
表7 模型结果样例展示
4 结论
本文针对现有的基于检索和生成相结合的对话模型无法充分考虑不同语句所提供的语义信息的问题,提出了基于检索结果融合的对话生成模型。模型通过检索方法得到检索结果后,使用双向LSTM结构将检索结果进行编码得到最终表示向量。为了解决现有方法在生成回复时未考虑不同向量语义空间不同的问题,本文提出了具有融合机制的长短时记忆网络。网络利用融合机制将用户输入查询与检索信息结合起来生成最终的答案。实验结果表明,本文提出的方法可以较好地生成对话的回复,提升结果的准确性和多样性。
未来工作中,我们将考虑探索如何以更好的方法将多条检索结果进行融合,从而提升模型的效果;并探究检索方法的性能对模型性能的影响。