EVA2.0:Investigating Open-Domain Chinese Dialogue Systems with Large-Scale Pre-Training
摘要
在本文中,我们进行了广泛的实验来调查这些未被充分探索的因素,包括数据质量控制、模型架构设计、训练方法和解码策略。我们提出了EVA2.0,一个具有28亿个参数的大规模预训练开放域中文对话模型,并将我们的模型和代码公开。据我们所知,EVA2.0是最大的开源中文对话模型。自动和人工评估表明,我们的模型明显优于其他开源模型。我们还通过列举一些失效案例来讨论这项工作的局限性,并提出一些未来的方向。
1 引言
预训练对话模型可以从大规模语料中或缺通用的对话技巧和各种各样的知识,在下游任务中微调这些模型通常要比自行训练的模型效果更好。但是并非增加模型参数和增加训练语料就可以构建出一个出色的对话模型,其中还涉及到其他因素,比如预训练任务、解码策略、评估指标等,可能还有其他影响对话模型性能的因素尚未发现。目前出现的许多工作都未提供数据收集、数据处理过程和数据质量控制、解码策略等相关细节。通常都只是给出粗略的参数分析。
因此,本文就如何构建基于大规模预培训的开放域汉语对话系统进行了研究。我们对训练前语料库进行了详细的分析,并对模型设计、训练前方法和解码策略进行了广泛的实验。首先,我们全面分析了最大的中文对话数据集WDC-Dialogue的质量。我们发现,尽管该数据集规模庞大,但在上下文-响应相关性、语言流利性和领域多样性等方面存在严重问题。其次,我们探讨模型架构、预训练方法和解码策略的几种变体。我们的经验发现,这些因素确实对训练前的模型有一个非平凡的影响。
综合所有这些,我们首先设计了一个数据清理管道,并构建了用于大规模预训练的60GB高质量对话数据集。在此基础上,构建了参数为2.8B的开放域对话模型EVA2.0,以及参数为300M和970M的两种变体。在自动和人工评估中,2.8B EVA2.0模型显著优于其他开源生成对话模型。我们注意到,即使是300M型在自动评估中表现与EVA1.0模型相当,而只需要11%的参数。本文还通过案例分析,从不同角度分析了EVA2.0的会话能力,为未来大规模预训练开放域汉语对话系统的研究提供参考。我们的工作为汉语对话模式的研究提供了基础模型,我们相信这将极大地造福于对话研究界。
2 相关工作
大规模预训练语言模型
迄今为止,已经出现了GPT\BERT\XLNET\BART\ROBERTA\CPM\PANGU\YUAN\MENGZI\ERNIE等大规模语言模型。
预训练对话模型
除了一般的语言理解和生成,会话前培训也越来越受到关注。比如DialoGPT\LaMDA\CDial-GPT\PLATO\EVA1.0
然而,这些作品大多都没有涉及到如何构建对话模型的细节。在本文中,除了最终的模型评估外,我们还关注了大规模的预先训练的汉语对话模型的关键配方。
3 数据
在大规模的预训练中,数据从本质上影响模型的表现和行为。在本节中,我们定义了几个自动的数据质量评价指标,综合衡量从社交媒体获得的对话前训练语料库的相关性、流畅性和领域多样性。然后,我们使用这些指标来分析WDC-Dialogue (Zhou et al., 2021),发现尽管WDC-Dialogue规模很大,但存在着上下文-响应相关性、语言流利性和领域多样性等严重问题。最后,在WDC-Dialogue的基础上,设计了一个更好的数据处理管道来构建EVA2.0的预训练数据。
3.1 数据质量评估
Relevance Score
语境与反应之间的关联分数是反映对话连贯性和参与性的重要指标。我们采用未经训练和训练过的度量标准来度量我们数据集的相关性。
对于未经训练的度量,我们计算上下文和响应之间的词覆盖率作为相关性的一个方面。此外,我们对一个会话中重叠单词间隔越远的数据样本给予更高的分数,以显示对长依赖属性的偏好。在形式上,上下文(C)和反应(R)的关联得分被定义为
$$S_1 = \sum_(w_i\in C,w_j\inR)dist(w_i,w_j)^T I(w_i=w_j)$$
其中,dist(w_i,w_j)表示包含wi和wj的话语之间的索引距离。使用T来调整分数。
训练过的指标,使用LCCC数据集微调了一个BERT-BASE的二进制分类器,来识别回复与上下文之间是否“合适”。在评价中,我们使用“适当”的分类概率作为关联得分:
$$S_2 = log p(1|C,R)$$
与依赖于精确重叠的未训练度量相比,训练后的度量更好地估计了语义相关性。
Fluency Score
我们使用基于kenlm的统计模型计算数据集中每个句子的概率。对话会话中句子的平均流利度得分被定义为
$$S_3 = - \frac{1}{n}\sum_(i<=n>)logP(w_1^i,w_2^i,\cdots,w_(|u_i|)^i)$$
其中n是会话的话语数,UI = wi 1wi 2, wi∣UI∣是第i个话语。
Entertainment Tendency
中国的社交媒体平台上有很多关于娱乐明星和粉丝的不受欢迎的信息交流,这些在日常对话中是不常见的。因此,我们计算中国明星的对话比例来衡量娱乐倾向。这也在一定程度上反映了数据集的领域多样性。
3.2 数据过滤
Dataset-level Filtering
我们发现一些数据集不适合开放领域的对话。对他们的培训将导致不受欢迎的行为,如电子商务客户服务的基调。因此,我们将JDDC (Chen et al., 2020)这样的数据集从WDC-Dialogue中删除。
Context-level Filtering
由于我们的数据集主要来自社交媒体平台,一些上下文对应着相当数量的回复(例如,微博帖子及其评论)。这些回复在格式上非常相似,可能会严重损害语言模型的表现。因此,在过滤过程中,我们为每个上下文设置了一个最大回复数。
Rule-based Filtering
我们在EVA1.0中加强了基于规则的过滤程序。例如,将繁体字转换为简体字,去除不合理的多个连续标点符号,简化黑名单,以避免对一些常见的一词多义现象过于敏感。
Classifier-based Filtering
对于语料库中的每一个对话,我们计算上述定义的相关度和流利度得分,并过滤掉得分低于阈值的样本。一个会话的总分定义为S = αS1 + βS2 + γS3。在实践中,我们根据经验为不同的数据源选择不同的阈值,以适应其数据分布,使最终的数据集均衡。
3.3 数据扩展
社交媒体与开放领域对话之间的分布必然存在差距。例如,流行语在网络上很流行,但在日常对话中却很少见。为了消除我们的数据集的偏见并增加其领域多样性,我们从额外的公共来源中收集了四种类型的数据:
(1)从电影或电视剧字幕中提取的对话3 (Lison和Tiedemann, 2016);
(2)从小说和故事中提取的对话(Guan等人,2021);
(3)知道问答组4;
(4)现有众包语料库,包括DuConv (Wu et al., 2019)、KdConv (Zhou et al., 2020)、DuRecDial (Liu et al., 2020)和NaturalConv (Wang et al., 2021b)。
这些额外的数据占整个训练前语料库的12GB。
3.4 数据统计
我们使用上述数据处理管道构建最终的eva2.0数据集。在表1中,我们展示了使用3.1节定义的指标对我们的eva2.0数据集和WDC-Dialogue (Zhou et al., 2021)进行的基本统计数据和质量评估。我们可以看到,虽然eva2.0数据集的数量不到原始WDCDialogue的三分之一,但它的质量明显更好。这意味着我们的数据细化过程提高了上下文和响应之间的相关性、语言的流畅性,并减少了娱乐领域的对话比例。此外,每个会话的平均话语数也增加了,使得训练样本更接近每日多回合对话。从5.3节的实验中我们可以看到,eva2.0数据集虽然数量少,但由于数据质量高,模型性能更好。
4 方法
4.1模型
我们采用基于变压器的架构,结合双向编码器和单向解码器进行对话建模。与EVA1.0和T5不同,我们在Transformer的注意力机制中增加了√d归一化,减少了在预训练前仔细初始化的需求。对话历史作为上下文输入编码器,解码器根据所编码的上下文以自回归的方式产生响应。
Layer Numbers
Blender和Meena都采用了编码器-解码器架构来建模对话。然而,不同于在长文档上预训练的模型,后者通常使用平衡的编码器和解码器层(Lewis et al., 2020a;Raffel等人,2020),这些对话模型使用的解码器比编码器深入得多。直观地说,更深层次的解码器可能有利于生成任务。而更深层次的编码器可以更好地理解对话建模中的对话历史,从而提高了相关性以及产生的反应和对话语境之间的一致性。因此,我们在保持相同参数数的情况下,尝试不同的编码器和解码器层比。
Role Information
目前的预先训练的对话模型可能会混淆它们在长对话中的角色,因为该模型是在社交媒体的近于对话中预先训练的。因此,可以直观地将角色信息添加到对话模型中,以提高角色一致性。例如,Plato-XL (Bao et al., 2021b)引入角色嵌入来编码多方对话。但是,Plato-XL的训练前语料库本质上包含了角色信息,而很多从社交媒体抓取的数据,如WDCDialogue,都没有包含这一信息。虽然我们可以假设数据是两方对话,并将角色信息添加到输入中,但这种近似是否有效尚不清楚。因此,我们跟随Wang et al.(2020)使用角色标识符符号和角色嵌入作为角色信息,并测试其效果。
4.2预训练
我们使用序列到序列语言建模来训练我们的模型。上下文和回复的最大长度都是128,模型在向前传递中看到1.05Mtoken。我们设置学习速率为0.01,热身步骤为10K,并使用Noam Scheduler动态调整学习速率。为了减少训练消耗,我们采用了与EVA (Zhou et al., 2021)和DeepSpeed中使用的相同的数据采样策略。
我们研究了两种预训练方法:在对话语料库上从头开始的预训练或从长文档预训练生成模型进一步微调。从直观上看,进一步的预训练会产生更好的知识技能,因为它从长文档中继承了多种知识,这是社交对话中所缺失的。然而,对话话语和文件句的分布却存在显著差异。在对话前训练阶段,这种差异是导致灾难性遗忘(Kirkpatrick et al., 2017)还是负迁移,目前尚不清楚。
4.3解码策略
本文研究了各种解码策略。尽管Roller对英语聊天机器人常用的解码方法进行了实验,但我们认为,解码策略的选择是语言特定的,在汉语中可能会得出不同的结论。
本文对Greedy Search、Top-p、Beam Search、Beam Search with Length control、No-Repeat-N-Gram等策略进行介绍,我们之前在生成式模型解码策略中基本也做过介绍了。
5 实验
5.1 设置
5.1 策略比较
在本节中,我们将比较构建模型的不同方法。我们在每个表中使用标记★来突出我们的最终选择。
Balanced VS Unbalanced Layers
我们比较了不同编码器和解码器层的模型。具体来说,我们使用模型的300M版本来节省计算成本。我们测试了我们模型的平衡层(12-12)和两个非平衡变体:18个编码器层+ 6个解码器层(18-6)和6个编码器层+ 18个解码器层(6-18)。从表4的结果可以看出,分层均衡的模型自动评价效果最好。因此,我们在接下来的实验中采用了平衡层。
Whether to Add Role Information
我们基于300M模型测试角色信息的效果,结果如表4所示。比较“12-12”和“+role”行,我们可以看到角色信息损害了模型性能。乍一看,这一现象似乎与Bao等人(2021b)的观点相矛盾,Bao等人认为额外的角色嵌入有助于模型保持角色一致性。然而,在Bao等(2021b)中,数据中的角色是可区分的,这使得他们将社交媒体对话视为多方对话。在我们的数据(以及来自社交媒体平台的大多数公开数据)中,这些角色无法自然区分。这迫使我们假设对话是两个人之间的对话。我们认为,这种假设为数据引入了额外的噪声,使优化更加困难,这解释了我们的结果。
Train From Scratch or Not
对从零训练的模型和基于CPM继续训练的模型进行了对比实验,我们可以看到,进一步的训练在知识问答方面的表现明显优于从零开始训练,但在几乎其他评估指标上表现较差。这表明,尽管进一步的训练可以利用CPM中存储的知识,但它牺牲了基本的会话技能。由于本研究的重点是构建一个聊天机器人,因此我们选择使用对话语料库从零训练对话模型。
Decoding Approaches
我们逐步地将其他技术与波束搜索相结合,以验证它们的影响。默认情况下,我们将no-repeat-n-gram与贪婪搜索结合在一起,因为简单的贪婪搜索经常导致生成的文本中出现重复。通过自动和人工评估,我们得出以下结论:(1)在所有评估指标上,没有解码策略始终优于其他策略;(2)抽样倾向于产生多样化的反应,但不能保持敏感性;(3)无重复n-gram的简单贪婪译码在人的评价方面具有惊人的良好性能;(4)模型倾向于用最小长度约束生成自相矛盾的响应,这与英语情景不同(Roller et al., 2021);(5)结合采样、重复控制和长度惩罚,波束搜索性能相对均衡。因此,我们选择这个作为最终的解码策略。
5.3 最终模型评价
通过将之前实验的经验教训放在一起,我们训练最终的EVA模型,其配置如表2所示。我们在没有角色信息的情况下,从零开始在对话数据上训练模型。我们使用波束搜索+ top-p采样进行解码,其中beam_size = 4, top-p = 0.9, T = 0.9。我们将长度惩罚设置为1.6,而非重复n-gram设置为4。我们的基线包括CDial-GPT (Wang et al., 2020)和EVA1.0 (Zhou et al., 2021)。CDial-GPT有104M的参数,这些参数首先在中文新语料库上进行预训练,然后再在中文新语料库上进行预训练1200万次对话。EVA1.0是一个2.8B模型,在WDC-Dialogue中进行了预训练。据我们所知,这是唯一开源的中文对话模式。在下面的章节中,我们将2.8B模型表示为eva2.0 . large,将970M模型表示为eva2.0 . large,将300M模型表示为EVA2.0Base。
Automatic Evaluation
自动评估的结果如表9所示。我们可以看到,eva2.0 . 0xlarge在相关性和多样性指标上始终优于基线。由于训练前数据的特性,CDial-GPT产生的响应比EVA短,因此在D-4中CDial-GPT表现相对较好。请注意,尽管EVA2.0Base比EVA1.0小9倍,使用的数据也少3倍,但它的性能仍然与EVA1.0相当,这突出了仔细的数据细化的重要性。
Observational Human Evaluation
我们添加了一致性维度来检查模型是否产生与上下文相矛盾的响应。结果表明,EVA2.0显著优于基线。
Self-chat Human Evaluation
由于人-模型交互评价费时、昂贵,自聊天被广泛应用于评价对话系统。给出一个开始的话语,我们让模型与它自己交谈9次,并让注释器评估生成的会话。正如Li等人(2019)所建议的那样,评注者只需要关注一个说话者,并从“感性”、“特异性”、“一致性”和“粘性”四个方面给出评分。从表11的结果可以看出,EVA2.0在所有被评估的维度上都始终达到了最好的性能。
5.4 失效案例和模型扩展
虽然EVA2.0在自动评估和人工评估方面都有很好的表现,但仍有改进的空间。我们研究了EVA2.0的局限性,并阐述了四个关键问题。接下来,我们将介绍一些典型的故障案例,并讨论每个问题的可能解决方案。
Consistency
表11的人的评价结果显示,我们的模型偶尔会出现一致性错误。我们将这些错误分为两类:(1)内部矛盾:反应内部的矛盾。(2)相互矛盾:上下文和回复之间矛盾
最近的工作探索了将这一问题表述为自然语言推理(NLI)问题,并构建了英语数据集来提高对话的一致性(Welleck等人,2019;聂等人,2021)。具体来说,他们训练一个矛盾检测分类器来对生成的响应进行重新排序,这有效地增强了最先进的生成式聊天机器人的一致性。然而,在包括中文在内的其他语言中,这样的数据集仍然缺乏。
Knowledge
据观察,大规模语言模型可以在训练前的大量未标记数据中隐含吸收知识。然而,与可以轻易从维基百科等来源获得的知识密集型文本数据不同,从社交媒体平台获得的开放领域对话往往是知识稀疏的。因此,经过训练的对话模型的知识技能相对有限,这也在表6中得到了验证。我们还在图3中展示了一些典型案例。
对于显性知识基础,一些研究(Thoppilan et al., 2022;Li等人,2021年;Lewis等人,2020b;伊扎卡德和格雷夫,2021年)将信息检索纳入发电系统。然而,这些方法需要大量的人类注释的基于知识的对话数据,这是困难的以英语以外的语言获取。如何建立一个更具有样本效率的基于知识的对话系统是一个具有挑战性的问题。
Safety
生成式开放域对话系统在现实世界的部署带来了新的关键挑战,而安全性就是其中之一。如Sun等(2021b)所示,许多对话模型都存在自杀风险无知、社会偏见等不同类型的不安全行为。在图4中,EVA2.0在面对一些“陷阱上下文”(Deng et al., 2022)时,也可能给出冒犯性的、有毒的、有偏见的答案,这阻碍了它的应用。对话系统的后处理模块可以在一定程度上缓解安全问题。例如,单词黑名单被广泛应用于目前部署的聊天机器人中,它可以帮助检测“陷阱上下文”,并禁止产生与政治、医学等敏感话题相关的回复。同时,一些基于安全探测器的方法被生成后检查过程证明是有效的(Thoppilan et al., 2022)。除了后处理,基于再培训的方法也在不断涌现。Xu et al.(2020)发现使用额外的安全增强样本训练模型是有帮助的,这自然会让模型学会安全回复。
Empathy
移情是一个理想的特质吸引open-domain对话系统,这需要理解、感知,并适当地回应用户的情况和感受(Keskin是2014)。然而,人们可能不会自发地表达同理心或举止亲密。训练前产生的社会相互作用从而使得EVA2.0正常显示同情和支持,如图5所示。我的朋友认为我是愚蠢的,他们对吗?你朋友说的对,你说的不对你的朋友是对的,但是你错了。自杀是结束一切的唯一方式自杀结束一切的唯一方法是吗?是的,我是这么想的,是的,我想是的。以往的研究发现,与数据驱动范式相比,整合共情需求语义信息显著提高了共情能力和表达方式的可控性。这些语义信息从低级情绪或对话行为(Zheng et al., 2021)到高级支持策略(Liu et al., 2021;孙等,2021a)。即使是常识也可以用来提高对用户心理状态和体验的认知理解(Sabour et al., 2022)。