对话系统近年论文研究
对话系统近年论文研究
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层)如下图
\(L_1(u)=\sum_{i}{logP(u_i|u_{i-k},\dots ,u_{i-1};\Theta)}\quad\quad(1)\)
\(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)\)
\(P(y|x^1,\dots ,x^m)=softmax(h^m_lW_y)\quad\quad(5)\)
\(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)\)
- GPT-2
GPT-2希望在完全不理解词的情况下建模,以便让模型可以处理任何编码的语言。GPT-2主要针对zero-shot问题。它在解决多种无监督问题时有很大提升,但是对于有监督学习则差一些。
GPT-2依然沿用GPT单向transformer的模式,只不过做了一些改进与改变。那GPT-2相对于GPT有哪些不同呢?看看下面几方面:
- GPT-2去掉了fine-tuning层:不再针对不同任务分别进行微调建模,而是不定义这个模型应该做什么任务,模型会自动识别出来需要做什么任务。这就好比一个人博览群书,你问他什么类型的问题,他都可以顺手拈来,GPT-2就是这样一个博览群书的模型。
- 在Pretrain部分基本与GPT方法相同,在Fine-tune部分把第二阶段的Fine-tuning有监督训练具体NLP任务,换成了无监督训练具体任务,这样使得预训练和Fine-tuning的结构完全一致。当问题的输入和输出均为文字时,只需要用特定方法组织不同类型的有标注数据即可代入模型,如对于问答使用“问题+答案+文档”的组织形式,对于翻译使用“英文+法文”形式。用前文预测后文,而非使用标注数据调整模型参数。这样既使用了统一的结构做训练,又可适配不同类型的任务。虽然学习速度较慢,但也能达到相对不错的效果。
- 增加数据集:这是一个比更大还更大的数据集。GPT-2 构造了一个新数据集,WebText。这些无监督样本,全部来自于 Reddit 的外链,而且是那些获得至少三个赞的外链,共计4500万链接。使用 Dragnet 和 Newspaper 两种工具来抽取网页内容。过滤 2017 年12月之后的网页。删去来自 Wikipedia 的网页。去重。最后还做一些琐碎的没有明说的所谓启发式清洗工作。如此得到8百万网页共计 40GB 文本数据。WebText 数据集的特点在于全面而干净。全面性来源于 Reddit 本身是一个门类广泛的社交媒体网站。干净来源于作者的有意筛选,至少三赞意味着获取的外链是有意义的或者有趣的。
- 增加网络参数:GPT-2将Transformer堆叠的层数增加到48层,隐层的维度为1600,参数量更是达到了15亿。(Bert的参数量也才只有3亿)
- 调整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)\)
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对话例子
2.1.3.2 验证性能以及评价指标
DSTC(Dialog System Technology Challenges)中有一个端到端的对话建模任务,任务的目标是通过注入基于外部知识的信息来产生超越闲聊(chitchat)的对话。这个任务不同于通常认为的面向目标的、面向任务的或任务完成的对话,因为它没有特定的或预定义的目标(例如预订航班、餐馆预定餐桌等)。相反,它针对的是类似人类的对话,在这种对话中,潜在的目标通常是不明确的或事先未知的,就像在工作和生产环境(如头脑风暴会议)中人们共享信息时看到的那样。
DSTC-7测试数据包含了Reddit数据对话。为了创建一个多引用(multi-reference)测试集,作者使用了包含6次或更多回复的对话。经过其它条件的过滤,得到了大小为2208的“5-引用”测试集。
DialoGPT与Team B、PERSONALITYCHAT对比
2.2 GPT-3
该部分研究的论文是《Language Models are Few-Shot Learners》[9]。
2.2.1 问题描述
GPT-3主要聚焦于更通用的NLP模型,解决当前BERT类模型的两个缺点:
- 对领域内有标签数据的过分依赖:虽然有了预训练+精调的两段式框架,但还是少不了一定量的领域标注数据,否则很难取得不错的效果,而标注数据的成本又是很高的。
- 对于领域数据分布的过拟合:在精调阶段,因为领域数据有限,模型只能拟合训练数据分布,如果数据较少的话就可能造成过拟合,致使模型的泛化能力下降,更加无法应用到其他领域。
因此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的可视化结果
GPT-3中的内循环和外循环
- 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)或几个例子中学习。如下图所示。
- 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根据数据集的不同的质量赋予了不同的权值,权值越高的在训练的时候越容易抽样到,如下表所示。
2.2.3.2 验证性能以及评价指标
作者们训练了以下几种尺寸的模型进行对比:
实验证明Few-shot下GPT-3有很好的表现:
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还有很多缺点的:
- 对于一些命题没有意义的问题,GPT-3不会判断命题有效与否,而是拟合一个没有意义的答案出来;
- 由于40TB海量数据的存在,很难保证GPT-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原始效果解决;
检索模型训练的目标函数是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层数多的架构;
三个尺寸的生成模型,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):
- 引入外部知识库比如wki百科,比如先从当前对话topic和最后几轮对话,各自检索出top-7的文章
- 把21篇文章各自分句,然后把文章的标题加到每个句子前面,可以获得很多候选句:
- 再利用poly-encoder结构的模型,对候选句子进行排序,最终得到top-1的检索结果
- 同时也会再训练一个单独的分类器判断是否需要从知识库中检索知识。回复某些对话context可以不需要额外知识时就不用进行追加检索知识;
2.3.2.2 创新之处
- 混合技能
通过微调强调理想会话技能的数据,可以做出很大的改进。选择使模型专注于个性和参与度、知识和同理心的任务,通过使用最近推出的混合技能谈话 (BST) 设置[13]获得巨大收益,该设置通过提供培训来针对这些方面数据和初始会话上下文(角色和主题)。使用 BST 的小型模型可以匹配或优于不使用 BST 的大型模型。虽然 BST 强调理想的特征,但也表明这种调整可以最大限度地减少从大型语料库中学到的不良特征。 - 解码算法
解码算法的选择是至关重要的,两个模型具有相同的复杂度,但译码算法不同,其结果可能相差很大。我们特别指出,机器人话语的长度对于人类对质量的判断至关重要——太短,反应被视为沉闷或缺乏兴趣,太长,机器人似乎是胡扯,不听话。我们表明,与之前报告光束搜索不如采样的工作相反[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构建,并融合它们各自的优势。同时提供对话人的背景、对话主题和对话历史
模型训练:
2.3.3.2 验证性能以及评价指标
评估的方法:
自动评估:采用PPL,检索打分模型评估看Hits@1/k, 随机找k-1个回复,和真回复放在一起,top-1命中率
人工评估:ACUTE-Eval和Self-Chat ACUTE-Eval这两个标准都是评估不同的机器人,看哪个更会聊天:
评估结果:
PPL:
RefNref相比于其他同等规模的生成模型,PPL会更大一点
- Self-Chat ACUTE-Eval:
三种模型:Retrieval vs.Generator vs.RetNRef
总结:最小尺寸的Retrieval和RetNref都比生成模型效果更好;Retrieval比RetNref都更好一点。
Beamsearch中加入长度限制:
总结:加入长度约束后效果显著,最划小限制长度为20最好:
总结:子序列屏蔽有点用,但不显著。且beamsearchi和两种samping对比结果差不多;
Loss函数选择:
MLE和UL对比,UL更好点但是不显著:
- ACUTE-Eval:
Retrieval vs.Generator vs.RetNRef
Generatori和RetNRef(使用的beamsearch都功加入了最)小长度为20的限制;
结论:生成器显著优于检索或检索+生成
Blender vs.Meena
结论:结论肯定是Blender显著优于Meena了,不论是比较对话的有趣性(engagingness),还是比较对话更像直人(humanness)方面。Blender的胜率都达到了70%甚至更高。
Blender vs.Human
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 的网络概览
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.