利用非对话语料来丰富对话生成模型

本文基于ACL-2020论文《Diversifying Dialogue Generation with Non-Conversational Text》,论文做者是腾讯微信AI团队。算法

导言

基于序列到序列(seq2seq)的神经网络模型在开放领域对话生成的任务上常常会出现低丰富度(low-diversity)的问题,即生成的回复无趣且简单。所以,做者提出利用非对话的文本语料去提升对话模型的多样性。相比于传统的对话语料,非对话的文本语料不只容易得到并且主题一应俱全,所以做者从论坛、书籍和谚语中搜集了大量的非对话语料,结合迭代的回译(back translation)方法将非对话语料融入到对话模型的语义空间内。在豆瓣和微博的数据集上,新模型在保持相关度的同时极大提升了生成回复的多样性。微信

模型背景与简介

seq2seq 模型已经在不少语言生成任务上取得了很好地效果。然而,当把它应用到通用领域的闲聊生成上时,一个很大的问题就是它倾向于生成像“我不知道”、“好的”这样的通用回复。缘由就在于在平常生活中,这些通用回复大量存在于咱们的对话里面。Seq2seq模型会很容易得学习到用通用回复就能够处理大部分对话场景。网络

目前下降seq2seq模型生成通用回复的方法主要有两点:(1)改变seq2seq的目标函数自己来让非通用回复得到更高权重。可是模型依然在有限的对话语料上训练,限制了包含普遍主题的能力。(2)用结构化信息、情感、个性等来加强训练语料。可是,这须要昂贵的人工标注,很难应用到大规模的语料。app

在这篇文章里,做者提出利用非聊天语料来丰富通用的闲聊模型。与双边成对的聊天语料相比,非聊天语料每每更容易得到,同时也更多样、涵盖不一样主题、不须要进一步人工标注。做者从各类数据源收集了超过一百万条非聊天语料,包括论坛评论、谚语俗语、书籍片断等等。基于此做者提出了基于迭代的回译( iterative back translation)的训练方法来利用这些非聊天语料,实验结果显示模型能够生成更多样并且不失一致性的回复。函数

非聊天语料收集

收集的非聊天语料每一个句子长度不宜过长或者太短,能够跟平常聊天主题和风格贴近。做者考虑从如下三个来源收集:性能

  1. 论坛评论。论坛评论来源于知乎,在知乎上选择了全部得到超过十个喜欢,并且句子长度在10-30之间的评论。
  2. 谚语俗语。从多个网站抓取了谚语、俗语、名人名言、歇后语等等。这些语言大多比较精炼,能够直接用来丰富平常聊天。
  3. 书籍片断;从读书app上选取了top 1000个最受喜好的小说或者散文。一样,只保留用户高亮过的、长度在10-30之间的句子。

进一步对收集的语料作过滤处理,删除了含有攻击性和歧视性语言的句子。最后语料总数超过一百万,其中有78万论坛评论、5万谚语俗语和20万书籍片断。学习

模型结构

做者用{x,y}来表示聊天语料D中的上文和回复{context, response}对。t表明非聊天语料DT中的句子。做者首先考虑几个baseline系统:网站

  1. 检索式: 把DT中的句子做为候选答复,每次要生成回复时,就从中选出最合适的回复。做者用反向seq2seq在D上训练学出的p(x|y)来定义合适性。检索式系统最大的瓶颈就在于只能从DT中选择而不能生成全新的回复。
  2. 加权平均:在D上训练一个普通的seq2seq学习P(y|x)几率,在DT上训练一个语言模型来学习L(t)的几率。在解码回复的时候,做者用p(y|x)和L(t)的加权平均,这样能够考虑D和DT两个语料中的信息。
  3. 多任务:把D和DT混合,在混合后的语料上同时训练一个seq2seq模型和语言模型,解码器在两个模型之间共享参数,让模型在多任务环境下同时适应两个语料的信息。

除此之外,做者提出利用iterative back translation来利用非聊天语料。Iteractive back translation在机器翻译上已经得到了普遍的使用,可是尚未被用到聊天系统中。模型首先有一个初始化阶段。初始化完成以后会不断重复反向(backward)和前向(forward)阶段。spa

在初始化阶段,做者在聊天预料D上同时训练一个forward模型pf(y|x)和backward模型pb(x|y),训练目标以下:翻译

在backward阶段,做者用backward模型建立伪对(pseudo pair)来训练forward模型。目标函数为:

同理,在forward阶段,做者用forward模型建立伪对(pseudo pair)来训练backward模型。目标函数为:

具体的算法以下所示:

实验结果

做者在两个中文对话任务上进行了实验:豆瓣和微博。做者还对比了standard seq2seq with beam search、MMI、diverse sampling、nucleus sampling和CVAE模型。这些模型都只在聊天语料上进行训练,用了不一样目标函数的改进来促进回复的多样化生成。

做者首先进行了自动化评论。在表3中,做者汇报了各个模型的BLEU-2分数来测量跟ground-truth的overlap;dist-一、dist-2和ent-4来测量生成回复的多样性;adver来测量回复和上下文的一致性。对于back translation (BT)模型,汇报了模型在第一个和第四个iteration的结果。考虑到模型引入了非聊天语料信息,生成的回复极可能跟原始聊天语料中的词频率、主题有所不一样,这样在机器指标自动化评论中会有一个自然的劣势。可是,能够看到模型除了在多样性指标上得到了显著提升以外,在BLEU-2和Adver指标上也并无降低,说明模型在学习到多样性的同时并无丢失其它方面的性能。

除了自动化评论,做者也进行了人工评价,结果如表4。做者随机从每一个语料中sample了500个实例,让人工去评价每一个模型生成的回复的流畅性、多样性和与上下文的一致性。实验结果跟机器指标基本一致。

经过对生成回复的结果分析,发现back translation能够学到非聊天语料重的新词和句式,这样就能够经过不一样上下文生成在原有非聊天语料中不存在的回复。

总结

在这篇文章里,做者提出了一个新的方式来丰富通用领域的闲聊模型。经过用iterative back translation来有效利用非聊天语料,显示模型能够从词法和语义两个层面都有效地丰富聊天回复。在跟几个基准模型对比后发现,模型显著提升回复的多样性而不下降其它方面的性能。目前的工做迈出了利用非聊天语料来丰富聊天模型的第一步,将来能够结合更加精细化的过滤、筛选来针对不一样领域来自适应地选择利用的非聊天语料。

相关文章
相关标签/搜索