在任务导向型对话中,由于具体领域数据的缺乏,其生成质量长期以来都不够好。
本文首次在少样本(few-shot)场景下的任务导向型对话上,使用预训练提高所生成回复的流畅度与准确度,在自动测评和人工测评上大幅超越之前的模型。
任务导向型对话
现实生活中的对话有相当一部分都是“任务导向”的,即对话都指向一个明确的目的。
这个过程可以用下图来表示:
首先,系统理解用户的意图,然后得到“槽-值”(slot-value)对,比如上面的“出发地:洛杉矶”和“到达地:北京”,最后根据意图和槽-值对生成回复。
然而,目前的任务导向型对话要么依赖于固定的模板,要么只能在有限标注数据上训练,都不能得到很好的效果。
那么,能不能用当前流行的预训练方法去提高生成回复的质量呢?当然可以!因为无标注语料本身就内含丰富的语义,在它们之上预训练自然就可以提高生成的质量。
但是,和其他的预训练有所不同的是,任务导向型的对话往往特别依赖具体的领域,领域之间的差别会导致生成回复之间也会存在巨大的差异。
在无标注和有标注的语料上训练后,最后,只需要在特定领域的少样本数据集上微调,就可以把模型运用到该领域的任务型对话中了。整个过程非常简单,但能够在流畅度和准确度上都大幅超越之前的模型,具有相当的可用性。
值得一提的是,本文的作者还搭建了一个简易的Demo,如下图所示:
用户输入意图(及一些可选的槽-值对),系统就可以自动生成各种可能的回复。可以看到,生成的文本非常流畅,并且也贴近我们输入的意图,可见其实际效果是相当不错的。
预训练+预训练+微调=更好的回复
本文提出的方法可以归纳为三个步骤: 预训练,预训练和微调。
- 预训练 1 :首先在大规模的无标注文本上预训练。这一步和GPT-2一致。
- 预训练 2 :为了让生成的文本更贴近任务导向型对话的要求,模型还进一步在标注的数据集上预训练。这里的数据来自Schema-Guided Dialogcorpus, MultiWOZ corpus, Frame corpus和Facebook Multilingual Dialog Corpus,这些都是人工标注好的人物对话型数据集,来自各个领域,共计约400K个样本。
- 微调 : 最后,只需要在特定领域的少样本数据集下微调即可。
模型示意图如下。简单来说,就是给定意图和一些槽-值对,模型据此输出回复。
实验
我们的目标是要提高少样本、特定领域下的生成回复质量,为此,我们在本文创建的一个少样本基准数据集FEWSHOTWOZ上实验。
该数据集包含7个领域的数据,每个领域只有50条用于训练,其他的都用作测试。
下表是本文模型(SC-GPT)和两个基线模型(SC-LSTM、GPT-2)的实验结果:
可以看到,在所有7个领域,SC-GPT生成的文本既更流畅(BLEU更大),而且也更准确(ERR更小),超越幅度也非常大。
那么人类测评又如何呢?下表是人工测评三个模型的表现。
可以看到,就信息度(Informativeness)和自然度(Naturalness)而言,SC-GPT都比两个基线模型更好,虽然和人类表现相比仍有差距,但注意到这是在少样本下的设置,在大样本的情况下,二者几乎不存在差距。
下面是三个领域的例子,和reference相比,SC-GPT已经非常接近了,而其他模型或多或少都具有一些问题。
比如,绿色代表多余内容,红色代表错误内容,紫色代表丢失的内容。
小结
本文提出了一种简单有效的“预训练-预训练-微调”模型,用于提高任务导向型对话的生成流畅度与准确度。
首先在无标注文本上预训练,然后在标注数据上预训练,最后在特定领域的数据上微调,极大地提高所生成回复的质量。
此外,本文还构建了一个少样本基准数据集FEWSHOTWOZ,用于评估少样本下任务导向型对话模型的效果。
最后,本文作者也发布了一个可用的在线Demo,用于展现模型效果,读者可以前往项目地址(https://aka.ms/scgpt)自行探索。
论文标题:
Few-shot Natural Language Generation for Task-Oriented Dialog
论文作者:
Baolin Peng, Chenguang Zhu, Chunyuan Li, Xiujun Li, Jinchao Li, Michael Zeng, Jianfeng Gao
论文链接:
https://arxiv.org/abs/2002.12328
项目链接:
https://aka.ms/scgpt