AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


如何为大模型挑选"高质量”数据?【上】
发布日期:2024-09-12 14:43:29 浏览次数: 1592


摘要

大型语言模型取得成功的一个主要因素是使用了大量不断增长的文本数据集进行无监督预训练。然而,简单地在所有可用数据上训练模型可能并不是最优的(或可行的),因为可用文本数据的质量可能各不相同。过滤掉数据还可以通过减少所需的训练量来降低训练模型的成本。

数据选择方法旨在优化训练数据的选择和采样,改进这些方法可以显著提高模型性能。然而,由于深度学习研究主要依赖实证证据,大规模数据实验成本高昂,只有少数机构有能力进行广泛的数据选择研究,导致知识集中和不公开;

本文通过全面回顾现有文献,提供数据选择方法的分类,旨在缩小知识差距,加速研究进展,并提出未来研究的有前景方向。此外,在整个回顾过程中,我们注意到文献中的显著空白,并在文章结尾提出了未来研究的有前景方向。

1 引言

John & Draper在1975提出了一个重要观点数据选择是机器学习中的一个长期挑战,在给定一组原始数据的情况下,目标是设计一个在某种意义上最优的数据集,反映了他们对统计学和实验设计领域深刻理解的结晶,同时也是对当时计算资源和实际应用需求的回应。。

数据选择中常用的一种最优性标准是模型的性能。在本研究中,我们采用一种普遍的观点,即机器学习模型本质上是一种建模数据统计模式的方法,从概率观点来看,最优的数据集是与模型将被评估的分布最匹配的数据集(Murphy, 2012)。虽然概率观点提供了选择能提高模型性能的数据的常见视角,但这并不是数据选择方法的唯一目标数据选择方法可以通过减少数据集大小来降低成本(Ortiz Suárez et al., 2019;Schreiber et al., 2020;Brown et al., 2020;Lee et al., 2022a;Sorscher et al., 2022),通过移除可疑评估数据来确保评估指标的完整性(Rae et al., 2021;Marone & Van Durme, 2024;Oren et al., 2024),以及减少不良行为(如偏见和有害内容)(Dodge et al., 2021;Welbl et al., 2021;Luccioni & Viviano, 2021;Longpre et al., 2023c)。

在大语言模型的背景下,数据选择变得尤为重要。语言模型可以经历多个训练阶段(预训练(Peters et al., 2018;Radford & Narasimhan, 2018;Devlin et al., 2019;Raffel et al., 2020;Touvron et al., 2023a),指令调优(Mishra et al., 2021;Sanh et al., 2022;Longpre et al., 2023a;Muennighoff et al., 2024),对齐(Ziegler et al., 2019;Bai et al., 2022b;Ouyang et al., 2022;Rafailov et al., 2023)等),而数据选择在每个阶段都起着重要作用。然而,由于各阶段的训练目标不同,数据选择的目标也相应地有所不同。例如,语言模型通常在来自各种来源的大量文本语料库上进行预训练。这些来源包括互联网,据估计有大约2500亿个网页。这些网页自2008年以来通过互联网抓取收集,数据量约为11 PB,每月新增30-50亿个新网页。由于预训练语料库的庞大规模,预训练期间数据选择的一个常见目标是通过一系列过滤器(Conneau & Lample, 2019;Raffel et al., 2020;Wenzek et al., 2020;Gao et al., 2020;Rae et al., 2021;Lee et al., 2022a)移除大量数据,只保留被认为是“高质量”的数据。与预训练相比,为目标任务微调模型的一种数据选择形式是选择最有利于目标任务的附加辅助样本(Albalak et al., 2023b;Ivison et al., 2023a)。

在本研究中,我们将广泛的数据选择方法统一在一个概念框架下,使我们能够在概率视角下比较和对比各种方法,重点是模型预训练。通过本次调查,我们展示了所有数据选择方法如何定义一个效用函数来确定数据的效用,以及一个选择机制来根据数据的效用决定如何使用数据点。我们的概念框架使我们能够分类各种数据选择方法并创建现有文献的分类法。总体而言,本次调查旨在实现两个目标:1)我们提供一个收集的数据选择方法资源,描述在为语言模型选择训练数据时的当前最佳实践和考虑因素;2)我们提供一个统一的数据选择方法视角,使我们能够定义和描述潜在的有前途的未来研究方向。虽然本次调查旨在全面,但包括每种方法的具体细节将过于冗长,因此我们选择一个具有代表性的数据集进行深入讨论,并提供未能深入讨论的众多方法的引用。

我们按以下顺序组织调查。首先,我们提出一个数据选择的分类和统一概念框架(§2)。接下来,我们展示本研究的主要重点:对语言模型预训练的数据选择方法进行调查(§3)。然后,我们跟进其他语言模型训练方式的数据选择方法,包括多任务训练和指令调优(§4),对齐(§5),上下文学习(§6),以及任务特定的微调(§7)。接下来,我们扩展调查到语言领域以外使用的显著数据选择方法(§8),以及相关主题的简要讨论(§9)。然后,我们讨论围绕数据选择的一些影响(§10)。虽然本次调查的主要重点是语言模型预训练,但我们也涵盖了其他训练方式和领域的方法,以便在最后一节(§11)指出有前景的研究方向。

语言模型数据流程的过程从原始数据开始,经过清洗、过滤和混合,通过数据选择过程创建最终数据集,然后用于训练(或评估)模型。数据选择方法的细节和目标因学习阶段而异,数据选择五个常见目标:提高模型性能,提高数据效率,高效选择数据,确保评估度量的完整性,减少模型偏差和有害性。

2. 数据选择方法的分类

在本节中,我们定义数据选择方法的分类。我们首先定义数据点和数据集的概念(§2.1),然后在我们的统一框架中描述数据选择方法的组成部分(§2.2),最后介绍分类中的常见变异维度(§2.3)

2.1. 数据选择的背景和动机
在讨论数据选择方法之前,我们首先定义数据集的“单位”,从最小到最大。首先,语言模型的最小数据单元式词符,它可以由字节、字符、子词或更大的组件组成,这取决于分词器;
Definition 2.1 (数据点):
数据点  ,是令牌的有序集合,构成用于训练或评估模型的单个数据样本。
例如,在语言建模中, 可以是来自互联网文档、书籍或科学文章的一系列标记。 语言模型在训练时输入序列长度有限,因此长文档通常会被分割成多个数据点。 实际上,这意味着  可能构成文档的一部分(而不是完整的文档)。
Definition 2.2 (数据点特征):
数据点的特征是指用于描述数据点的一些度量,并确定  位于所有可能的数据点的空间内。
数据点特征是数据选择的关键组成部分,因为它们经常用于确定数据点是否需要清理或可能完全删除。 可以使用许多不同的度量来描述各个数据点。 用于描述数据点的常见度量可以是简单的统计数据(例如 ,或 ) 的分布式表示(例如使用 BERT 的嵌入式表示>(Devlin 等人, 2019))。
Definition 2.3 (数据集):

数据集  是数据点  的集合(其中  是  中的示例数量),用于训练或评估模型。

Definition 2.4 (数据集分布). 

数据集的分布是指数据点在所有数据可能数据点的空间内的分布。  的分布对其训练的模型的最终功能和属性具有重大影响。

数据集分布也是数据选择的重要组成部分,因为模型可能会遇到分布外泛化问题,而数据集分布指定哪些数据属于分布内数据,哪些数据属于分布外数据 (Shi 等人,2023) 。 具体来说,数据分布的密集区域通常表明模型在该区域的未见数据上表现良好(例如类似的标记分布)。 考虑到这一点,增加所需区域周围的数据密度,同时减少不需要的区域周围的数据密度,通常会导致模型在所需的设置中表现良好。

2.2. 数据选择统一概念框架

数据选择的高阶目标:数据选择是从候选数据点集合中创建一个数据集的过程,该数据集将用于训练或评估机器学习模型。一般来说,在进行数据选择之前,数据会被收集、标注和存储。然后,一旦确定了模型的目标用例,数据选择的目标就是过滤和选择能使期望目标最大化的数据点。

数据选择的正式定义

Definition 2.5(数据选择):数据选择函数将数据集和目标函数作为输入,并从中过滤、清理和选择数据点来创建最终数据集 ,这样,对于在数据集上训练的模型旨在最大化/最小化目标函数

在实践中,通常会组合多种选择方法来提高最终数据集的覆盖率和特异性。在这种情况下,我们将分量函数表示为并将组合表示为 。 例如, 可以包含一个简单的过滤组件 ?,它首先删除不需要的数据点,然后是一个清理组件,它删除不需要的内容来自各个数据点,然后是混合组件?,它确定剩余数据点应在最终数据集中使用的次数。通过这些机制,数据选择函数可以将各个数据点特征和数据集分布调整到数据空间中更理想的区域,以提高数据的理想属性。达到目标目的的模型。

数据选择方法的组成部分:选择函数  的共同组成部分:效用函数和选择机制。
效用函数 
 定义了从一个数据点到表示计算效用的实数的映射。例如,一个效用函数可以是一个二元指示符,定义为:如果  中的标记总数大于 10,则为 1,否则为 0。另一个效用函数可能会给  分配一个等于  是维基百科文章的可能性的效用。
选择机制使用效用函数的输出确定一个数据点是否将被包含在生成的子集内(在某些情况下,还包括该数据点应重复的次数)。它可以是一个简单的指示符(例如,如果字符数大于 10,则仅将 
 包含在  中),或者是概率函数(例如,如果  是  是维基百科文章的可能性,根据由  定义的概率将  包含在  中)。此外,对于需要阈值的选择机制(例如,如果 ,则仅包含 ),还需要一个选择敏感度。
数据选择方法用于解决各种各样的目标,通过调整效用机制、选择机制和过滤敏感度可以实现期望的结果。我们将对每个组成部分的具体实例化的讨论留到各自介绍它们的部分。

2.3. 数据选择分类中的差异维度

数据选择方法可用于各种目标,其中该方法的目标将部分确定所使用的确切效用函数和选择机制。 为了帮助形成分类法并更好地理解方法之间的关系,我们定义了方法之间的共性和差异的一些特定维度。

2.3.1分布匹配 与分布匹配多样化

分布匹配方法的主要目标是选择具有与所需目标分布类似的属性的数据,在此基础上评估或部署模型。 例如,所需的分布可以定义为已知的高质量数据、特定语言或目标领域(例如金融、医学或法律)。 所需目标分布的确切规范可能会有所不同,从明确定义(例如如检测语言)到非常模糊(例如“高质量”数据)。 一些分布匹配方法将尝试匹配数据表示分布,其中与目标分布的相似性通常是有用的(例如与维基百科数据的相似性)。 其他分布匹配方法使用从目标数据集中采样的数据统计数据作为实用程序(例如每个示例的字符总数)。

分布多样化方法旨在优先考虑样本中的异质性,消除冗余。 它们在表示空间内运行,允许测量数据点之间的相似性。 数据点的效用由其与表示空间中其他数据点的关系(相似性)来定义。 分布多样化方法通常会删除某些表示空间中相似的数据点(例如字符或向量)。 通过删除非常相似的数据点,多样化训练方法可以删除数据中的冗余,从而通过减小数据集大小来提高效率。 此外,由于分布多样化方法迫使数据集分布更加平坦,因此它们可以减少记忆、减少偏差并提高鲁棒性。

2.3.2更改数据集与数据点

改变数据集的方法旨在增加或减少数据集中各个数据点的频率,以增加(减少)所需(不需要)区域周围的最终分布密度。 这些方法将数据集作为输入,并为每个单独的数据点分配一个非负整数值,该值表示该数据点应包含在结果数据集中的次数。 形式上,数据集分布改变函数根据效用函数将每个数据点映射到非负整数。

更改数据点的方法旨在调整数据点内的内容,以更好地匹配所需的标记分布,从而使数据集中的各个数据点更接近所需的特征。 实际上,这可以采取从文档中删除单独的行或文本块的形式。 例如,当训练自然语言模型时,删除包含 HTML 标签的行可能会很有帮助,因为它们可能不符合所需目标域的分布。

2.3.3输出空间:二进制与自然数选择

改变数据集分布的方法会导致另一个维度的差异;选择函数是否分配二进制值(包含或删除)或是否允许更大的整数值。 仅分配二进制值的方法通常称为过滤,其目标通常是通过从数据集中删除不需要的数据点来调整数据集分布。 另一方面,可以分配任何自然数的方法通常称为数据混合,其目标通常是通过优先考虑数据集中具有高效用值的某些子集来调整数据集分布,同时降低效用较低的子集周围的分布密度。 数据混合方法通常会定义一个效用函数,为整个数据子集分配相同的效用(例如,所有网页文本获得相同的效用,而所有书籍获得不同的效用)。 过滤和混合可以用作管道的一部分,其中数据首先被过滤,然后混合。

2.3.4 训练阶段

语言模型训练通常需要多个阶段,每个阶段都有不同的目的。在本研究中,我们识别并讨论了语言模型训练中的五个不同阶段,在这些阶段中可以使用数据选择:预训练、指令微调、对齐、上下文学习和任务特定微调。

每个训练阶段的目标不同,因此每个阶段的数据选择方法会使用不同的机制来实现这些目标。例如,当训练一个用于特定领域或任务的语言模型时,目标分布相对明确,但在预训练通用语言模型时,目标分布则不太明确,因此数据选择方法可以利用这些信息来更好地定位数据。另一个考虑因素是每个训练阶段候选数据点的数量。例如,预训练可能有显著更多的候选数据点,而指令微调则较少,这促使在预训练中需要高效的数据选择方法,而指令微调则可以使用更昂贵的方法。

在本研究中,我们重点关注预训练的数据选择。


3. 预训练数据选择

预训练的目标通常是训练一个通用模型,这需要在海量文本上进行训练,通常以数十亿和数万亿个标记来衡量从如此庞大的数据量中选择最佳数据可能非常昂贵,因此该过程的常见第一步是通过各种过滤器删除数据,并且可能需要将多个过滤器组合在一起以达到所需的数据集。我们呈现的预训练数据选择方法的顺序大致基于它们在实际数据选择流水线中使用的顺序。当然,并非所有的流水线都需要使用这里介绍的每一种方法,具体的顺序可能会根据情况略有不同。

3.1语言过滤

在为语言模型预训练策划数据时,首要步骤是考虑模型将使用的语言,并过滤掉不属于这些语言的数据。这不仅适用于自然语言,也适用于编程语言,但识别方法会有所不同。对于多语言模型,除了过滤掉不需要的语言,还需追踪每种语言的数据量。类似地,对于具备代码功能的模型,需追踪每种编程语言的数据量。

常用的实用函数过滤语言时,实用函数计算速度必须快,因为需要处理大量数据。因此,许多方法使用基于字符 n-gram 的分类器来快速计算实用函数,例如 langdetect、cld3 和 fastText。有些方法旨在移除所有非英语数据,而另一些方法可能包含100多种语言,需要不同的实用函数策略。

英语数据集过滤:在开发英语专用的 C4 数据集时,Raffel 等人使用了基于字符 n-gram 的朴素贝叶斯分类器(langdetect),过滤掉任何被分类为非英语且概率低于0.99的页面。后来,Soldaini 等人在开发 Dolma 时,使用 fastText 的语言识别模型,过滤掉任何被分类为英语且概率低于0.5的文档,发现这去除了 61.7% 的网页。然而,在过滤 Project Gutenberg 的书籍时,他们先按段落分割每本书,并计算每段的语言得分,只移除平均英语概率低于0.5的书籍。Penedo 等人在过滤 RefinedWeb 时也使用了 fastText,但使用更高的阈值(0.65),过滤掉更多的网页。

最近方法使用较低阈值的原因有多种因素。一方面,C4 开发时 750GB 的数据被认为是一个非常大的数据集,但近期数据集可能达到 TB 级别,使用较低的阈值可以通过过滤器保留更多数据。此外,由于支持语言的差异和文本长度的不同,难以衡量不同语言识别模型(如 langdetect、cld3 和 fastText)的准确性差异,但一些实验显示 fastText 相较其他模型具有更高的准确性和较低的延迟。

多语言数据集过滤多语言语料库的过滤方法通常依赖 fastText 语言分类器,该分类器被训练来分类176种语言。fastText 分类器每秒可在单核 CPU 上处理 1000 个文档。Laurençon 等人在创建 ROOTS 语料库时使用 fastText 模型获取文档语言预测和置信度得分,如果置信度低于阈值,则移除文档。每种语言的阈值由母语者确定,这增加了多语言语料库语言过滤器开发的额外工作量。此外,这些过滤器在文档中语言多次变化时可能失效。尽管 fastText 被训练分类176种语言,但仍有数千种语言无法覆盖。

另一种多语言过滤常用的方法是按国家域名或选择已知包含某些语言数据的 URL。这对如维吾尔语等资源极少的语言来说,比语言分类器更可靠。

代码语言过滤:用于检测代码语言的实用函数非常基础。例如,Chowdhery 等人通过搜索与批准的文件扩展名匹配的文档来过滤24种编程语言的数据。这种策略在过滤已知代码数据(如 Github 仓库快照)时效果良好,但尚无方法在自然语言文档中找到代码,这在某些领域(如 Stack Exchange)中完全可能,并可能包含有意义的大量自然语言与代码混合内容。

语言过滤的挑战在语言检测过滤器的敏感性上存在权衡,较低的阈值允许更多数据通过过滤器,但可能牺牲一些质量。严格的英语数据过滤器可减少非英语数据量,而较低的阈值可缓解语言检测器对少数群体方言的固有偏见(如非裔美国人英语)。确定语言分类器的确切阈值高度依赖于具体用例。尽管 fastText 因其速度和准确性而成为当前的标准,但并不完美。基于循环神经网络和 Transformer 架构的更准确系统已被开发,但计算成本较高

语言过滤总结与想法:
  1. 语言过滤是数据选择的首要步骤,通过筛选文档只保留所需的语言。

  2. 在创建仅限英语和多语言数据集时,基于分类器的方法是常见做法。
  3. 对于资源较少的语言,基于 URL 的方法在多语言数据集中分类语言时有时比分类器更可靠。
  4. 代码语言的过滤非常简单,大多数研究仅使用文件扩展名。
  5. 一个有趣的研究方向是在自然语言文档中查找代码数据。据我们所知,目前尚无此类方法,但代码语言识别器可以用在包含代码和自然语言的领域中发现大量新的代码数据。


3.2启发式方法

在预训练语言模型时,原始数据集通常由大量来自各种来源的文本组成,通过一组简单的启发式方法进行过滤。主要模型通常基于网络抓取数据,如CommonCrawl和GitHub,尽管对其确切组成的透明度正在下降(Bommasani等人,2023年)。然而,广为人知的是,预训练数据包含大量的样板文本、错误消息和具有攻击性的文本(Raffel等人,2020年;Touvron等人,2023a年)。例如,Gao等人(2020年)发现,在创建Pile时,最常见的13-gram是字符重复,如一串破折号(“--”)有1100万个实例。因此,移除这类不良文本至关重要,但由于语料库的规模,必须高效完成。在这种情况下,常见的过滤数据方法涉及简单且计算效率高的启发式方法。

启发式方法的目标是沿某一维度(如句子长度、重复性)约束训练分布,假设评估分布具有类似的特征。过去使用的启发式方法种类繁多,但通常可以归类为以下几类:项目计数、重复计数、存在性、比率或统计。在本节中,我们讨论了其中一些代表性的方法,提供表2作为启发式方法的概述,并在附录A中提供了全面的列表。

对于基于启发式文本过滤的常见实用函数,计算速度应非常快,并且通常依赖于数据集中每个数据点包含的文本的一个或多个特征质量。然而,导致最佳性能的确切文本特质取决于模型的预期用途,目前尚不清楚。因此,已经提出了多种不同的实用函数,每种函数都对预期的测试分布做出了假设,并过滤掉不符合这些假设的数据。例如,Raffel等人(2020年)会删除少于五个句子的网页,Rae等人(2021年)会删除少于50或大于100,000个单词的文档,而Xue等人(2021年)会删除少于三行且每行200个以上字符的文档。另一个常见的启发式方法是删除带有特定黑名单单词或短语的文档。Raffel等人(2020年)会删除任何包含在“肮脏、淘气、淫秽或其他不良词语列表”上的单词的文档。然而,Penedo等人(2023年)指出,像Raffel等人(2020年)使用的NSFW词块列表通常会导致误判,从而过度过滤合法和医学内容。

与文档质量相关的另一个常见启发式是重复性。Rae等人(2021年)发现,文档内部过度重复与无信息内容相关联,并建议过滤掉具有高比例重复行、段落和n-gram的整个文档可以提高性能。例如,如果重复的行占文档的30%以上,他们将删除整个文档。请参阅Rae等人(2021年)的表A1,了解他们列出的13种不同重复和阈值敏感性。

领域特定的启发式方法。在设计过滤器时,另一个考虑的维度是兴趣领域。例如,在为ROOTS数据集收集代码数据时,Laurençon等人(2022年)过滤掉100到200,000个字符之间的源文件,其中15-65%为字母字符(a-zA-Z),并且行长度在20到1000个字符之间。如果将这些过滤器应用于自然语言数据,可能会删除大量期望的数据(例如,许多书籍的字母字符比例超过65%)。此外,Laurençon等人(2022年)还会过滤掉具有高度均匀行长度(行长度标准偏差小于3个字符)的文件。虽然过滤掉具有均匀长度行的数据可能会提高代码数据的质量,但可能会过滤掉大量诗歌和其他有节奏的文本,也可能会删除从PDF文件中收集的数据,这在为非代码领域训练模型时可能是理想的选择。

通过启发式方法调整数据点。尽管前面描述的方法会从训练数据集中删除整个数据点,但删除数据点内部的内容可能是一种有效的方法。与其删除整个数据点,删除大型文档中的单个行的启发式方法旨在提高训练数据分布的覆盖率,同时限制围绕不良特质的密度。例如,在处理来自网络爬取数据的内容时,删除HTML可能是帮助将数据分布重塑为自然语言(如果这是预期结果的话)的重要步骤。Laurençon等人(2022年)和Aghajanyan等人(2022年)创建了HTML标签列表,其中子树中的所有内容都将被删除。此外,Raffel等人(2020年)删除不以终端标点符号结尾的行和少于四个单词的行,而Penedo等人(2023年)则删除主要由大写字母或数字字符组成的行。此外,逐行过滤的常见组成部分是,如果个别行超过一定比例被过滤掉,则删除整个数据点。例如,Penedo等人(2023年)会在单个行超过总文档长度5%以上时删除整个文档。

确定性与随机选择机制。许多启发式实用函数可以作为确定性或随机选择机制的一部分使用。在确定性选择机制中,任何高于/低于实用性阈值的数据点都将被删除。绝大多数现有的启发式过滤器使用确定性选择机制。然而,这可能会不必要地删除类似评估分布的数据(Brown等人,2020年)。特别是,目标数据集分布可能在感兴趣的特征上呈长尾分布,而确定性地删除所有高于/低于阈值的数据可能会影响对该特征建模。

基于项目计数、重复性、比率和统计的启发式过滤器通常可以利用随机选择机制。例如,Rae等人(2021年)会删除符号与单词比例大于0.1的文档,但随机选择机制会允许一些具有低实用性的数据不被过滤掉。虽然随机选择机制并非总是合适,但确实有些启发式方法可能会有助于数据集分布,但在何种设置下使用随机选择机制是一个尚未解决的研究问题。数据质量过滤器(§3.3)通常使用随机选择机制,应用启发式过滤器中的随机性是数据选择的一个尚未探索的领域。

启发式选择方法的缺点。启发式选择方法的缺点之一是它们不评判文档的质量或内容,而是完全依赖表面层次的统计数据和计数,缺乏其他数据选择方法的精细度。这可能导致一些理想的数据被错误移除,但通常认为这是一种权衡,只要过滤后的数据量仍在理想范围内。

启发式过滤器的另一个缺点是验证其有效性的挑战。在开发和应用于原始数据集的启发式方法后,要确定这种方法是否改进,要么需要手动验证过滤后的文档是否不理想,保留的文档是否理想;要么进行模型训练和评估。这两种方法都耗时且昂贵,使得对启发式过滤方法进行实验的速度非常缓慢。

在设计启发式过滤器时需要考虑的因素。设计一组启发式过滤器时,了解数据源至关重要。通过首先查看数据并在少量样本上验证启发式过滤器的性能,可以更好地理解该方法将移除的数据类型以及将保留的数据类型。这样,通过依次组合多个启发式方法,最终的数据集将反映出所需的数据特性。已经存在多种工具来更好地理解数据集内部的数据(数据审计),以及用于数据选择。有关一些有用工具,请参见§10.4节。目前已知的启发式最佳实践在过去几年内没有发生显著变化。Soldaini等人(2024年)最近使用MassiveText(Rae等人,2021年)和C4(Raffel等人,2020年)的组合过滤器,而Penedo等人(2023年)也遵循MassiveText(Rae等人,2021年)定义的规则。然而,目前尚不清楚通用启发式方法缺乏进展是由于对该领域的探索不足(由于资源和研究有限),还是已知的启发式方法确实是最优的。据我们所知,尚未有研究专门比较系统地研究了许多可能的启发式方法。

启发式过滤总结
  1. 需求背景:原始数据集通常包含大量文本,来源广泛,但其中可能包含大量非理想的数据,如模板文本、错误信息和冒犯性文本。因此,需要一种有效的方法来过滤掉这些不希望的数据,以便训练模型时能够集中在更具信息量和质量的数据上。

  2. 启发式过滤方法:启发式过滤方法依赖于表面层次的统计数据和计数,而不是评估文档的内容或质量。这些方法的核心思想是通过简单而快速的规则,将数据集限制在一定的分布特征范围内,以期望训练数据的分布与评估数据的分布具有相似的特征。

  3. 核心思想和方法

  • 统计特征过滤:根据文档的长度、重复性、存在特定词汇、行内重复率等表面统计特征,对数据进行过滤。

  • 快速计算:启发式方法需要使用快速计算的实用函数,因为处理的数据量非常庞大。

  • 基于经验的规则:设计者根据预期的数据分布特性,制定一系列的启发式规则来过滤数据,以确保训练集的质量符合预期。

总之,启发式过滤方法通过简单而有效的表面特征规则,帮助从原始数据集中提取出更适合用于训练语言模型的数据,尽管这些方法可能会在保留理想数据的同时,错误地移除一些具有潜在价值的内容。

3.3数据质量

训练基于高质量数据的语言模型可能会带来更强的性能表现(Du等人,2022年)。然而,“高质量”在语言模型预训练数据方面并没有一个明确定义的术语。此外,根据使用案例的不同,“高质量”数据的定义可以有显著的差异(Longpre等人,2023年)。此外,毒性过滤器和质量过滤器的实施可能会进一步边缘化那些文本不常被视为“高质量”的社区(Xu等人,2021年;Longpre等人,2023年)。

在本文中,我们将“高质量”一词的使用限制在以下常见的定义上:已知由人类撰写,并可能经过编辑过程的数据(Grave等人,2018年;Gao等人,2020年;Brown等人,2020年;Chowdhery等人,2023年)。一些属于“高质量”类别的数据领域包括维基百科、图书、专利和同行评审的期刊文章。

常见的实用函数。与启发式方法类似,用于数据质量过滤的实用函数应该快速且廉价,但与启发式过滤方法相比,质量过滤需要模糊匹配,通常具有更高的计算要求。因此,数据质量方法通常使用相对便宜的分布表示方法,例如n-gram,以允许更模糊的过滤标准。

过滤质量的一种常用方法是基于分类器的质量过滤其目标是识别可能与已知“高质量”数据语料库(参考语料库)相似的数据点(Longpre等人,2023年)。例如,Brown等人(2020年)基于与“高质量”参考语料库(包括WebText(Radford等人,2019年)、Books1、Books2和英文维基百科)的相似性来过滤Common Crawl的版本9。他们训练一个分类器,使用“高质量”参考语料库作为正类,未过滤的Common Crawl文档作为负类。然后,这个分类器定义了选择符合所需分布的数据的实用度指标。由于预训练数据集的规模,用于为每个文档分配质量分数的分类器应该是相对轻量级的。例如,Du等人(2022年)使用基于特征哈希的线性分类器,而Brown等人(2020年)和Gao等人(2020年)使用了一个n-gram大小为2的fastText模型(Joulin等人,2016年)。同样,Xie等人(2023b)计算实用性时使用了两个哈希n-gram生成模型之间的重要性权重。

计算实用性的另一竞争方法是基于困惑度的质量过滤,其目标是在参考语料库上训练语言模型,并在待过滤数据上进行评估,为每个候选文档分配一个实用性分数。例如,Wenzek等人(2020年)在维基百科上训练了一个5-gram Kneser-Ney模型(Heafield,2011年),并计算了其Common Crawl转储中每个段落的困惑度。困惑度低的段落被认为接近于参考领域,而具有较高困惑度的数据则被认为质量较低。

最近,Wettig等人(2024年)探索了一个非常不同的方向,并通过要求语言模型系统(GPT-4)对多个文档在感知质量的各个维度上进行评分,创建了一个实用性函数。虽然他们的工作显示模型评分可以成为质量的良好信号,但向这类系统发出足够的API调用可能代价高昂。此外,系统中的偏见可能会传递到质量信号中。

选择机制。基于分类器的质量过滤的一个潜在负面影响是参考语料库不太可能包含所有被认为是高质量的数据示例。因此,在选择机制中允许一定的随机性是可取的。例如,Brown等人(2020年)使用他们的分类器对Common Crawl文档进行评分,并仅保留符合np.random.pareto(α) > 1 − document_score的每个文档,其中α = 0.9是通过匹配WebText语料库分数分布确定的。通过在选择机制中引入一些不匹配“高质量”分布的随机性,他们确保最终语料库中的文档大部分是高分的,但仍包含一些分布在参考语料库之外的文档。

当实用度指标是一个重要性权重(Xie等人,2023b)时,选择机制是根据数据集中的重要性权重对示例进行抽样(不替换)。使用Gumbel top-k技巧可以有效地根据未归一化的对数重要性权重加入Gumbel噪声来进行选择。

质量过滤的潜在挑战。在进行质量过滤时的一个重要考虑因素是某些参考语料库可能偏向或偏离某些人口统计学、方言和社会语言(Rae等人,2021年)。此外,Gururangan等人(2022年)发现,基于维基百科、书籍和新闻的质量过滤器(重复Brown等人(2020年)的质量过滤器)在高中报纸文章上的评估中更偏好来自财富更高、教育水平更高和城市化地区的文章。他们展示了虽然质量过滤通常被认为相对中立,但其背后隐含着对偏好值的判断。因此,质量过滤应谨慎进行,以确保避免偏见,并且数据分布足够覆盖所需的方言和人口统计学。

为质量过滤文本,同时避免引入偏见,是未来研究的重要方向。目前尚不清楚使用质量过滤器是否是一种有益的做法。一些最近的工作完全放弃了使用质量过滤器,例如MassiveText(Rae等人,2021年)、RefinedWeb(Penedo等人,2023年)和Dolma(Soldaini等人,2024年)。特别是,Penedo等人(2023年)选择不进行任何质量过滤,而是在严格的去重上花费更多的计算资源。目前尚不完全了解何时质量过滤是有益的,何时不需要,这需要进一步的研究。

数据质量总结&想法

  1. 数据质量方法旨在选择与已知“高质量”数据相似的数据点。 

  2. 分类器和困惑度为基础的质量过滤是现有的方法,其中分类器为更流行的方法。 

  3. 无论是分类器还是困惑度方法,训练分类器时都需要谨慎,因为这可能引入偏见(例如针对低收入、低教育水平人群)。 

  4. 关于质量过滤在哪些情况下是有益的问题尚未决定,因为最近的研究表明,可以在完全不使用质量过滤的情况下训练出性能优越的模型。这是需要进一步研究的领域。


3.4领域特定选择

虽然一些语言模型是为通用领域预训练的,但它们也可以针对特定领域进行训练,其中数据选择可以帮助找到与目标领域分布相似的数据(例如医学或法律)领域特定的过滤方法大多数情况下假定可以访问一些领域内数据和来自辅助来源的额外数据。因此,过滤的目标是找到与领域内数据分布最相似的辅助数据。

常见的效用函数。为了产生能够区分领域内和领域外数据的表示,领域特定选择的效用函数通常利用在一个或两个数据分布上训练的模型。

许多领域特定的选择方法源自Moore-Lewis选择(Moore&Lewis,2010),更近期的Moore-Lewis选择变体改进了原始思想。Axelrod(2017)提出了愤世嫉俗的数据选择,这是一个选择数据的理论框架,旨在最大化模型从每个数据点中获取的信息。Feng等人(2022)经验性地验证,与“高质量”子集(维基百科和图书)相比,使用愤世嫉俗的数据选择可以改善编码器模型的困惑度。Xie等人(2023b)重新构造了概率比作为从分布内和通用模型中重要性加权的方法。

值得注意的是,虽然最初的Moore-Lewis选择方法建议使用语言模型来估计效用函数,但现代语言模型的规模增长使得直接使用这种方法成本极高。因此,通常使用基于n-gram的更高效语言模型。例如,Xie等人(2023b)利用一种可以非常高效计算的散列n-gram模型袋,并发现使用散列n-gram特征进行数据选择与目标领域性能强相关。

Engstrom等人(2024)提出了一个依赖于模型的Moore-Lewis方法的替代方案,该方法仅依赖于数据。他们建议使用数据模型,一种实用函数,可以大致将训练数据的子集映射到在该子集上训练后的模型性能。在非常高的过滤比率(原始数据集大小的25%以下)下,他们证明相比于DSIR(Xie等人,2023b),性能有所提升,但需要更多的计算资源。

总的来说,来源于Moore-Lewis选择的方法一直是金标准,但可能可以采用其他数据归因和估值方法,类似于数据模型,用于选择领域内数据。然而,这些方法通常具有更高的计算要求,这是需要解决的挑战。与仅需要领域内模型的困惑度方法相似,领域特定的选择方法也是一个可能的研究方向。

选择机制和阈值。领域特定的过滤方法可以利用确定性或随机选择机制。大多数基于Moore-Lewis的方法倾向于使用带有阈值的确定性选择。如前所述,领域特定的过滤方法通常假定除了辅助数据外还可以访问领域内数据。为了选择适当的阈值敏感性,可以使用保留的领域内数据集(Sethy等人,2006)。还可以使用随机选择机制。例如,DSIR(Xie等人,2023b)根据重要性权重重新取样数据。随机机制可以允许更广泛的数据多样性,特别是在某些指标下,确定性地选择高得分数据可能会忽略目标的少数子群。

与数据质量过滤的比较。领域特定的过滤方法与数据质量过滤非常相似,并且可以被视为数据质量过滤的一种泛化。其核心区别在于,数据质量过滤中使用的领域内数据(参考语料库)被用作期望分布的代理,但实际上这并不保证,因此数据质量过滤中的随机性成分至关重要。另一方面,有足够的领域内数据时,领域特定的过滤器可以直接衡量辅助数据是否与期望的分布匹配。

领域特定选择的挑战。以前的领域特定选择方法仅利用领域内数据的模型,但这些方法可能会使最终分布偏向现有领域内数据的模式(Sethy等人,2006)。例如,可能存在一些非常常见的短语(例如“好的”),这些短语不一定代表该领域。为了避免这个问题,可以对领域内数据进行去重。然而,必须达到一个微妙的平衡,因为去重可能会使领域内数据偏离有效的模式。利用通用领域模型和领域内模型(例如Moore-Lewis选择)处理这个问题的领域特定选择方法是非常推荐的。

领域特定的选择总结和想法

  1. 领域特定选择旨在找到与特定领域(如医学或法律)最相似的数据。 

  2. Moore-Lewis风格的方法(需要一个领域内模型和一个通用模型)经久不衰,仍然是领域特定过滤中最流行的方法。

  3. Datamodels和其他基于数据归因和估值的方法可以作为竞争性方法进行探索,但通常需要更高的计算资源。

  4. 迷惑度(perplexity)方法可能是另一个值得探索的方向。它们只需要一个领域内模型,这可能会提高效率。它们可能不如基于Moore-Lewis方法表现好,但由于使用的计算资源较少,可以在多轮选择中使用,如引导式选择。


3.5数据去重

Internet dump数据集往往充斥着重复和近似重复的文档(Elazar等,2023年;Magnusson等,2023年)。具有重复数据或近似重复数据的数据集会增加这些区域的分布密度。在这些高密度点具有高价值的情况下,保留近似重复数据可能是有益的。然而,在预训练中,由于无法确切知晓评估分布,通常更倾向于去除重复数据,以便训练分布能够提供更广泛的覆盖,减少冗余性。Carlini等人(2023年)展示了数据点重复次数与模型记忆该数据点程度之间的直接关系,这种关系随着模型规模的增大而增强。此外,过滤重复数据可以减少机器学习模型的训练时间(Sorscher等,2022年),有时还显示出对下游任务的准确性有所提升(Lee等,2022年;Tirumala等,2024年)。

常见的实用功能。去重可以采用多种形式,大多数方法基于URL、哈希、字符串度量和模型表示。一些方法寻找完全匹配的字符串和文档,而其他方法则使用根据某种相似性度量计算的近似匹配方法。

完全匹配实用功能。确定整个文档的完全匹配相当直接,并且可以廉价地执行。当使用抓取的网页快照时,URL去重是一个常见的第一步。个别网页可能会在快照中出现多次,因此移除共享相同URL的数据是一种非常廉价和高效的初始去重方法(Agarwal等,2009年;Soldaini等,2024年)。

一些基于哈希函数的精确匹配实用功能确保找到所有的完全匹配,但由于可能存在冲突,也可能找到误报(意外删除非匹配文档),尽管Elazar等人(2023年)展示了大规模数据集上简单哈希函数可以不会发生碰撞。CCNet(Wenzek等,2020年)通过首先对所有文本进行归一化,然后为每个文档计算哈希码,并最终比较哈希文档的SHA-1前64位数字来进行去重。在开发OSCAR时,Ortiz Suárez等人(2019年)使用简单的非碰撞哈希算法来确定是否整个文档是完全匹配。布隆过滤器是另一种常见的去重方法,利用空间高效的位数组来比较哈希文档(Bloom,1970年;Soldaini等,2024年)。

确定完全匹配文本段,而不是整个文档,更昂贵,但同样重要以移除。Lee等人(2022年)提出了ExactSubstr算法,该算法查找共享足够长子串的示例。在他们的情况下,他们的实用功能确定如果两个示例共享50个令牌的子串,则它们是重复的。为了有效地进行去重,他们利用后缀数组(Manber和Myers,1993年),使得能够在线性时间内找到重复项。这种方法引发了一个问题:应该移除重复的文本周围有多少文本?Lee等人(2022年)仅移除重复的确切子串,而Penedo等人(2023年)尝试丢弃整个文档,或掩盖重复区域的损失,发现所有方法导致类似的下游性能。

与用于匹配整个文档的布隆过滤器类似,它们也可以用于检测任意大小的匹配段落。

近似匹配实用功能。删除近似匹配文档通常比确定完全匹配文档更昂贵,并且通常作为精确匹配去重之后的次要步骤进行(Laurençon等,2022年)。与精确匹配方法类似,基于哈希的方法在近似匹配方法中非常常见。例如,MinHash(Broder,1997年)是一种在查找模板文档(例如,仅具有不同特定实体的许可证或在网站间重复的占位符SEO文本)方面表现突出的近似哈希算法。现代去重方法使用其他变体的哈希算法,如MinHashLSH(Brown等,2020年)和SimHash(Charikar,2002年),这些算法利用局部敏感哈希。哈希方法用于去重的一般方法是首先对每个文档的小段(通常称为shingling)进行分组,然后使用大量哈希函数对每个段进行编码以生成特征。接下来,聚合特征(例如,MinHashLSH仅保留最小的特征)。最后,文档可以通过某种特征之间的相似性计算方法进行比较(例如,MinHashLSH使用Jaccard相似性),并移除低于某个阈值的文档。在创建MassiveText时,Rae等人(2021年)使用了13元和450个哈希函数的MinHash,并将Jaccard相似性阈值设置为0.8,随机删除被确定为重复的文档中的任何一个。相比之下,Gao等人(2020年)仅使用了10个哈希函数,但Rae等人(2021年)发现更激进的去重导致了更好的模型性能。

除了哈希技术外,基于字符串度量的方法也可以用于进一步的过滤,尽管它们通常更加计算昂贵。例如,Lee等人(2022年)使用基于令牌序列的编辑相似度度量计算编辑相似度度量。此外,当过滤代码文件时,Chowdhery等人(2023年)根据Levenshtein距离找到重复文件。

最后,基于模型的近似匹配技术利用学习到的数据点表示来去重相似数据。这些方法可能非常昂贵,但通过考虑文本的语义,可以提供更大的灵活性。例如,SemDeDup(Abbas等,2023年)使用预训练的125M OPT模型,并通过使用文档中最后一个标记的最后一层嵌入来为C4数据集的每个数据点计算表示。然后,他们对数据点进行聚类,创建粗略相似性的群组,然后计算每个群组内数据点之间的成对余弦相似性。文档去重和分散(D4)(Tirumala等,2024年)更进一步,使用MinHash首先去重文档,然后应用SemDeDup(Abbas等,2023年),并使用K-means对剩余数据进行聚类,最后应用Sorscher等人(2022年)的SSL原型方法,从每个群组中移除“最典型”的示例。作者们证明,使用多种方法进行去重会提升性能,因为每种方法设计用于删除相似性的某些方面。

这些方法的一个问题是它们仅在已知嘈杂的CommonCrawl数据上进行了测试,并且尚未证明在更干净的数据集上是有益的。先前的研究表明,预训练的解码器语言模型(如OPT 125M)的嵌入性能是次优的(Muennighoff,2022年)。因此,这条线的未来有希望的方向是使用专门用于聚类的更好的嵌入模型(Muennighoff等人,2022a;2024年;Xiao等人,2023年)。

数据去重面临的挑战。基于哈希的近似去重方法的一个问题是,由于哈希函数不考虑每个单独shingle的顺序,它们类似于词袋模型,其中长文档更有可能具有类似的表示。Laurençon等人(2022年)发现,这导致长文档在近似重复文档中具有更高的误报率。因此,如果文档长度超过6000个字符,他们不会移除近似重复文档群组中的文档。相反,对于长度超过6000个字符的文档,他们使用基于后缀数组的子串去重。方法可以搜索重复文档,也可以搜索文档内和文档间的重复文本片段。一旦发现重复片段,就会出现一个问题:如何处理这些片段?在ExactSubstr方法中,Lee等人(2022年)建议仅移除确切重复的子串,而Penedo等人(2023年)也选择仅移除重复的跨度,保留文档的其余部分。这可能导致文档不连贯,但Penedo等人(2023年)经验上发现这比移除整个文档效果更好。另一种选择是对重复的标记进行损失屏蔽(防止在训练模型时计算重复文本的损失),但这会增加代码复杂性,因为需要跟踪和考虑每个重复跨度的起始和结束。

数据去重总结&想法
  • 去重是数据选择流程中非常重要的一步,通常会多次使用。首先是简单的基于URL的过滤器,然后是更复杂的基于哈希和模型的方法。

  • 去重通常依赖于四种方法之一:URL、哈希、字符串度量或模型表示。

  • 布隆过滤器通常被用作最先进的精确去重方法(尽管它们可能会移除非重复数据),因为它们非常节省空间。

  • 对于更彻底的去重,可以使用近似匹配方法,其中MinHashLSH目前是最常用的方法。在数据效率是主要目标的环境中,基于模型的去重方法显示出良好的结果。然而,这些方法相对较新,需要进一步研究以证明它们在其他情况下(例如,性能是主要目标时)的优势。

3.6过滤有害和露骨内容

从业者通常致力于筛选“无偏见和公平”的数据集。因此,基于这样的数据训练的模型预期展现出类似无偏见的行为。一些广受欢迎的数据集也被发现含有非法或高度不适当的内容,这促使进行严格的数据过滤(David, 2023)。偏见和公平是最不明确的筛选标准之一,可能与不同的意识形态(Gururangan et al., 2022)和影响(Longpre et al., 2023c)相冲突。这个问题的一个重要方面是缺乏透明性(Bommasani et al., 2023),需求以及这种定制的偏见过滤对下游行为的影响。许多研究仅提供关于用于过滤“有偏见”数据的启发式方法的最少信息,而没有报告对下游任务影响的削弱。Longpre等人(2023c)是少数对这些过滤器进行全面研究并进行消融试验的论文之一。他们发现使用毒性过滤器(具体来说是Jigsaw的Perspective API)会导致模型生成更少有害文本,但模型检测有害内容的能力也会降低,因此在使用这些过滤器时,根据最终应用需要谨慎选择。

以下我们总结了基于不同类型的偏见和公平过滤器在不同论文中使用的过滤器。如上所述,这些过滤器通常依赖于启发式方法,并且其总体影响尚未广泛研究。

基于URL的方法: 许多现有的不安全内容可以仅基于来源URL进行过滤,这是数据集文本之外的典型元数据。例如,RefinedWeb数据集(Penedo et al., 2023)会过滤掉来自包含特定词汇的URL或黑名单域名的文档。

基于词汇的方法: 最常见的方法之一是过滤包含特定词汇或短语的文档。通常不清楚这种策略的适当阈值是什么(例如,是否需要一个匹配还是多个匹配来排除整个文档),但许多数据集都使用这种方法(Raffel et al., 2020; Xue et al., 2021; Achiam et al., 2023)。Laurençon等人(2022)进一步根据检测到的语言调整这种基于词汇的毒性过滤器,以适应多种语言环境。

基于分类器的方法: 另一种常见的方法是使用分类器对文档进行评分,旨在检测“有害”文档。这些分类器通常使用简单的分类器(例如,基于词袋嵌入的线性模型),以便在大型数据集上进行规模化应用。其他方法使用外部黑匣子工具进行毒性分类,例如Jigsaw或Google的SafeSearch(Rae et al., 2021; Longpre et al., 2023c)。

基于困惑度的方法: 一种较少见的方法是使用仅在不良内容上训练的模型对文档进行评分。Jansen等人(2022)直接在成人和有害内容上训练模型,然后通过困惑度作为实用函数评估文档,高困惑度的文档被假设不包含成人或有害内容。当然,这种方法也有局限性,重要的是要在广泛的有害内容上训练这种模型,否则可能难以检测到新类型的有害内容。

个人身份信息模糊处理: 最后,个人身份信息(PII)是另一个引发关注的问题,可能会暴露个人信息,例如电话号码、电子邮件地址、IP地址和秘密密钥。处理PII的常见方法是使用正则表达式(Subramani et al., 2023; Elazar et al., 2023; Soldaini et al., 2024)或分类器(Allal et al., 2023)检测它们。一旦检测到PII术语,通常的做法是用特殊标记替换它们。

3.7多语言模型的专门选择

除了如第3.1节所详述的筛选所需语言外,在处理多语言预训练数据时还有额外的考虑因素。

语言特定的筛选超参数。 许多选择方法,如去重,可以跨语言重复使用(Laurençon et al., 2022)。然而,关键是要针对每种语言适应超参数,通常需要手动调整(Laurençon et al., 2022; Scao, 2023; Scao et al., 2022; Workshop et al., 2022)。例如,虽然基于技术字符([0-9{}+/()>])的启发式方法仍然有效,但对于基于长度的筛选(§3.2讨论),需要考虑中文等语言每个字符的信息密度远高于英文,因此在筛选流程中,中文所需的最小文本长度截断值会比英文更小(Scao, 2023)。此外,当使用语言识别模型(例如fastText)检测文档的语言时,重要的是移除的阈值由母语人士确定,并针对每种语言具体设定(Laurençon et al., 2022)。语言ID不仅用于确定文档的语言,还可以用于句子级别,在这方面,Kudugunta等人(2023)考虑如果句子级别的语言ID与文档级别ID不匹配,则移除句子。

基于文字脚本的筛选。 使用非拉丁文字脚本的语言(如中文、阿拉伯文和印地文)常常因为编码错误而受到影响,可能需要额外的筛选或噪声校正(Kudugunta et al., 2023)。此外,一些文字(如东巴文符号)目前尚未被Unicode支持,使得选择此类数据尤为困难。基于文字脚本的筛选也可作为具有一对一映射脚本的语言(如日语平假名)的语言识别方法(§3.1)。

手动选择。 由于语言识别和数据可用性方面的困难,嘈杂的语言分类往往与语言稀缺性相关(Kudugunta et al., 2023)。因此,通常需要手动检查多语言数据集,以确保语言识别正确,并且低资源语言中的数据是有用的(Kudugunta et al., 2023)。Kreutzer等人(2022)证明,简单忽视这个问题导致至少15个语料库中没有可用文本,而可用多语言数据集的大部分包含不到50%的可接受质量。虽然像ROOTS项目(Laurençon et al., 2022)这样的大规模合作已能够外包给每种语言的说话者进行此筛选步骤,但即使不懂该语言的人士进行的筛选步骤也可能有效。使用翻译服务评估质量并寻找异常情况,即使对非母语者也是可行的(Kudugunta et al., 2023)。

3.8数据混合

大规模预训练语料库通常由k个域的数据混合组成,这些域通常由来源定义。域权重α ∈ ∆k是一个k维概率向量。例如,Pile数据集(Gao et al., 2020)由24%的网络数据,9%的维基百科数据,4%的GitHub数据等组成。域权重的选择可能导致下游准确性显著差异(Xie et al., 2023a; Albalak et al., 2023a; Xia et al., 2024a; Fan et al., 2023)。在固定的训练预算下,数据混合方法优化域权重以提高训练效率和模型性能。

实用函数和选择机制。 数据混合方法使用受限的实用函数和选择机制。我们将域定义为数据点集合D ⊆ D。对于给定的域集合D1, . . . , Dk,在所有数据混合方法中,数据点x ∈ Di的实用值υ(x)等于标准化的域权重αi/|Di|。特别地,当x, y是同一域中的元素时,实用值υ(x)被限制为与υ(y)相等。因此,任何两个具有非空交集的域将具有相同的实用值,因此数据混合方法通常使用相互不相交的域。

常见基线。 使用启发式或手动确定的权重是常见的基线。根据自然域大小定义域权重会使所有个体数据点权重相同(Raffel et al., 2020)。此外,流行的数据集和模型(例如Pile(Gao et al., 2020),LLaMA(Touvron et al., 2023a))通常使用启发式方法调整数据混合,增加具有直觉上更高文本质量的域,如书籍和维基百科文章。然而,这些手动确定的域权重可能不是最优的(Xie et al., 2023a; Albalak et al., 2023a)。

基于经验确定的权重。 经验确定的权重是另一种常见方法,其中域权重根据模型在下游任务上的性能进行调整。这种方法往往成本高昂,因为它可能需要在零阶优化算法或启发式搜索策略中预训练多个模型。例如,GLaM数据集(Du et al., 2022)根据(1)较小模型的下游性能和(2)每个域的大小设置混合权重,防止像维基百科这样的小来源被过度抽样。虽然这些较小模型的大小未知,但这些模型必须足够大,以在下游性能中产生有意义的影响(大约10亿参数)。类似地,用于训练Gopher的数据集(Rae et al., 2021)使用了通过域权重组合进行扫描的7种组合,并选择导致最佳下游性能的组合。

总的来说,最优的域权重可能不是直观的,并且很可能依赖于训练流水线的所有部分,包括分词器、数据集、模型架构、优化器和其他超参数。例如,最近的研究表明,重复数据可以提供与添加新数据类似的好处,直到某个限度(Muennighoff et al., 2023b)。Muennighoff等人(2023b)还发现,包括大比例的代码(例如50%)不会损害自然语言性能,同时还有利于提高基于推理的任务的性能。

原则性方法。 最近的研究基于信息理论、重要性抽样、分布鲁棒优化和多臂老虎机等经典领域和概念推导出其数据混合方法。我们将这些方法分为两类:离线数据混合方法和在线数据混合方法。

离线数据混合方法优化静态域权重集,定义了用于训练语言模型的新的重新加权数据集。DoReMi(Xie et al., 2023a)通过旨在在所有域上实现低损失来优化域权重,将此问题形式化为组分布鲁棒优化(Group DRO(Oren et al., 2019; Sagawa et al., 2020))。为避免DRO的悲观性,DoReMi通过优化每个域相对于预训练参考模型的过量损失。DoReMi首先使用小型代理模型优化域权重,然后使用优化的域权重(优化轨迹上的时间平均域权重)训练较大的模型。DoReMi使用的乘法更新由过量损失的指数函数导出自在线镜像下降,并等同于指数梯度/Hedge算法更新。类似地,DoGE(Fan et al., 2023)通过两阶段过程优化域权重,跨模型规模进行泛化,采用相同的更新规则。然而,DoGE不是优化过量损失,而是优化每个域与所有其他域之间的梯度对齐,目标是将更高的权重放在具有更好泛化或转移能力的域上。

在线数据混合方法在训练过程中改变域权重以对训练数据进行排序。Skill-it(Chen et al., 2023c)采用类似于离线方法的乘法权重更新,但额外通过捕捉域间成对交互的矩阵来缩放损失。这个矩阵是通过在数据上训练多个模型对域对进行训练而学习得到的。Skill-it考虑了基于任务或“技能”以及来源定义的域。

ShearedLLaMA(Xia et al., 2024a)使用了DoReMi的在线变体,将预训练参考模型替换为使用在Pythia(Biderman et al., 2023b)预训练模型套件上拟合的域级缩放定律估算的参考模型损失。ODM(Albalak et al., 2023a)提出了一种基于EXP3(Auer et al., 2002)的高效在线数据混合方法,这是对敌对老虎机设置中的Hedge算法的扩展。ODM的目标是在模型训练过程中最大化信息增益,它将每个域的奖励形式化为每个域的损失/困惑度(与信息增益成正比)。

在机器翻译设置中,Schioppa等人(2023)旨在使用标准语言建模数据和平行机器翻译数据的混合来训练模型。他们提出了一种在线数据混合方法,通过优化相对损失改进得分,并通过简单地保持得分的移动平均来更新域权重。

数据混合的挑战。 数据混合存在一个自然的权衡:当增加来自一个域的数据比例时,该域的分布密度增加,但所有其他域的相对比例(密度)减少,这可能导致在代表性较低的域上性能较差。这些工作尚未解决的一个挑战是它们的权重如何转移到新的设置中。例如,Albalak等人(2023a)发现,Xie等人(2023a)确定的权重在使用不同的分词器时转移效果不佳。如何将在一个分词器下学习的权重转移到新的分词器下,而不是从头学习这些权重,目前尚不清楚。此外,没有一个基于原则的方法讨论将计算出的权重外推到更多token训练的影响。举例说明,权重是通过在50B token上训练模型计算出来的,然后用于在1T token上训练模型。任何在50B token上看到1轮的域,现在将在1T token上看到20轮,可能导致在较小的域上过拟合的可能性。

数据混合总结&想法

在预训练语料库由多个领域数据组成时,数据混合是数据选择的重要步骤,它为每个领域分配权重,决定了数据集的最终构成。

  • 权重可以通过手动确定、启发式方法、经验确定或基于原则的方法来确定。这些方法在特定评估下已被证明有效,但没有一种被证明是通用的最佳方法。

  • 数据混合具有挑战性,因为在加权一个领域时,其余领域必须降权。克服这种权衡可能是困难的,但具有重要影响力。一种可能的方法是考虑领域之间的交互(相似性),这可以识别可以降低权重而不降低性能的领域,以及那些特定领域,如果降低权重将损害性能。

  • 所讨论的每种方法都有不同的优点,结合方法(例如1/3启发式、1/3经验驱动、1/3基于原则)可能会导致更好的通用性使用,但如何最好地结合它们会增加额外的复杂性。

  • 尽管基于原则的方法颇具代表性并且在数据混合方面处于领先地位,但它们确定的权重在不同设置下(例如分词器、长时间训练)也可能不稳定,这些问题需要在未来的研究中加以解决和探索。


53AI,企业落地应用大模型首选服务商

产品:大模型应用平台+智能体定制开发+落地咨询服务

承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询