微软预训练NLG模型论文阅读
自然语言处理
最后更新 2020-04-14 22:14 阅读 7666
最后更新 2020-04-14 22:14
阅读 7666
自然语言处理
Few-shot Natural Language Generation for Task-Oriented Dialog
- Few-shot Natural Language Generation for Task-Oriented Dialog 是微软研究院 Baolin Peng 今年二月的一篇文章,文中提出了一个 FewShotWoz 对话数据集以及一个 SC-GPT模型(对话生成),属于对话系统中的 NLG 模块内容;
- 文章链接:arxiv链接;代码链接;数据集链接
- 摘要
作为任务型对话系统的一个重要组件,自然语言生成模块将对话行为以语义的形式转化成自然语言响应。传统基于模板或统计学的模型的成功主要依赖于大量标注的数据集,但是这样的系统在新领域种无法使用。因此在实际应用中,如何使用有限的标记数据使NLG系统有好的生成效果至关重要的。
出于这个目的,文中提出了 FewShotWOZ, 第一个NLG 基准来模拟面向任务的对话系统中的 fewshot 学习设置。而且,文中介绍了一个 SC-GPT 模型,该模型在大规模标注的 NLG 语料上预训练好了,获得了可控的生成能力,并且只需在少量领域特定的数据进行 fine-tuning 即可适应新领域。在 FEWSHOTWOZ 和大型多领域WOZ数据集上的实验显示所提出的 SC-GPT 表现有显著的提高,测试方法包括多种自动测试方法和人工评测方法。
- 简介
任务导向型对话系统正在变得越来越受欢迎,它能在各种日常活动中协助用户,例如订票、预定酒店等。在一个典型的任务导向型对话系统中,NLG 模块扮演者重要的角色:将对话行为以语义的形式转化成自然语言响应。因此,生成的响应应该足以表示语义对话动作,且足够流畅并吸引用户的注意力。作为与用户交互的最终接口,NLG对于用户的体验起到了一个深远的影响。
现有的NLG方法能够大致地总结为两种类别:
1. 基于模板的方法:需要该领域的专业人员来手工设计每个领域的模板和用于填充 slot-values 的系统。因此,生成的响应通常足以包含所需的语义信息,但并不总是流畅和自然的,这损害了用户的体验。
2. 统计语言模型:例如神经网络通过标注语料训练学习生成流畅的响应。一个经典的模型就是条件语义 LSTM 模型(SC-LSTM),通过将对话行为表示为独热码,并用它作为一个额外的特征来引导句子生成的过程。先不论他在简单对话中的优秀表现,他需要大量特定领域的标注数据,这在现实应用中是不可获得的。更糟的是,当对话框行为可能组合的数量随着更复杂领域中 slot 的数量成指数增长时,会出现严重的可扩展性问题。
为了解决 few-shot learning 的挑战,作者提出了 SC-GPT模型。SC-GPT是一个多层次 Transformer神经语言模型,通过以下三步进行训练:
* 与GPT-2相似,在清晰的文本中进行预训练;
* 在大量的对话-行为标注对话语料上连续进行预训练以获取可控制生成的能力;
* 在目标领域使用数量非常有限的领域标签进行fine-tuning。
- 文章主要工作
1. 引入一个新的基准——FEWSHOTWOZ来模拟每个领域只有少量数据集的few-shot 适应设置;
2. 提出了一个新的模型 SC-GPT,这项工作是最早研究利用SOTA与训练语言模型来完成任务导向型对话系统中的NLG任务的;
3. 在 Multi-WOZ 数据集上,SC-GPT创造了一个新的SOTA,对比之前的模型,其BNLEU分数提高了4点。在FEWSHOT-WOZ数据集上,SC-GPT表现超过了几个强劲的baselines,例如SC-LSTM和HDSA,表现出 SC-GPT在新领域的适应性更强,需要的对应领域标记数据更少。
- Background
文章是对基于pipeline结构的任务导向型对话系统的改进,其中关注点在于图中的 NLG 组件,如何根据dialog acts 产生自然语言响应。
具体而言,对话行为 A 定义为:
* Intent 通常用于区分不同类型的系统行为,例如 inform、request、confirm、select等;
* Slot-value 对代表话语中要表达的信息的种类和内容;
NLG 的目标是将对话行为 A 翻译成自然语言响应 X,其中T代表序列长度。
- Semantically Conditioned GPT
我们使用条件语言模型来处理生成的问题。给定 N 个训练数据例子 ,我们的目标是建立一个统计模型 。为了利用响应的顺序结构,可以使用链式法则进一步分解 x 的联合概率,从而形成一个如下所示的自回归生成过程:。学习θ是在整个训练集上通过最大化log似然概率(MLE):。
文中采用了 Transformers来参数化 ,为了使所学习的模型具有较强的泛化能力和可控能力,我们提出了以下三个步骤作为训练方式:
1. Massive Plain Language Pre-training:
在大规模训练语料上训练的大型模型通常在新领域能够泛化得更好。因此,我们继承了GPT-2 的结构作为骨干语言模型。GPT-2是一个自动回归的语言模型,它使用了12-24层masked、多头self-attention的Transformer。GPT-2 是一个在非常大 的文本数据集 Open web Text上预训练的模型。它在表征人类语言数据分布和知识传递方面表现出了优异的性能,给定文本提示,GPT-2通常可以生成实际的句子。
2. Dialog-Act Controlled Pre-training:
为了使对话行为能够引导响应的生成,我们建议在大量带注释的对话上持续对GPT-2模型进行预训练。预训练的数据集包含来自 Schema-Guided Dialog语料、Multi WOZ 语料、Frame语料和 Facebook Multilingual 对话语料的标注训练数据对(fine-tuning中使用的领域不包含在内)。我们首先对对话行为 A 进行预处理成一个序列型控制编码,
同时,输出序列 x’ 也经过预处理,在序列头和尾分别加上tocken [BOS] 和 [EOS]。最终,序列化的对话行为 和它的响应 拼接起来,输入到 GPT-2 中。训练过程中,预测损失函数仅通过 计算, 提供伴随条件。因为对话行为代表了生成的句子的语义,我们按照 SC-LSTM 中的命名约定,把我们的模型称为Semantically Conditioned Generative Pre-training (SC-GPT),下图为SC-GPT的整个结构图:
3. Fine-tuning:
在新领域中,一个对话行为通常包含新的意图或 slot-value 对,并且标注数据集通常比较有限。我们对 SC-GPT 模型在有限的特定领域标签上进行fine-tuning。Fine-tuning 的过程与上述 对话行为控制预训练一样,但是只用少量的领域标签。
上述方法有以下几个优点: 1. 灵活性:SC-GPT 对一系列 token 进行操作,但不经过虚化处理 ,这意味着 SC-GPT 不采用固定的 one-hot 或 tree-structured 对话行为表示向量。因此,它在扩展到新的对话行为方面具有很大的灵活性。 2. 可控性:对比于 GPT-2 在生成句子时没有高层次的语义引导,SC-GPT 能够通过充足的意图和 slot-value 对的信息生成句子,且满足它的流畅性。 3. 泛化能力:SC-GPT 由于在大量设计好的文本语料和标注对话数据集中进行了预训练,其泛化能力显著好于SC-LSTM;
- 数据集:FEW-Shot Woz
一些数据集对比如下表所示:
FEWSHOTWOZ:1. 具有多的领域;2. 更少的训练集数据,为了更好地评估few-shot learning的能力;3. 更低的训练集/测试集重叠率;
收集协议:FEWSHOTWOZ的构造是通过重组RNNLG和MultiWOZ数据集中的例子。对于RNNLG中的每个域,我们首先根据话语的去语义化行为对话语进行分组,只保留一个话语作为目标句。为了确保多样性,我们考虑了MultiWOZ的三个领域:吸引力、出租车和火车。:由于MultiWOZ是一个跨域的数据集,一个话语的对话行为可能存在于多个域中。我们选择保留对话行为只出现在一个域中的话语。应用类似的去语言化处理来确保每个对话行为只有一个目标话语。最后,为了模拟实际中的 few-shot 学习,我们对每个域随机抽取了50个训练样本,但是出租车域有40个样本。
- 实验部分
篇幅问题,实验部分不过多介绍,总结一下就是在对话 NLG 任务上,SC-GPT 的表现要略好于 GPT-2,当训练数据集较大的时候,GPT-2的表现渐渐和SC-GPT的表现差不多,这个结果也证实了在有足够标记数据的情况下,条件语言模型系统显著好于HDSA;
对于文中数据集和预训练模型感兴趣的朋友可以去看看原文的实验部分以及我在文章开头所附的github链接;