Loading

对话系统近年论文研究

对话系统近年论文研究

1. 绪论

近些年,旨在使用户能以自然简洁的方式与机器进行交互获取信息服务的对话系统引起了研究人员和科技巨头的广泛关注。对话系统的研究经历了半个多世纪的发展,取得了不少的进展。现有的对话系统主要可分为闲聊型(Chatbot)和任务型对话系统(Task-oriented Dialogue System)两大类[1]时。另外,知识的使用作为对话系统中的关键一环,对前述两大类对话系统都至关重要。此外,按照对话系统在进行回复时考虑的轮数进行区分,可以将对话系统分为单轮对话系统和多轮对话系统。单轮对话系统简化对话回复任务,只考虑最近一轮的用户输入,而不考虑历史对话信息。多轮对话系统需要综合考虑包括用户输入和系统回复在内的所有对话历史,是更复杂但符合人类对话逻辑的思路。不管是闲聊对话系统还是任务型对话系统在回复时均可以考虑单轮对话或多轮对话。本文下面对近年的对话系统论文进行研究,这些对话系统包括DialoGPT、GPT-3、Blenderh和PLATO-XL,都是闲聊对话系统。在此之前我们先介绍一下闲聊对话系统。
闲聊型对话系统只是对用户的输入产生一定的响应,不完成特定的任务,不对领域做限制。与带有特定目的的任务型对话相比,闲聊式对话在真实世界中占主导地位。简单来说,闲聊式对话系统问题可以被定义为如下形式:用户发送一条信息,对话系统基于当前消息和对话历史给出回复。闲聊对话系统的发展大体经历了三个阶段:
在第一阶段,许多对话系统采用基于规则或模板的方法。这类方法针对不同的场景编写不同的模板,最终再根据具体情况填充细节得到最终的回复。基于规则的方法虽然简单易行,但是毕竟通过规则可以覆盖的情况有限,很难提供流畅、多样的回复。并且编写规则费时费力,需要工程人员花费大量时间分析用户输入习惯,可移植性差。
在第二个阶段,基于检索的对话系统[2-5]成为了主要研究方向。随着互联网的飞速发展,社交平台上积累了大量的对话资源,并且这些对话可以涵盖大部分对话场景,因此可以利用网络上的语料构建一个候选回复库,并通过信息检索方法根据用户输入获取候选回复。基于检索的对话系统可以定义为一个文本匹配任务,检索类对话系统的研究主要集中在语义表示、相似度度量和候选回复排序等方面。基于检索的对话系统的回复来源于真实的人类对话,非常适合真实的应用场景。基于检索的闲聊对话系统的经历了从卷积神经网络,循环神经网络到注意力模型的转变,对对话历史的利用也从单轮过度到多轮,语义特征提取的粒度更加多样。
目前,基于深度学习的生成模型成为闲聊对话系统主要研究方向。生成式对话系统受到机器翻译任务的启发,根据用户的输入逐词生成相应的回复[6]。在训练阶段,研究者或工程师收集大规模对话语料作为训练数据,训练基于深度学习的生成模型学习输入和输出之间的对应。早期的多轮闲聊对话生成模型大多基于非层级结构。然而,近期的多轮对话生成模型大多基于层级生成模型,并在此基础上优化对话上下文的表示。从实验效果上看,层级模型对对话历史的建模更好,生成回复的语义连续性强。然后,非层级模型实现简洁,测试时推理速度快。最近,随着自然语言生成方法的进步,尤其是预训练语言模型(Pre-training language model)的出现,使得闲聊对话系统的性能又得到了新的突破。

2. 研究的论文

2.1 DialoGPT

该部分研究的论文是《DialoGPT: Large-Scale Generative Pre-training for Conversational Response Generation》[7]。

2.1.1 问题描述

DialoGPT扩展了GPT-2来应对对话神经响应生成(conversational neural response generation model)遇到的挑战。神经响应生成是文本生成的子问题,任务是迅速生成自然的文本(与训练文本不一致)。人类对话包含了两个对话者的竞争目标,潜在的响应(回复)更加多样化。因此,相比于其他文本生成的任务,对话模型提出了一个更大的一对多的任务。并且人类的对话通常也不正式,经常包含缩写或错误,这些都是对话生成的挑战。

2.1.2 使用的方法

2.1.2.1 核心思想

要深入理解DialoGPT的核心思想,应该从GPT和GPT-2开始。

  • GPT

GPT 的全名:Generative Pre-Training,其论文标题是 Improving Language Understanding by Generative Pre-Training。
GPT的底层架构是transformer,是由pre-training和fine-tuning两部分构成的。
pre-training是采用transformer框架进行的,不过对transformer改动了一下。传统的transformer里有encoder层和decoder层,而GPT里主要用的是decoder层,不过做了一点改变,去掉了中间的Encoder-Decoder Attention层(因为没有encoder层,所以也不需要Encoder-Decoder Attention层)如下图

image.png

整个过程如上图所示,词向量(token embedding)和位置向量(position embedding)的和作为输入,经过12层的Masked Multi-Head Attention和Feed Forward(当然中间也包括Layer Norm),得到预测的向量和最后一个词的向量,最后一个词的词向量会作为后续fine-tuning的输入。 GPT本质上是自回归模型,自回归的意思是指,每次产生新单词后,将新单词加到原输入句后面,作为新的输入句。 模型会将语句输入上图所示的结构中,预测下一个词,然后再将新单词加入,作为新的输入,继续预测。损失函数会计算预测值与实际值之间的偏差。 **训练目标:** 在预训练阶段,只以语言模型为训练目标,即图中的 Text Prediction。 公式1描述了这个典型的从左到右的语言模型:在给定上文的条件下预测下一个词。

\(L_1(u)=\sum_{i}{logP(u_i|u_{i-k},\dots ,u_{i-1};\Theta)}\quad\quad(1)\)

在公式2中,$h_0$ 表示网络第一个隐层,$U$表示输入序列,$W_e$表示 token embedding 矩阵,$W_p$表示 position embedding。$h_1$到 $h_n$是各层 Transformer block 的输出隐层。最终以 sotfmax 计算下一个词的概率。

\(h_0=UW_e+W_p\quad\quad(2)\)
\(h_1=transformer\_block(h_{l-1})\forall i\in [1,n]\quad\quad(3)\)
\(P(u)=softmax(h_nW^{T}_{e})\quad\quad(4)\)

我们可以通过准确率来评价训练何时停止。训练的时候生成的文本和原文本进行比对,得到准确率,通过准确率是否达到预期值或是准确率是否一直上下波动等来确定是否该停止训练。 在 Fine-Tune 阶段,输入的样本是(序列 $x^1\dots x^m$,标签 $y$)。给定一个序列,预测标签的概率如下所示。

\(P(y|x^1,\dots ,x^m)=softmax(h^m_lW_y)\quad\quad(5)\)

Task Classifier 的训练目标是最大化全体有监督训练样本出现的概率,即图1中的 Task Classifier。

\(L_2(C)=\sum_{(x,y)}{P(y|x^1,\dots ,x^m)}\quad\quad(6)\)

在这个阶段,语言模型的训练目标也被一并启用。

\(L_3(C)=L_2(C)+\lambda *L_1(C)\quad\quad(7)\)

重新看一遍网络结构和 Fine-Tune阶段的公式,就会发现,引入的参数,只有$W_y$。先将大部分的参数通过无监督预训练训练好,然后通过微调确定最后一个参数w的值,以适应不同的任务。 以上就是GPT的大致描述,采用无监督的预训练和有监督的微调可以实现大部分的NLP任务,而且效果显著,但是还是不如Bert的效果好。
  • GPT-2

GPT-2希望在完全不理解词的情况下建模,以便让模型可以处理任何编码的语言。GPT-2主要针对zero-shot问题。它在解决多种无监督问题时有很大提升,但是对于有监督学习则差一些。
GPT-2依然沿用GPT单向transformer的模式,只不过做了一些改进与改变。那GPT-2相对于GPT有哪些不同呢?看看下面几方面:

  1. GPT-2去掉了fine-tuning层:不再针对不同任务分别进行微调建模,而是不定义这个模型应该做什么任务,模型会自动识别出来需要做什么任务。这就好比一个人博览群书,你问他什么类型的问题,他都可以顺手拈来,GPT-2就是这样一个博览群书的模型。
    1. 在Pretrain部分基本与GPT方法相同,在Fine-tune部分把第二阶段的Fine-tuning有监督训练具体NLP任务,换成了无监督训练具体任务,这样使得预训练和Fine-tuning的结构完全一致。当问题的输入和输出均为文字时,只需要用特定方法组织不同类型的有标注数据即可代入模型,如对于问答使用“问题+答案+文档”的组织形式,对于翻译使用“英文+法文”形式。用前文预测后文,而非使用标注数据调整模型参数。这样既使用了统一的结构做训练,又可适配不同类型的任务。虽然学习速度较慢,但也能达到相对不错的效果。
  2. 增加数据集:这是一个比更大还更大的数据集。GPT-2 构造了一个新数据集,WebText。这些无监督样本,全部来自于 Reddit 的外链,而且是那些获得至少三个赞的外链,共计4500万链接。使用 Dragnet 和 Newspaper 两种工具来抽取网页内容。过滤 2017 年12月之后的网页。删去来自 Wikipedia 的网页。去重。最后还做一些琐碎的没有明说的所谓启发式清洗工作。如此得到8百万网页共计 40GB 文本数据。WebText 数据集的特点在于全面而干净。全面性来源于 Reddit 本身是一个门类广泛的社交媒体网站。干净来源于作者的有意筛选,至少三赞意味着获取的外链是有意义的或者有趣的。
  3. 增加网络参数:GPT-2将Transformer堆叠的层数增加到48层,隐层的维度为1600,参数量更是达到了15亿。(Bert的参数量也才只有3亿)
  4. 调整transformer:将layer normalization放到每个sub-block之前,并在最后一个Self-attention后再增加一个layer normalization。
  • DialoGPT

类似于GPT-2,DialoGPT也表示为一个自回归(autoregressive, AR)语言模型,利用多层transformer模型架构。但是不同于GPT-2,DialoGPT在从Reddit讨论链中提取的大规模会话对上进行训练。作者的假设是这可以让DialoGPT捕捉到更细粒度的对话流中的联合概率分布P(Target, Source)。在实践中观测到,DialoGPT产生的句子是多样的,并且包含了针对源句子的信息。作者将预训练好的模型在公开的基准数据集DSTC-7上进行了评估,又从Reddit提取了新的6000+条作为参考测试数据。无论在自动评估还是人类评估中,DialoGPT都展示了最先进的结果,将表现提升到接近人类回复的水平。
作者在GTP-2架构的基础上训练DialoGPT模型。参考OpenAI GPT-2将多轮会话作为长文本,将生成任务作为语言模型。
首先,把一次会话中的所有对话合并为一个长文本,以文本结束符作为结尾。源句子(source sentence)表示为S,目标句子(target sentence)表示为T,条件概率可写为

\(p(T|S)=\prod_{n=m+1}^{N}{p(x_n|x_1,\dots ,x_{n-1})}\quad\quad(8)\)

对于一个多轮对话,(8)式可被写为,这本质上是条件概率的乘积。因此,优化单个目标可被视为所有的“源-目标”对。 作者分别训练了参数大小为117M、345M、761M的模型,模型使用了50257个词条(entry)。 使用了Noam学习率,学习率是根据验证损失来选择的。为了加速训练,作者将所有的训练数据压缩到懒加载数据库文件中,数据仅在被需要时才被加载,用独立的异步数据处理来训练。 作者进一步采用了动态批处理策略,将相似长度的会话分组到同一批中,从而提高了训练吞吐量。经过以上调整,训练时间随着GPU数量的增加近似线性下降。
2.1.2.2 创新之处

作者实现了最大化互信息(maximum mutual information,MMI)评分方程。MMI采用预训练反馈模型来预测给定响应的源句子,即P(Source|target)。作者首先使用top-K采样生成了一些假设,然后利用概率P(Source|Hypothesis)来对全部假设重新排名。从直觉上来说,最大化反馈模型概率惩罚了那些温和的假设,这是由于频繁的和重复的假设可以与许多可能的查询关联,因此得到的概率都比较低。
作者尝试使用强化学习的策略梯度方法优化reward,其把reward定义为P(Source|Hypothesis)。验证集的reward在稳定提高,但是不像RNN模型架构训练的那样.作者观察到强化学习训练很容易地收敛到退化的局部最优解,这种情况下假设在重复源句子(鹦鹉学舌)和互信息最大化。作者认为transformers模型由于具有强大的表示能力,因此会陷入局部最优解。因此作者把RL的规范化训练留给未来的工作。

2.1.3 实验描述

训练了3个不同尺寸的模型,总参数分别为117M, 345M和762M。模型规范遵循Radford等人[8]。
模型使用了50,257个条目的词汇表,并在16台Nvidia V100机器上使用NVLink进行了训练。使用了带有16000个warm-up步骤的Noam学习率调度程序。学习率是根据验证集上的损失选择的。对每个模型进行训练,直到验证集上的损失没有增加。对于小型和中型模型,对模型进行了多达5个epoch的训练。对于大型模型,最多训练了3个epoch。
加速训练:为了加速训练过程并适应GPU内存的限制,我们首先将所有训练数据压缩到一个惰性加载的数据库文件中,这样数据只在需要时加载(预取大块以减少访问频率)。我们还利用单独的异步数据过程来扩展训练。因此,训练时间随gpu数量的增加而线性下降。我们进一步采用了一种动态批处理策略,将相似长度的对话分组到同一批处理中,从而提高了训练吞吐量。

2.1.3.1 用到的数据集

Reddit对话例子

Reddit对话例子

Reddit中的评论以树状结构的形式存储,其中的一条链可以被视为一个对话。上图展示了一个Reddit数据集中的例子,由于每轮对话可能来自不同的用户,对话整体的连贯性可能稍差。另外Reddit是一个社区网站,每句对话实际上是一个帖子,因此Reddit数据中经常出现长句。闲聊对话训练集和测试集分别从Reddit在2017年和2018年的帖子中提取。为了保证生成质量,我们进行了仔细的数据清洗。当(1)话语中有URL,(2)句子长度超过200个单词或少于2个单词,(3)对话包含“[removed]”或“[deleted]”,(4)对话中的轮数小于4轮,存在以上情况的对话将被过滤。最终的训练集包含8432个对话。验证集和测试集分别包含6000个对话和8320个对话。
2.1.3.2 验证性能以及评价指标

DSTC(Dialog System Technology Challenges)中有一个端到端的对话建模任务,任务的目标是通过注入基于外部知识的信息来产生超越闲聊(chitchat)的对话。这个任务不同于通常认为的面向目标的、面向任务的或任务完成的对话,因为它没有特定的或预定义的目标(例如预订航班、餐馆预定餐桌等)。相反,它针对的是类似人类的对话,在这种对话中,潜在的目标通常是不明确的或事先未知的,就像在工作和生产环境(如头脑风暴会议)中人们共享信息时看到的那样。
DSTC-7测试数据包含了Reddit数据对话。为了创建一个多引用(multi-reference)测试集,作者使用了包含6次或更多回复的对话。经过其它条件的过滤,得到了大小为2208的“5-引用”测试集。

DialoGPT与Team B、PERSONALITYCHAT对比

image.png

作者利用了标准的机器翻译评价BLEU、METEOR、NIST来进行自动评估,并用Entropy和Dist-n来评估词汇多样性。 作者将DialoGPT与“Team B”(竞赛的优胜模型)、GPT、PERSONALITYCHAT(一种seq2seq模型,已应用于生产环境作为微软Azure的认知服务)行了比较,结果如上表所示,在各项都是目前最先进的水平。

2.2 GPT-3

该部分研究的论文是《Language Models are Few-Shot Learners》[9]。

2.2.1 问题描述

GPT-3主要聚焦于更通用的NLP模型,解决当前BERT类模型的两个缺点:

  1. 对领域内有标签数据的过分依赖:虽然有了预训练+精调的两段式框架,但还是少不了一定量的领域标注数据,否则很难取得不错的效果,而标注数据的成本又是很高的。
  2. 对于领域数据分布的过拟合:在精调阶段,因为领域数据有限,模型只能拟合训练数据分布,如果数据较少的话就可能造成过拟合,致使模型的泛化能力下降,更加无法应用到其他领域。

因此GPT-3的主要目标是用更少的领域数据、且不经过精调步骤去解决问题。

2.2.2 使用的方法

2.2.2.1 核心思想
  • In-context learning

In-context learning是这篇论文中介绍的一个重要概念,要理解in-context learning,我们需要先理解meta-learning(元学习)[10,11]。对于一个少样本的任务来说,模型的初始化值非常重要,从一个好的初始化值作为起点,模型能够尽快收敛,使得到的结果非常快的逼近全局最优解。元学习的核心思想在于通过少量的数据寻找一个合适的初始化范围,使得模型能够在有限的数据集上快速拟合,并获得不错的效果。
这里的介绍使用的是MAML(Model-Agnostic Meta-Learning)算法[11],正常的监督学习是将一个批次的数据打包成一个batch进行学习。但是元学习是将一个个任务打包成batch,每个batch分为支持集(support set)和质询集(query set),类似于学习任务中的训练集和测试集。

meta-learning的伪代码

meta-learning的伪代码

对一个网络模型 $f$,其参数表示为$\theta$,它的初始化值被叫做meta-initialization。MAML的目标则是学习一组meta-initialization,能够快速应用到其它任务中。MAML的迭代涉及两次参数更新,分别是内循环(inner loop)和外循环(outer loop)。内循环是根据任务标签快速的对具体的任务进行学习和适应,而外学习则是对meta-initialization进行更新。直观的理解,我用一组meta-initialization去学习多个任务,如果每个任务都学得比较好,则说明这组meta-initialization是一个不错的初始化值,否则我们就去对这组值进行更新,如下图所示。目前的实验结果表明元学习距离学习一个通用的词向量模型还是有很多工作要做的。

meta-learning的可视化结果

meta-learning的可视化结果

而GPT-3中据介绍的in-context learning(情境学习)则是元学习的内循环,而基于语言模型的SGT则是外循环,如下图所示。

GPT-3中的内循环和外循环

GPT-3中的内循环和外循环

而另外一个方向则是提供容量足够大的transformer模型来对语言模型进行建模。而近年来使用大规模的网络来训练语言模型也成为了非常行之有效的策略,这也促使GPT-3一口气将模型参数提高到 1,750 亿个。
  • Few-shot,one-shot,zero-shot learning

在few-shot learning中,提供若干个( 10 - 100 个)示例和任务描述供模型学习。one-shot laerning是提供1个示例和任务描述。zero-shot则是不提供示例,只是在测试时提供任务相关的具体描述。作者对这3种学习方式分别进行了实验,实验结果表明,三个学习方式的效果都会随着模型容量的上升而上升,且few shot > one shot > zero show。
从理论上讲GPT-3也是支持fine-tuning的,但是fine-tuning需要利用海量的标注数据进行训练才能获得比较好的效果,但是这样也会造成对其它未训练过的任务上表现差,所以GPT-3并没有尝试fine-tuning。

随着参数量的提升,三种学习方式的模型的效果均有了不同程度的提升

随着参数量的提升,三种学习方式的模型的效果均有了不同程度的提升

2.2.2.2 创新之处

GPT-3采用了不同的学习方法。不需要大量标记数据来推断新问题。相反,它可以不从数据(零次学习 Zero-Shot Learning )中学习,只从一个例子(一次学习 one-Shot Learning)或几个例子中学习。如下图所示。

image.png

GPT-3沿用了GPT-2的结构,但是在网络容量上做了很大的提升,具体如下:
  • GPT-3采用了96 层的多头transformer,头的个数为 96 ;
  • 词向量的长度是12,888 ;
  • 上下文划窗的窗口大小提升至2,048个token;
  • 使用了alternating dense和locally banded sparse attention[11]。

2.2.3 实验描述

2.2.3.1 用到的数据集

GPT-3共训练了5个不同的语料,分别是低质量的Common Crawl,高质量的WebText2,Books1,Books2和Wikipedia,GPT-3根据数据集的不同的质量赋予了不同的权值,权值越高的在训练的时候越容易抽样到,如下表所示。

image.png

2.2.3.2 验证性能以及评价指标

作者们训练了以下几种尺寸的模型进行对比:

image.png

实验证明Few-shot下GPT-3有很好的表现:

image.png

2.2.4 个人评价

最近爆火的chatGPT也是基于GPT-3实现的,不得不承认仅仅用惊艳很难描述GPT-3的优秀表现。首先,在大量的语言模型数据集中,GPT-3超过了绝大多数的zero-shot或者few-shot的state-of-the-art方法。另外GPT-3在很多复杂的NLP任务中也超过了fine-tune之后的state-of-the-art方法,例如闭卷问答,模式解析,机器翻译等。除了这些传统的NLP任务,GPT-3在一些其他的领域也取得了非常震惊的效果,例如进行数学加法,文章生成,编写代码等。
读懂了GPT-3的原理,相信我们就能客观的看待媒体上对GPT-3的过分神话了。GPT-3的本质还是通过海量的参数学习海量的数据,然后依赖transformer强大的拟合能力使得模型能够收敛。基于这个原因,GPT-3学到的模型分布也很难摆脱这个数据集的分布情况。得益于庞大的数据集,GPT-3可以完成一些令人感到惊喜的任务,但是GPT-3也不是万能的,对于一些明显不在这个分布或者和这个分布有冲突的任务来说,GPT-3还是无能为力的。例如通过目前的测试来看,GPT-3还有很多缺点的:

  1. 对于一些命题没有意义的问题,GPT-3不会判断命题有效与否,而是拟合一个没有意义的答案出来;
  2. 由于40TB海量数据的存在,很难保证GPT-3生成的文章不包含一些非常敏感的内容,例如种族歧视,性别歧视,宗教偏见等;
  3. 受限于transformer的建模能力,GPT-3并不能保证生成的一篇长文章或者一本书籍的连贯性,存在下文不停重复上文的问题。

但是瑕不掩瑜,总之,GPT-3对AI领域的影响无疑是深远的,如此强大性能的语言模型的提出,为下游各种类型的NLP任务提供了非常优秀的词向量模型,在此基础上必将落地更多有趣的AI应用。

2.3 Blender

该部分研究的论文是《Recipes for building an open-domain chatbot》[12]。

2.3.1 问题描述

构建开放领域的聊天机器人是机器学习研究的一个挑战领域。虽然之前的工作表明,在参数数量和训练的数据规模上对神经模型进行扩展可以改善结果,但其他成分对于高性能的聊天机器人是否重要?

2.3.2 使用的方法

2.3.2.1 核心思想

总共三个模型:
a.检索模型(Retriever)
从候选集中选取最合适的句子做完机器人的答复。具体打分和排序作者引用了Poly-encoder, 论文:
Poly-encoder:
可以理解成是对Siamese结构的一种改进:
Bert的打分方法是把res和context拼接在一起送进BERT,但是这种做法很耗时;作者认为context是由前面几轮对话拼接得到,一般会比res更长,所有Poly-encoder采用了M个向量对进行表示;
作者的实验表明,m越大效果越高,当然模型的打分也越耗时。很多数据集上Poly-encoder获得比Siameses结构更好的结构,和BERT原始效果解决;

image.png

检索模型训练的目标函数是InfoNCE, 其中负样本来自同一batch下随机选取的其他样本:

\(\mathcal{L}_{q}=-log\frac{exp(q\cdot k_{+}/\tau)}{\sum_{i=0}^{K}{exp(q\cdot k_{i}/\tau)}}\quad\quad(9)\)

inferrence时,候选回复来自训练集的所有response
b.生成模型(Generator)
模型:
Seq2seq结构,采用标准的transformer结构,且采用encoder少,decoder层数多的架构;

image.png

三个尺寸的生成模型,2.7B模型对应Meena模型
目标函数:
模型的训练方法是MLE(最大似然估计),loss采用的Unlikehood Loss(UL),提高正确率词的概率同时降低其他词概率。

\(\mathcal{L}_{UL}^{(i)}(p_{\theta},\mathcal{C}_{1:T},\mathbf{x},\mathbf{y})=-\sum_{t=1}^{|y|}\sum_{y_c\in\mathcal{C}_{t}}log(1-p_{\theta}(y_c|\mathbf{x},y_{<t}))\quad\quad(10)\)
\(\mathcal{L}_{ULE}^{(i)}=\mathcal{L}_{MLE}^{(i)}+\alpha \mathcal{L}_{UL}^{(i)}\quad\quad(11)\)

Unlikehood的关键是选取那些被打压的负Token。
作者选的是那些容易组合成常见n-grams的tokens。如果一个token组成的n-grams比真实答案中n-grams比例高,就会有更大率被选取为负token。这么做的目的是期望降低生成无意义回复的比例.
Decoding:
另一篇文章Menna指出,采用时Sampling的方法比beam search更好,所有采用的Sampling-and-Rank方法;但这里提出模型训l练的很好的时候采用beam search效果不比sampling差;所有Blender采用的是一种优化的Beam search;
控制生成回复的最小长度的方法:

  1. 设置最小长度(Minimum Length):要求回复的长度必须大于设定的值,如果不够长度,那么强制步生成结束tokn
  2. 预测长度(Predictive Length):把长度分成四段,比如<10,<20,<30,>30;然后用四分类模型预测当前回复应该是再那一段;模型采用的Poly-encoder
  3. 屏蔽重复的子序列(subsequence Blocking):不允许产生当前句子和前面对话(context)已经存在的3-grams

对beam searchi加约束进行生成的方法很多,但是如果模型本身没有训练好,加这些约束后的生成效果不是很大;
c.检索+生成模型(Retrieve and Refine)
RetNRef先利用检索模型检索出一个结果,然后把检索得到的结果拼#接到context后面,整体做完generator的输入;
检索的过程:
对话检索(Dialogue Retrieve):直接从训练数据中检索出得分最高的作为回复
知识检索(knowledge Retrieve):

  1. 引入外部知识库比如wki百科,比如先从当前对话topic和最后几轮对话,各自检索出top-7的文章
  2. 把21篇文章各自分句,然后把文章的标题加到每个句子前面,可以获得很多候选句:
  3. 再利用poly-encoder结构的模型,对候选句子进行排序,最终得到top-1的检索结果
  4. 同时也会再训练一个单独的分类器判断是否需要从知识库中检索知识。回复某些对话context可以不需要额外知识时就不用进行追加检索知识;
2.3.2.2 创新之处
  1. 混合技能
    通过微调强调理想会话技能的数据,可以做出很大的改进。选择使模型专注于个性和参与度、知识和同理心的任务,通过使用最近推出的混合技能谈话 (BST) 设置[13]获得巨大收益,该设置通过提供培训来针对这些方面数据和初始会话上下文(角色和主题)。使用 BST 的小型模型可以匹配或优于不使用 BST 的大型模型。虽然 BST 强调理想的特征,但也表明这种调整可以最大限度地减少从大型语料库中学到的不良特征。
  2. 解码算法
    解码算法的选择是至关重要的,两个模型具有相同的复杂度,但译码算法不同,其结果可能相差很大。我们特别指出,机器人话语的长度对于人类对质量的判断至关重要——太短,反应被视为沉闷或缺乏兴趣,太长,机器人似乎是胡扯,不听话。我们表明,与之前报告光束搜索不如采样的工作相反[14,15],通过控制权衡,仔细选择搜索超参数可以获得强大的结果。

2.3.3 实验描述

2.3.3.1 用到的数据集

高质量的聊天句子:个性有趣,包含知识,富有同理心;
训练Blender用的数据集:

  • http://pushshift.io Reddit:整理自Reddit网站上的讨论;数据量大,可用于训练预训练模型(检索模型训练使用MLM、生成模型训l练使用LM);
  • ConvAI2:带个性的对话数据,对话目标是了解对方,所以对话个性有趣:
  • Empathetic Dialogues(ED):一个人发牢骚另一个人倾听,所以对话富有同理心;
  • Wizard of Wikipedia(WoW:基于wiki选取的topic进行对话,所以对话包含知识:
  • Blended SkillTalk(BST):基于ConvAl:2、ED和WoW构建,并融合它们各自的优势。同时提供对话人的背景、对话主题和对话历史

模型训练:

image.png

在优质数据上训练出来的模型,能降低模型产生不好回复的概率。
2.3.3.2 验证性能以及评价指标

评估的方法:
自动评估:采用PPL,检索打分模型评估看Hits@1/k, 随机找k-1个回复,和真回复放在一起,top-1命中率
人工评估:ACUTE-Eval和Self-Chat ACUTE-Eval这两个标准都是评估不同的机器人,看哪个更会聊天:
评估结果:
PPL:
RefNref相比于其他同等规模的生成模型,PPL会更大一点

image.png

  • Self-Chat ACUTE-Eval:

三种模型:Retrieval vs.Generator vs.RetNRef

image.png

总结:最小尺寸的Retrieval和RetNref都比生成模型效果更好;Retrieval比RetNref都更好一点。
Beamsearch中加入长度限制:

image.png

总结:加入长度约束后效果显著,最划小限制长度为20最好:

image.png

总结:子序列屏蔽有点用,但不显著。且beamsearchi和两种samping对比结果差不多;
Loss函数选择:

image.png

MLE和UL对比,UL更好点但是不显著:

  • ACUTE-Eval:

Retrieval vs.Generator vs.RetNRef

image.png

Generatori和RetNRef(使用的beamsearch都功加入了最)小长度为20的限制;
结论:生成器显著优于检索或检索+生成
Blender vs.Meena

image.png

结论:结论肯定是Blender显著优于Meena了,不论是比较对话的有趣性(engagingness),还是比较对话更像直人(humanness)方面。Blender的胜率都达到了70%甚至更高。
Blender vs.Human

image.png

2.4 PLATO–XL

该部分研究的论文是《PLATO-XL: Exploring the Large-scale Pre-training of Dialogue Generation》[16]。

2.4.1 问题描述

近些年来,预训练模型的共识是更大的模型 + 更好的数据 = 更好的效果。但是,在对话预训练领域,DialoGPT 的 345M 版本要优于 762M,Blender 的 2.7B 版本要优于 9.4B 的版本,这些反常的现象让人怀疑模型的规模和生成效果是否有清晰的结论关系。

2.4.2 使用的方法

2.4.2.1 核心思想

网络结构
PLATO-XL 的架构如下图所示,使用 Unified Transformer 的 Seq2Seq 的训练方法。将输入和输出以 [SEP] 间隔,输入内部计算双向 self-attention,输入 - 输出间存在 cross-attention,输出间为单侧的 mask-attention。这种做法的优点是参数利用率高,同一套参数即用来编码又用来解码,得到的模型的泛用性也强。

PLATO-XL 的网络概览

PLATO-XL 的网络概览

2.4.2.2 创新之处

多角色意识预训练
这个名字听着很玄乎,其实思想很简单。从社交媒体中搜集的数据一般如下图所示。多个用户的连续回帖构成了多轮对话。但是由于每个人的性格、观念等的不同,直接拿去训练多轮对话容易产生不一致性。因此 PLATO 引入了角色嵌入(role embedding)来解决这个问题,将角色嵌入和句子向量相加即可。如下面的图所示。

左:展示社交媒体对话的一个小例子。右:对应的消息树。

左:展示社交媒体对话的一个小例子。右:对应的消息树。

2.4.3 实验描述

PLATO-XL 拥有 11B 参数,使用了 72 个 Transformer 和 32 个注意力头,嵌入维度为 3072,前馈层的隐藏状态为 18432。为了训练的稳定性,PLATO-XL 参考 GPT2 将 Layer Normalization 提前到块开始,并对残差层初始参数进行缩放 ,N 为残差层数量。
PLAOT-XL 基于飞桨实现,使用了 256 块 32G V100 进行训练。受限于显存,11B 模型无法容纳在单张卡中,标准的数据并行无法进行。因此将优化器状态、梯度、参数分别保存在不同设备,以减少通信并提高计算效率。为了提高 batch size,论文还使用了梯度检查点,即不保存一部分前向过程中的激活值,在反向传播时重新计算,用时间换空间。

2.4.3.1 用到的数据集

数据集:
英文:来自 Reddit,由第三方收集公开于 pushshift.io 上,使用 PLATO-2 的精细清洗流程。训练集为 2005 年到 2019 年的 811M 个样本。词汇表包含 8k BPE token,使用 SentencePiece 构建。
中文:数据集来自社交媒体,清洗后包含 1.2B 训练样本,词表包含 30k BPE token。

2.4.3.2 验证性能以及评价指标

评估指标
在开放域对话中,自动化指标和人工平板的相关性很小,因此论文主要通过众包平台进行人工评估。
连贯性(Coherence):话语级指标,回复是否与上下文相关和一致。
信息性(Informativeness):话语级指标,给定上下文的情况下,回复是否有信息。
参与度(Engagingness):会话级指标,用户是否愿意与机器人持续聊天。
上述三个指标取值为 [0,1,2],分数越高越好。为了进一步分析对话质量,还有两个更细粒度的评估指标:
不一致性(Inconsistency):细粒度评估连贯性,回复是否与上下文冲突。
错觉(Hallucination ):细粒度评估信息性,回复是否存在事实性错误。
这两项指标取值为 [0,1],越小越好。

3. 横向对比

英文self-chat评价结果

English Models # Params Coherence Inconsistency↓ Informativeness Hallucination↓ Engaginess
DialoGPT 345M 0.792 0.508 0.692 0.516 0.220
Blender 2.7B 1.768 0.084 1.692 0.128 1.500
PLATO-XL 11B 1.908 0.024 1.800 0.024 1.800

中文self-chat评价结果

English Models # Params Coherence Inconsistency↓ Informativeness Hallucination↓ Engaginess
CDial-GPT 95M 1.188 0.104 0.908 0.388 0.460
PLATO-XL 11B 1.952 0.004 1.948 0.016 1.940

GPT各代对比

GPT-1 GPT-2 GPT-3
训练数据集 BooksCorpus:7000本未发表的书籍 WebText:清洗过的Reddit数据,8百万文档中的40GB文本数据 5种语科集:Common Crawl, WebText2, Books1, Books2 and Wikipedia.
模型框架 Transformer decoder,每层由masked self attention + feed forward layer组成 一样
模型参数 层数:12层word embeddingsize:768参数:117M 层数:48层word embeddingsize:1600参数:1.5 billion 层数:96word embeddingsize:12888参数:175 billion
模型表现 在9/12任务中获得state of art表现:问答,阅读理解,文本总结 在7/8任务中超过state of art表现随着模型参数变多,模型的表现星现log-linear上升,没有到达瓶颈 在few-shot learning,one-shot learning,zero-shot learning中表现突出
目标函数 非监督的语言模型+监督的精调分类模型 引入task conditioning:P(out put|input,task), 根据输入和任务,预测输出,为zero-shot learning奠定基础

4. 总结

(1) 预训练模型,单纯要想效果上数据量上参数量,猛训就完事了,相比花里胡俏的trick ,数据量和大模型更能带来大的甚至是质的提升,相对来说简单粗暴。
(2) 目前的一个训练样本都是深度遍历对话tree,是否可以进一步考虑宽度遍历,使得其学到大家讨论这一层面信息?
(3) 在闲聊领域端到端的这种大模型应该是个趋势。
(4)关于open-domain领域,对话技巧的研究目前是个热门,已经有部分工作进行了探索,大部分涌现的paper时间都在最近2年即2020年开始,但是在中文领域目前还没有很多工作,目前高质量、深度聊天这块还有很大提升空间。
(5)GPT-3如此高昂的计算代价也引发了一些关于AI领域垄断的一些担心,对于如此高的算力要求,中小企业是否有能力负担的起,或者对于这些企业来说,是否有必要花这么多钱就训练一个词向量模型。长此以往,恐怕会形成AI巨头对算力要求高的算法的技术垄断。

参考文献

[1] Chen, H., Liu, X., Yin, D., & Tang, J. (2017). A survey on dialogue systems: Recent advances and new frontiers. Acm Sigkdd Explorations Newsletter, 19(2), 25-35.
[2] Hu, B., Lu, Z., Li, H., & Chen, Q. (2014). Convolutional neural network architectures for matching natural language sentences. Advances in neural information processing systems, 27.
[3] Zhou, X., Dong, D., Wu, H., Zhao, S., Yu, D., Tian, H., ... & Yan, R. (2016, November). Multi-view response selection for human-computer conversation. In Proceedings of the 2016 conference on empirical methods in natural language processing (pp. 372-381).
[4] Wu, Y., Wu, W., Xing, C., Zhou, M., & Li, Z. (2016). Sequential matching network: A new architecture for multi-turn response selection in retrieval-based chatbots. arXiv preprint arXiv:1612.01627.
[5] Zhou, X., Li, L., Dong, D., Liu, Y., Chen, Y., Zhao, W. X., ... & Wu, H. (2018, July). Multi-turn response selection for chatbots with deep attention matching network. In Proceedings of the 56th Annual Meeting of the Association for Computational Linguistics (Volume 1: Long Papers) (pp. 1118-1127).
[6]张开颜,张伟男,刘挺.基于深度学习的多方对话研究综述[J].中国科学:信息科学,2021,51(08):1217-1232.
[7] Zhang, Y., Sun, S., Galley, M., Chen, Y. C., Brockett, C., Gao, X., ... & Dolan, B. (2019). Dialogpt: Large-scale generative pre-training for conversational response generation. arXiv preprint arXiv:1911.00536.
[8] Radford, A., Wu, J., Child, R., Luan, D., Amodei, D., & Sutskever, I. (2019). Language models are unsupervised multitask learners. OpenAI blog, 1(8), 9.
[9] Brown, T., Mann, B., Ryder, N., Subbiah, M., Kaplan, J. D., Dhariwal, P., ... & Amodei, D. (2020). Language models are few-shot learners. Advances in neural information processing systems, 33, 1877-1901.
[10] Rajeswaran, A., Finn, C., Kakade, S. M., & Levine, S. (2019). Meta-learning with implicit gradients. Advances in neural information processing systems, 32.
[11] Finn, C., Abbeel, P., & Levine, S. (2017, July). Model-agnostic meta-learning for fast adaptation of deep networks. In International conference on machine learning (pp. 1126-1135). PMLR.
[12] Roller, S., Dinan, E., Goyal, N., Ju, D., Williamson, M., Liu, Y., ... & Weston, J. (2020). Recipes for building an open-domain chatbot. arXiv preprint arXiv:2004.13637.
[13] Smith, E. M., Williamson, M., Shuster, K., Weston, J., & Boureau, Y. L. (2020). Can you put it all together: Evaluating conversational agents' ability to blend skills. arXiv preprint arXiv:2004.08449.
[14] Holtzman, A., Buys, J., Du, L., Forbes, M., & Choi, Y. (2019). The curious case of neural text degeneration. arXiv preprint arXiv:1904.09751.
[15] Adiwardana, D., Luong, M. T., So, D. R., Hall, J., Fiedel, N., Thoppilan, R., ... & Le, Q. V. (2020). Towards a human-like open-domain chatbot. arXiv preprint arXiv:2001.09977.
[16] Bao, S., He, H., Wang, F., Wu, H., Wang, H., Wu, W., ... & Niu, Z. (2021). Plato-xl: Exploring the large-scale pre-training of dialogue generation. arXiv preprint arXiv:2109.09519.

posted @ 2023-05-11 17:02  LateSpring  阅读(167)  评论(0编辑  收藏  举报