Alon Albalak, UC Santa Barbara, [email protected] Yanai Elazar, Allen Institute for AI, University of WashingtonSang Michael Xie, Stanford UniversityShayne Longpre, Massachusetts Institute of TechnologyNathan Lambert, Allen Institute for AIXinyi Wang, UC Santa BarbaraNiklas Muennighoff, Contextual AIBairu Hou, UC Santa BarbaraLiangming Pan, UC Santa BarbaraHaewon Jeong, UC Santa BarbaraColin Raffel, University of Toronto, Vector InstituteShiyu Chang, UC Santa BarbaraTatsunori Hashimoto, Stanford UniversityWilliam Yang Wang, UC Santa Barbara
摘要
近期大型语言模型取得成功的一个重要因素是利用庞大且不断增长的文本数据集进行无监督预训练。然而,简单地在所有可用数据上训练模型可能并非最佳选择(或可行),因为可用文本数据的质量可能有所不同。过滤数据还可以通过减少所需训练量来降低模型训练的碳足迹和财务成本。
数据选择方法旨在确定应将哪些候选数据点包含在训练数据集中,以及如何从所选数据点中适当地进行抽样。改进的数据选择方法的前景导致该领域的研究量迅速增加。然而,由于深度学习主要受经验证据驱动,而在大规模数据上进行实验成本高昂,很少有组织有资源进行广泛的数据选择研究。因此,有效数据选择实践的知识已经集中在少数几个组织中,其中许多组织并不公开分享他们的发现和方法。
为了缩小这一知识差距,我们提出了对现有文献中关于数据选择方法和相关研究领域的全面回顾,提供了现有方法的分类。通过描述研究的当前格局,本文旨在通过为新老研究人员建立一个切入点来加速数据选择的进展。此外,在整个回顾过程中,我们注意到文献中明显的空白,并在结论部分提出了未来研究的有前途的方向。
目录
1 简介
数据选择是机器学习中长期存在的挑战,给定一组原始数据,目标是设计一个在某种意义上最优的数据集(John & Draper,1975)。
数据选择中经常使用的一种最优性概念是与模型性能相关的。在这项工作中,我们采纳了一个普遍认可的观点,即,在本质上,机器学习模型是一种对数据中的统计模式建模的方法,从概率观点来看,最优数据集是与模型评估所基于的分布最接近的数据集(Murphy,2012)。虽然概率观点提出了如何选择改善模型性能的数据的一种常见观点,但这并不是数据选择方法的唯一目标。数据选择方法可以降低成本(通过减少数据集大小(Ortiz Suárez等,2019; Schreiber等,2020; Brown等,2020; Lee等,2022a; Sorscher等,2022)),确保评估指标的完整性(通过删除被怀疑属于评估数据的数据(Rae等,2022; Marone和Durme,2023; Oren等,2023)),以及减少不良行为(如偏见和有毒性(Dodge等,2021; Welbl等,2021; Luccioni和Viviano,2021; Longpre等,2023c))。
在这项工作中,我们将各种数据选择方法统一到一个概念框架下,使我们能够在我们的概率观点下比较和对比各种方法(§[2.2](https://arxiv.org/html/2402.16827v1#S2.SS2 "2.2 数据选择的统一概念框架 ‣ 数据选择的分类法 ‣ 语言模型数据选择调查"),重点关注模型预训练。通过这项调查,我们展示了所有数据选择方法如何定义一个“效用函数”,以确定数据的效用,以及一个“选择机制”,以确定如何基于其效用使用数据点。我们的概念框架使我们能够对各种数据选择方法进行分类,并创建现有文献的分类法。总体而言,这项调查旨在实现两个目标:1)我们提供了一个收集的数据选择方法资源,描述了在为语言模型训练选择数据时的当前最佳实践和考虑因素,2)我们提供了一个统一的数据选择方法视角,使我们能够定义和描述未来研究的潜在有益方向。虽然这项调查旨在全面,但包含每种方法的确切细节将变得过长,因此我们选择了代表性样本进行深入讨论,并提供引用以涵盖我们无法深入讨论的许多方法。
我们按照以下方式组织调查。首先,我们提出了数据选择的分类法和统一概念框架(§[2](https://arxiv.org/html/2402.16827v1#S2 "2 数据选择分类法 ‣ 数据选择调查:语言模型数据选择"))。接下来,我们介绍了本工作的主要重点:调查语言模型预训练的数据选择方法(§[3](https://arxiv.org/html/2402.16827v1#S3 "3 预训练数据选择 ‣ 数据选择调查:语言模型数据选择")。然后,我们介绍了其他语言模型训练制度的数据选择方法,包括多任务训练和指导微调(§[4](https://arxiv.org/html/2402.16827v1#S4 "4 指导微调和多任务训练数据选择 ‣ 数据选择调查:语言模型数据选择")、对齐(§[5](https://arxiv.org/html/2402.16827v1#S5 "5 偏好微调数据选择:对齐 ‣ 数据选择调查:语言模型数据选择")、上下文学习(§[6](https://arxiv.org/html/2402.16827v1#S6 "6 上下文学习数据选择 ‣ 数据选择调查:语言模型数据选择")和任务特定微调(§[7](https://arxiv.org/html/2402.16827v1#S7 "7 任务特定微调数据选择 ‣ 数据选择调查:语言模型数据选择")。接下来,我们将调查扩展到语言之外领域中使用的值得注意的数据选择方法(§[8](https://arxiv.org/html/2402.16827v1#S8 "8 其他领域数据选择 ‣ 数据选择调查:语言模型数据选择"),以及相关主题的简要讨论(§[9](https://arxiv.org/html/2402.16827v1#S9 "9 相关主题 ‣ 数据选择调查:语言模型数据选择")。然后,我们讨论围绕数据选择的一些影响(§[10](https://arxiv.org/html/2402.16827v1#S10 "10 讨论 ‣ 数据选择调查:语言模型数据选择")。尽管调查的主要重点是语言模型预训练,但我们也涵盖了其他训练制度和领域的方法,以便在最后一节指出研究的有前途的方向(§[11](https://arxiv.org/html/2402.16827v1#S11 "11 未来方向:挑战与机遇 ‣ 数据选择调查:语言模型数据选择")。
图1:语言模型数据管道的概述。该过程始于原始数据,经过清洗、过滤和混合,通过数据选择过程创建最终数据集,然后用于训练(或评估)模型。数据选择方法的细节和目标因学习阶段而异,我们确定了五个常见的目标:提高模型性能、提高数据效率、高效选择数据、确保评估完整性以及减少模型偏见和毒性。例如,在为预训练选择数据时(§[3](https://arxiv.org/html/2402.16827v1#S3 "3 Data Selection for Pretraining ‣ A Survey on Data Selection for Language Models")),我们可能更关心数据和选择效率,而不是减少数据中的毒性。除了预训练外,数据选择还可用于指导微调(§[4](https://arxiv.org/html/2402.16827v1#S4 "4 Data Selection for Instruction-Tuning and Multitask Training ‣ A Survey on Data Selection for Language Models")、对齐(§[5](https://arxiv.org/html/2402.16827v1#S5 "5 Data Selection for Preference Fine-tuning: Alignment ‣ A Survey on Data Selection for Language Models")、上下文学习(§[6](https://arxiv.org/html/2402.16827v1#S6 "6 Data Selection for In-Context Learning ‣ A Survey on Data Selection for Language Models"))和任务特定微调(§[7](https://arxiv.org/html/2402.16827v1#S7 "7 Data Selection for Task-specific Fine-tuning ‣ A Survey on Data Selection for Language Models"),每个阶段的优先级不同。
2 数据选择的分类法
在本节中,我们定义了数据选择方法的分类法。我们首先定义了数据点和数据集的概念(§[2.1](https://arxiv.org/html/2402.16827v1#S2.SS1 "2.1 数据选择的背景和动机 ‣ 2 数据选择的分类法 ‣ 语言模型数据选择调查"),然后我们在统一框架中描述了数据选择方法的组成部分(§[2.2](https://arxiv.org/html/2402.16827v1#S2.SS2 "2.2 数据选择的统一概念框架 ‣ 2 数据选择的分类法 ‣ 语言模型数据选择调查"),接着介绍了分类法中的变化维度(§2.3).
2.1 数据选择的背景和动机
在讨论数据选择方法之前,我们首先定义并描述数据集的“单位”,从最小到最大。首先,语言模型的最小数据单位是标记,可以由字节、字符、子词或更大的组件组成,具体取决于分词器。
定义 2.1(数据点)。
数据点 x(i) 上标 x^{(i)} 下划线 x 是一个有序的标记集合,构成用于训练或评估模型的单个数据样本。
例如,在语言建模中,x(i)上标𝑥𝑖可以是来自互联网文档、书籍或科学文章的一系列标记。在训练时,语言模型的输入序列长度有限,因此长文档通常会被拆分为多个数据点。实际上,这意味着x(i)上标𝑥𝑖可能构成文档的一部分(而不是完整的文档)。
定义 2.2(数据点特征).
数据点的特征是用来描述数据点 x(i) 上的一系列测量指标,也决定了 x(i) 位于所有可能数据点空间中的位置。
数据点特征是数据选择的关键组成部分,因为它们经常用于确定数据点是否需要清理或可能完全删除。可以使用多种不同的度量来描述单个数据点。用于描述数据点的常见度量可以是简单统计(例如 x(i)上标𝑥𝑖,或 x(i)上标𝑥𝑖 中的字母字符百分比)或分布式表示(例如使用BERT的嵌入表示(Devlin等人,2019)。
定义 2.3(数据集)。
数据集,𝒟,是数据点{x(1),…,x(N)}(其中N=|𝒟|是𝒟中的示例数),这些数据点将用于训练或评估模型。
定义 2.4(数据集分布)。
数据集 𝒟𝒟\mathcal{D}caligraphic_D 的分布是指数据点在所有可能数据点的空间中的分布。数据集 𝒟𝒟\mathcal{D}caligraphic_D 的分布对训练在其上的模型的最终能力和性质有重要影响。
数据集分布也是数据选择的关键组成部分,因为模型可能在分布外泛化方面遇到困难,数据集分布指定了什么数据属于内部分布,什么数据属于外部分布(Shi等人,2023b)。具体来说,数据分布的密集区域通常表明模型在来自该区域的未见数据上表现良好(例如,标记的分布相似)。考虑到这一点,增加在理想区域周围的数据密度,同时减少在不理想区域周围的密度,通常会导致模型在所需设置中表现良好。
2.2 数据选择的统一概念框架
数据选择的高级目标。
数据选择是从候选数据点集合中创建数据集的过程,该数据集将用于训练或评估机器学习模型。通常在进行数据选择之前,数据会被收集、标注和存储。然后,一旦确定了模型的目标用例,数据选择的目标就是过滤和选择最大化所需目标的数据点。
数据选择的正式定义。
定义 2.5(数据选择)。
数据选择函数,ϕitalic-ϕ\phiitalic_ϕ,以数据集 𝒟rawsubscript𝒟raw\mathcal{D}{\mathrm{raw}}caligraphic_D start_POSTSUBSCRIPT roman_raw end_POSTSUBSCRIPT 和目标函数 fobjsubscript𝑓objf{\mathrm{obj}}italic_f start_POSTSUBSCRIPT roman_obj end_POSTSUBSCRIPT 以及过滤器为输入,从 𝒟rawsubscript𝒟raw\mathcal{D}{\mathrm{raw}}caligraphic_D start_POSTSUBSCRIPT roman_raw end_POSTSUBSCRIPT 中过滤、清理和选择数据点,创建最终数据集 ϕ(𝒟raw)=𝒟italic-ϕsubscript𝒟raw𝒟\phi(\mathcal{D}{\mathrm{raw}})=\mathcal{D}ϕ ( caligraphic_D start_POSTSUBSCRIPT roman_raw end_POSTSUBSCRIPT ) = caligraphic_D ,使得对于在数据集 𝒟𝒟\mathcal{D}caligraphic_D 上训练的模型 ℳℳ\mathcal{M}caligraphic_M,ϕitalic-ϕ\phiitalic_ϕ 旨在最大化/最小化目标函数 fobj(ℳ)subscript𝑓objℳf{\mathrm{obj}}(\mathcal{M})italic_f start_POSTSUBSCRIPT roman_obj end_POSTSUBSCRIPT ( caligraphic_M )。
在实践中,通常组合多种选择方法以改善最终数据集的覆盖范围和特异性。在这种情况下,我们将组件函数表示为 ϕjsubscriptitalic-ϕ𝑗\phi_{j}italic_ϕ start_POSTSUBSCRIPT italic_j end_POSTSUBSCRIPT 和组合表示为 ϕ(𝒟)=ϕ1∘⋯∘ϕn(𝒟)italic-ϕ𝒟subscriptitalic-ϕ1⋯subscriptitalic-ϕ𝑛𝒟\phi(\mathcal{D})=\phi_{1}\circ\dots\circ\phi_{n}(\mathcal{D})italic_ϕ ( caligraphic_D ) = italic_ϕ start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT ∘ ⋯ ∘ italic_ϕ start_POSTSUBSCRIPT italic_n end_POSTSUBSCRIPT ( caligraphic_D )。例如,ϕ=ϕ1∘ϕ2∘ϕ3italic-ϕsubscriptitalic-ϕ1subscriptitalic-ϕ2subscriptitalic-ϕ3\phi=\phi_{1}\circ\phi_{2}\circ\phi_{3}italic_ϕ = italic_ϕ start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT ∘ italic_ϕ start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT ∘ italic_ϕ start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT 可以包括一个简单的过滤组件,ϕ3subscriptitalic-ϕ3\phi_{3}italic_ϕ start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT,首先移除不良数据点,然后是一个清理组件,ϕ2subscriptitalic-ϕ2\phi_{2}italic_ϕ start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT,从各个数据点内部移除不良内容,接着是一个混合组件,ϕ1subscriptitalic-ϕ1\phi_{1}italic_ϕ start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT,确定剩余数据点在最终数据集中应使用的次数。通过这些机制,数据选择函数可以调整个别数据点特征和数据集分布,使其朝着数据空间中更理想的区域调整,以改善模型的目标用途的理想特性。
数据选择方法的组成部分。
我们确定选择函数 ϕjsubscriptitalic-ϕ𝑗\phi_{j}italic_ϕ start_POSTSUBSCRIPT italic_j end_POSTSUBSCRIPT 的共同组成部分:效用函数 和 选择机制。
效用函数 υ(x(i)):𝒟→ℝ:𝜐superscript𝑥𝑖→𝒟ℝ\upsilon(x^{(i)}):\mathcal{D}\to\mathbb{R}italic_υ ( italic_x start_POSTSUPERSCRIPT ( italic_i ) end_POSTSUPERSCRIPT ) : caligraphic_D → blackboard_R 定义了从数据点到表示计算出的效用的实数的映射。例如,效用函数可以是一个二元指示器,定义为:如果 x(i)superscript𝑥𝑖x^{(i)}italic_x start_POSTSUPERSCRIPT ( italic_i ) end_POSTSUPERSCRIPT 中的标记总数大于10101010,则为1,否则为0。另一个效用函数可能将 x(i)superscript𝑥𝑖x^{(i)}italic_x start_POSTSUPERSCRIPT ( italic_i ) end_POSTSUPERSCRIPT 的效用值设为 x(i)superscript𝑥𝑖x^{(i)}italic_x start_POSTSUPERSCRIPT ( italic_i ) end_POSTSUPERSCRIPT 是维基百科文章的可能性。
选择机制使用效用函数的输出来确定数据点是否包含在结果子集中(有时还确定数据点应重复多少次)。它可以是一个简单的指示器(例如,只有在字符数大于10时才包含 x(i) 上标 x^{(i)} 斜体 x 在 𝒟 中),或概率函数(例如,如果 υ 是 x(i) 上标 x^{(i)} 斜体 x 是维基百科文章的可能性,则根据 υ(x(i)) 定义的概率将 x(i) 包含在 𝒟 中)。此外,对于需要阈值的选择机制,需要一个“选择敏感度”(例如,只有在 υ(x(i)) > 0.9 时才包含 x(i))。
数据选择方法用于解决各种目标,通过调整效用机制、选择机制和过滤器灵敏度,可以实现期望的结果。我们将具体组件的实例讨论留到各自介绍它们的部分。
2.3 数据选择分类法中的变异维度
数据选择方法可用于各种目标,方法的目标将在一定程度上决定所使用的确切效用函数和选择机制。为了帮助形成分类法并更好地理解方法之间的关系,我们定义了一些常见方法之间的共性和差异的特定维度(无特定顺序)。
图2:数据选择方法的两个常见目标的概念演示:分布匹配和分布多样化。在左侧,我们看到分布匹配,其目标是选择与从目标数据分布中采样的数据点(蓝色圆圈)相似的数据点(绿色十字),并拒绝那些偏离分布太远的数据(红色叉)。在右侧,我们看到数据集多样化,旨在以一种方式选择/拒绝数据点(绿色十字/红色叉),以保持对整个分布的覆盖,同时减少数据点的总数。
2.3.1 分布匹配 vs. 多样化
分布匹配方法的主要目标是选择具有与所需目标分布相似属性的数据,然后对其进行评估或部署模型。例如,所需分布可以定义为已知高质量数据、特定语言或目标领域(如金融、医学或法律)。所需目标分布的具体规范可以从明确定义(如检测语言)到相当模糊(如“高质量”数据)不等。一些分布匹配方法将尝试匹配数据表示分布,其中与目标分布的相似性通常是效用(如与维基百科数据的相似性)。其他分布匹配方法使用从目标数据集中抽样的数据统计作为效用(如每个示例的字符总数)。
分布多样化方法旨在优先考虑样本中的异质性,消除冗余。它们在一个表示空间内运作,允许在数据点之间测量相似性。数据点的效用由其与表示空间中其他数据点的关系(相似性)定义。分布多样化方法通常会移除在某些表示空间(例如字符或向量)中相似的数据点。通过移除非常相似的数据点,多样化方法可以消除数据中的冗余,从而通过减少数据集大小提高训练效率。此外,由于分布多样化方法强制数据集分布更加平坦,它们可以导致减少记忆、减少偏见和提高鲁棒性。
2.3.2 修改数据集 vs. 数据点
改变数据集的方法旨在增加或减少数据集中个别数据点的频率,以增加(减少)结果分布密度围绕理想(非理想)区域。这些方法以数据集为输入,并为每个个别数据点分配一个非负整数值,表示该数据点应在结果数据集中包含的次数。形式上,数据集分布改变函数ϕj:𝒟N→ℕ0,ϕⱼ:𝒟ᴺ→ℕ₀映射每个数据点x(i)∈𝒟到一个非负整数,基于效用函数,υ(x(i))υ(x⁽ⁱ⁾)。
修改数据点的方法旨在调整数据点内的内容,以更好地匹配令人满意的令牌分布,使数据集中的个别数据点更接近所需的特征。在实践中,这可以采取删除文档中的个别行或文本块的形式。例如,在为自然语言训练模型时,删除包含HTML标记的行可能有益,因为它们很可能不符合所需的目标领域。
2.3.3 输出空间:二进制 vs. 自然数选择
改变数据集分布的方法会引入另一个方差维度;即选择函数 ϕitalic-ϕ\phiitalic_ϕ 分配二进制值(即 包括或移除)还是允许更大的整数值。通常只分配二进制值的方法通常被称为过滤,其目标通常是通过从数据集中移除不良数据点来调整数据集分布。另一方面,可以分配任何自然数的方法通常被称为数据混合,其目标通常是通过优先考虑具有高效用值的数据集子集来调整数据集分布,同时减少围绕效用较低子集的分布密度。数据混合方法通常定义一个效用函数,将相同效用分配给整个数据子集(例如 所有网络文本获得相同效用,而所有书籍获得不同效用)。过滤和混合可以作为管道的一部分使用,其中数据首先经过过滤,然后混合。
表1:预训练数据选择方法可以沿着三个变化轴进行描述:它们是否旨在进行分布匹配或多样化,输出空间是什么,以及它们是否对数据集分布或数据点特征进行调整。
2.3.4 训练阶段
语言模型训练通常需要多个阶段,每个阶段都有不同的目的。在这项工作中,我们确定并讨论了五个不同的语言模型训练阶段,其中可以使用数据选择:预训练、指导微调、对齐、上下文学习和任务特定微调。
每个训练阶段都有不同的目标,因此每个阶段的数据选择方法将使用不同的机制来实现这些目标。例如,在为特定领域或任务训练语言模型时,目标分布是相当明确定义的,但在预训练通用语言模型时定义要少得多,因此数据选择方法可以利用这些信息来针对更好的数据。另一个考虑因素是每个训练阶段的候选数据点数量。例如,预训练可能比指导微调具有显着更多的候选数据点,这促使预训练需要高效的数据选择方法,而指导微调可以承担更昂贵的方法。在这项工作中,我们专注于预训练的数据选择。
3 预训练数据选择
图3:数据选择:预训练。现代语言模型的第一训练阶段。通常,最重要的选择目标是模型性能、评估完整性和选择效率。
图 4:用于预训练的数据过滤流程概述。每个过滤组件在第 3 节中有描述,并展示了用于预处理文本数据的常见过滤器。请注意,不同的研究采用不同的过滤器,在不同的阶段,并不一定遵循此处传达的顺序。
预训练的目标通常是训练一个通用模型,这需要在大量文本上进行训练,通常以十亿和万亿记号来衡量。从如此庞大的数据中选择最佳数据可能非常昂贵,因此在该过程中的一个常见第一步是使用各种过滤器删除数据,很可能需要将多个过滤器串联在一起以实现所需的数据集。我们呈现预训练数据选择方法的顺序,大致基于它们在真实数据选择管道中的使用顺序。当然,并非所有管道都需要这里介绍的每种方法,根据情况确切的顺序可能略有不同。
3.1 语言过滤
在为语言模型的预训练筛选数据时,一个至关重要的第一步是考虑模型将在哪些语言中运行,并过滤掉不属于这些语言的数据。这不仅适用于自然语言,还适用于编程语言,然而,确定每种语言的方法会有所不同。对于多语言语言模型,除了过滤掉不需要的语言外,还重要的是跟踪来自每种语言的数据量指标。同样,对于具有编程能力的模型,重要的是跟踪来自每种编程语言的数据量。
常用实用函数。
在筛选语言时,关键是实用函数计算速度要快,因为实用计算将在大量数据上执行。因此,许多旨在筛选特定自然语言的方法利用基于字符 n-gram 的分类器的快速计算实用函数(Conneau & Lample,2019; Wenzek 等,2020; Raffel 等,2020; Xue 等,2021; Laurençon 等,2022),包括 langdetect222https://pypi.org/project/langdetect/、cld3333https://github.com/google/cld3 和 fastText(Joulin 等,2016; Grave 等,2018)。一些方法旨在删除所有非英语数据,而其他方法可能包括 100 多种语言,并需要不同的实用函数策略。
仅筛选英语数据集。
在开发仅支持英语的 C4 时,Raffel 等人(2020)使用一个朴素贝叶斯分类器与字符 n-gram(langdetect)来过滤出任何未被分类为英语的页面,概率为 0.99。他们发现使用非常高的阈值灵敏度是合适的,因为经过过滤的数据集仍然包含大量数据(750GB 的数据)。最近,当开发 Dolma 时,Soldaini 等人(2024)利用了 fastText 的(Grave 等人,2018)语言识别模型,并过滤掉任何被分类为英语概率低于 0.5 的文档,发现这样移除了 61.7% 的网页。然而,在过滤图书(来自 Project Gutenberg444https://www.gutenberg.org/)时,他们首先将每本书按段落拆分,并为每个段落计算语言分数,只移除平均英语概率(由 fastText 分配)低于 0.5 的书籍。Penedo 等人(2023)在过滤 RefinedWeb 时也使用了 fastText,但与 Dolma 不同,他们使用了更高的阈值(0.65),并过滤掉更多的网页。
更近期方法使用的较低阈值可能是由多种因素组合而成的。首先,在开发 C4 时,750Gb 的数据被认为是一个非常庞大的数据集,但更近期的数据集可能达到几TB的数据量,使用较低的阈值将允许更多数据通过过滤器。此外,由于支持的语言不同以及对不同长度文本的强度不同,很难衡量不同语言识别模型(如 langdetect vs. cld3. vs. fastText)之间的准确性差异,但一些实验表明 fastText 在准确性上优于其他语言识别模型,https://modelpredict.com/language-identification-survey 同时还减少了延迟。一般来说,用于保留或过滤数据点的阈值部分取决于所需的数据集大小,较低的阈值将保留更多的数据量,但可能包含非英文文本。
多语言数据集的筛选。
多语言语料库的过滤方法通常依赖于 fastText(Joulin等人,2016)语言分类器,该分类器来自CCNet(Wenzek等人,2020),它经过训练可以使用维基百科数据对176种语言进行分类(Grave等人,2018;Conneau等人,2020;Laurençon等人,2022)。fastText分类器具有很高的处理速度,可以在单个CPU核心上每秒处理1,000个文档(Wenzek等人,2020)。这种方法的一个例子来自Laurençon等人(2022),他们使用fastText模型为ROOTS语料库的文档语言预测提供预测以及预测置信度评分。如果置信度评分低于阈值,则会删除文档,置信度评分是由母语使用者基于每种语言确定的,但在他们的论文中没有披露。为每种语言确定一个阈值的需求为开发多语言语料库的语言过滤器增加了大量额外的工作量。此外,这些过滤器可能在语言多次更改的文档上失败,因为分类器无法自信地预测单一语言。此外,虽然该分类器经过了对176种语言的训练,但有数千种语言无法通过这种方法覆盖(van Esch等人,2022)。这促使人们创建了覆盖数千种语言的更广泛语言检测器,然而,它们仍然在极低资源语言的精度上存在问题(Caswell等人,2020;Kudugunta等人,2023)。
另一种常见的多语言过滤方法是通过国家域名或选择已知包含特定语言数据的URL(Luukkonen等人,2023)。特别是对于维吾尔语等资源非常匮乏的语言,这可能比语言分类器更可靠(Zhang等人,2023a)。
有关多语言模型数据选择的进一步讨论,请参阅第3.7节。
代码语言过滤。
用于检测代码语言的实用功能非常基础。例如,Chowdhery等人(2022)通过搜索与一组批准的文件扩展名匹配的文档来过滤来自24种编程语言的数据(例如,“.py”表示python)。当在包含文件名的已知代码数据上进行过滤时,例如Github存储库的快照(Chen等人,2021; Li等人,2022a),这种策略效果很好。然而,据我们所知,没有发现任何过滤方法可以在自然语言文档中找到代码,这在某些领域是完全可能的,例如在Stack Exchange666https://archive.org/details/stackexchange中,可能会提供大量交错的自然语言和代码。
语言过滤的挑战。
在语言检测的过程中存在着对过滤器灵敏度的权衡,较低的阈值允许更多的数据通过过滤器,但可能会牺牲一些质量。一方面,对英语数据使用严格的过滤器可能减少非英语数据的数量,但另一方面,降低阈值可以减轻语言检测器对少数族裔所讲方言(例如非裔美国人方言英语)的固有偏见(Blodgett等人,2016)。确定用于语言分类器的确切阈值高度依赖于使用情况。尽管由于其速度和准确性的结合,fastText是当前语言检测的标准,但它并非完美。基于循环(Toftrup等人,2021)和基于transformer的架构构建的更准确系统已经开发出来,但运行成本更高。
语言过滤总结与想法
• Language filtering is an important first step of data selection where documents are selected to include only the desired languages. • Classifier-based methods are the norm when creating both english-only and multilingual datasets. • For lower-resourced languages, URL-based methods are also useful for classifying the language used in multilingual datasets and can sometimes can be more reliable than classifiers. • Filtering for code languages is very simple, most works simply using the file extension. One interesting direction for future research is developing methods that find code data that within documents of natural language. To the best of our knowledge, no such methods currently exist, but a code-language identifier could be used in domains with interleaved code and natural language to find meaningful quantities of new code data.
3.2 启发式方法
在对语言模型进行预训练时,原始数据集通常由大量来自各种来源的文本组成,经过一组简单的启发式过滤。主要模型通常是在网页抓取数据上进行训练,如CommonCrawl和GitHub,尽管对它们的确切组成透明度正在下降(Bommasani等,2023)。然而,众所周知,预训练数据包含大量的样板文本、错误消息和冒犯性文本(Raffel等,2020;Touvron等,2023a)。例如,Gao等人(2020)发现,在创建Pile时,最常见的13-gram是字符重复,如一串短横线(“- -”)有1100万个实例。删除这类不良文本非常重要,但由于涉及的语料库规模庞大,必须高效地完成。在这种情况下,一种常见的数据过滤方法涉及简单且易于计算的启发式算法。
启发式方法的目标是沿某个维度(例如句子长度、重复性)约束训练分布,假设评估分布将表现出类似的特征。过去的研究中使用了大量启发式方法,但通常可以归为以下几类启发式方法之一:项目计数、重复计数、存在性、比率或统计。在本节中,我们讨论其中的代表性样本,提供表2作为启发式方法概述,并在附录A中包含全面的列表。
表2:常用的启发式效用函数和示范性选择机制。
常用实用函数。
对于基于启发式的文本过滤,实用函数应该计算速度非常快,通常依赖于数据集中每个数据点中包含的原始文本的一个或多个特性。然而,导致最佳性能的确切文本特性取决于模型的期望用例,并且目前尚不清楚。因此,已经提出了各种不同的实用函数,每个函数都对预期的测试分布做出了假设,并过滤掉不符合这些假设的数据。例如,Raffel等人(2020)丢弃了少于五个句子的任何网页,Rae等人(2022)丢弃了少于50个或大于100,000个字的文档,Xue等人(2021)丢弃了少于200个字符的三行文本的文档。另一个常见的启发式方法是删除具有特定黑名单词或短语的文档。Raffel等人(2020)删除了任何一个“肮脏、淫秽、下流或其他不良词语清单”上的词语的文档。然而,Penedo等人(2023)建议,Raffel等人(2020)使用的NSFW词语屏蔽列表通常会导致误报,导致对法律和医学内容进行过滤。
另一个经常与文档质量相关联的启发式是重复性。Rae等人(2022)发现文档内部的过度重复与无信息内容相关,并建议过滤出具有高比例重复行、段落和n-gram的整个文档可以提高性能。例如,如果一行重复占文档的30%以上,他们会删除整个文档。请参阅Rae等人(2022)的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等人(2022)移除符号与单词比率大于0.1的文档,但随机选择机制将允许一些低效用数据不被过滤掉。虽然随机选择机制可能并不总是合适,但肯定有一些启发式方法可以使数据集分布受益,但随机选择机制适用的确切设置是一个开放的研究问题。数据质量过滤器(§3.3)通常使用随机选择机制,将随机性应用于启发式过滤器是数据选择中尚未探索的一个领域。
启发式选择方法的缺点。
启发式选择方法的一个缺点是它们不评判文档的质量或内容,而是完全依赖表面层次的统计数据和计数,缺乏其他数据选择方法的精细性。这可能导致一些理想的数据被删除,但只要经过过滤后的数据量仍在理想范围内,通常会被接受为一种权衡。
启发式过滤器的另一个缺点是验证其有效性的挑战。在开发并在原始数据集上使用启发式之后,要确定启发式是否改进,需要进行以下操作之一:1)手动验证筛选的文档是否不受欢迎,保留的文档是否受欢迎;或2)训练和评估模型。这两种方法都耗时且昂贵,使得启发式过滤方法的实验进展非常缓慢。
设计启发式过滤器时的考虑事项。
目前已知的启发式最佳实践在过去几年中并未发生显著变化。Soldaini等人(2024)最近使用了MassiveText(Rae等人,2022)和c4(Raffel等人,2020)的过滤器的组合,而Penedo等人(2023)也遵循了为MassiveText(Rae等人,2022)定义的规则。然而,目前尚不清楚常见启发式缺乏进展是由于在这一领域的探索不足(由于资源有限和研究不足),还是已知的启发式真正是最优的。据我们所知,尚未有研究专门比较系统研究中的许多可能的启发式。
启发式方法总结与思路
• Heuristics are a very efficient method for removing large quantities of data, but lack finesse. • Most common heuristic utility functions fall into 5 categories: item count, repetition count, existence, ratio, and statistics. • Heuristics should be designed specifically for the domain of interest (e.g. heuristics for code will not work for natural language). • Heuristics can also be used to improve data point characteristics (e.g. removing HTML from a web document, or specific lines within a document). Because heuristics lack finesse, it may be worth exploring the use of stochastic selection mechanisms to allow higher quantities of data through the filter (with the hope that a filter farther down the pipeline will remove data that is actually undesirable). Validating the quality of a heuristic filter is a very slow process, requiring either manual inspection, or training and evaluating a model. Developing methods that can directly measure the data itself could significantly improve iteration time.
3.3 数据质量
在最高质量的数据上进行训练可以带来更强的性能(Du等人,2022)。然而,“高质量”对于语言模型预训练数据并没有明确定义的术语。此外,没有一种大小适合所有情况的表征,因为根据使用情况,“高质量”数据可能差异巨大(Longpre等人,2023c)。此外,毒性过滤器和质量过滤器的实施可能进一步边缘化那些文本通常不被认为是“高质量”的社区(Xu等人,2021;Longpre等人,2023c)。在这项工作中,我们将“高质量”一词的使用范围缩小到一种常见用法,即指“已知由人类撰写,并且可能经过编辑过程”的数据 Grave等人(2018);Gao等人(2020);Brown等人(2020);Chowdhery等人(2022)。一些属于“高质量”类别的数据领域包括维基百科、书籍、专利和同行评议的期刊文章。
常用实用函数。
与启发式方法类似,用于数据质量过滤的效用函数应该快速且廉价,然而,与启发式过滤方法相反,质量过滤需要模糊匹配,通常具有更高的计算要求。因此,数据质量的方法通常使用相对廉价的分布表示方法,例如 n-gram,以允许更模糊的过滤标准。
在进行质量过滤时常用的一种方法是基于分类器的质量过滤,其目标是识别可能来自与已知“高质量”数据点(参考语料库)相同(或相似)分布的数据点(Longpre等人,2023c)。例如,Brown等人(2020)根据与“高质量”参考语料库(包括WebText(Radford等人,2019)、Books1、Books2和英文维基百科)的相似性过滤Common Crawl999https://commoncrawl.org/的一个版本。他们使用“高质量”参考语料库作为正类,未经过滤的Common Crawl文档作为负类来训练分类器。然后,该分类器定义了选择遵循所需分布的数据的效用度量。用于为每个文档分配质量分数的分类器应该相对轻量级,因为预训练数据集的规模很大。例如,Du等人(2022)使用基于特征哈希的线性分类器,而Brown等人(2020)和Gao等人(2020)使用n-gram大小为2的fastText模型(Joulin等人,2016)。同样,Xie等人(2023b)将效用计算为两个哈希n-gram生成模型之间的重要性权重。虽然现代语言模型可能能够更好地建模参考语料库的分布,但它们也会显著增加所需的计算量,而哈希和基于n-gram的方法则不会。
一个竞争性的计算效用的方法是基于困惑度的质量过滤,其目标是在参考语料库上训练语言模型,并在待过滤的数据上进行评估,为每个候选文档分配一个效用分数。例如,Wenzek等人(2020)在维基百科上训练了一个5-gram Kneser-Ney(Heafield,2011)模型,并计算了其Common Crawl转储中每个段落的困惑度。困惑度较低的段落被认为接近参考领域,而困惑度较高的数据被认为质量较低。
选择机制。
基于分类器的质量过滤的一个潜在负面影响是参考语料库不太可能包含所有被认为是高质量的数据的示例。因此,在选择机制中允许一定的随机性是可取的。例如,Brown等人(2020)使用他们的分类器对Common Crawl文档进行评分,并仅保留那些满足条件的文档。
| np.random.pareto(α)
1−document_score,formulae-sequencenprandompareto𝛼1document_score\mathrm{np.random.pareto}(\alpha)>1-\mathrm{document_score},roman_np . roman_random . roman_pareto ( italic_α ) > 1 - roman_document _ roman_score , | | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
其中 α=0.9 是通过匹配 WebText 语料库中的分数分布确定的。通过选择一些与“高质量”分布不匹配的文档,并引入一些随机性,确保最终语料库中的文档大多数是高分的,但仍包括一些相对于参考语料库而言分布不同的文档。
当效用度量是一个重要性权重(Xie等人,2023b)时,选择机制是根据数据集中的重要性权重对示例进行抽样。根据重要性权重进行(无替换)抽样可以通过Gumbel top-k𝑘kitalic_k技巧高效完成,该技巧在选择前用Gumbel噪声扰动未归一化的对数重要性权重以选择前k𝑘kitalic_k。
质量过滤的潜在挑战。
在执行质量过滤时需要考虑的一个重要因素是,某些参考语料库可能存在对某些人口统计学、方言和社会方言偏向或偏离的偏见(Rae等人,2022)。此外,Gururangan等人(2022)发现,一个在维基百科、书籍和新闻稿上训练的质量过滤器(重现了Brown等人(2020)的质量过滤器),在对高中报纸文章进行评估时,更偏好来自富裕、受过高等教育和城市地区的高中文章。他们证明,尽管质量过滤通常被认为是相当中立的,但它隐含了对优选价值的判断。因此,应谨慎进行质量过滤,以确保避免偏见,并且数据的分布充分覆盖所需的方言和人口统计学。在保持质量的同时避免引入偏见是未来研究的一个重要方向。
使用质量过滤器是否有益仍然是一个悬而未决的问题。最近一些完全放弃使用质量过滤器的作品包括 MassiveText(Rae等人,2022),RefinedWeb(Penedo等人,2023),以及Dolma(Soldaini等人,2024)。具体来说,Penedo等人(2023)选择不进行任何质量过滤,而是在严格的去重上花费更多计算资源。目前尚不完全清楚何时使用质量过滤器是有益的,何时不需要,需要进一步研究。
数据质量总结与想法
• Data quality methods aim to select data points that are similar to data which is of known “high-quality”. • Classifier- and perplexity-based quality filtering are the existing approaches, with classifier-based filtering being the more popular method. • For both classifier- and perplexity-based methods, it is important to be careful when training the classifier because this can introduce biases (e.g. against lower-income, less-educated populations). Exactly which situations quality filtering is beneficial is still undecided, as recent works have trained performant models without using quality filters at all. This is an area that requires further study.
3.4 领域特定选择
虽然一些语言模型是为通用领域预训练的,但也可以针对特定领域进行训练,选择可以帮助找到与所需领域分布相似的数据(例如医学或法律)。领域特定的过滤方法大多假设可以访问一些领域内数据和来自辅助来源的额外数据。然后过滤的目标是找到最类似于领域内数据分布的辅助数据。
常用实用函数。
为了生成可以区分领域内外数据的数据表示,领域特定选择的效用函数通常利用在一个或两个数据分布上训练的模型。
许多领域特定的选择方法源自 Moore-Lewis 选择(Moore & Lewis, 2010),其遵循以下条件。设 I 是一个领域内数据集,N 是一个通用数据集,NI 是我们希望发现的领域内子集。他们指出,从 N 中随机抽取的数据点 x(i) 属于 NI 的概率为
| 在给定 N 的情况下,P(NI|x(i),N)=\dfrac{P(x(i)|I)P(NI|N)}{P(x(i)|N)}, P_{NI}^{x_iN}=\dfrac{P_{x_i}^I P_{NI}^N}{P_{x_i}^N}, |
从贝叶斯规则的一个变体派生而来。如果可以直接测量概率P(x(i)|I)和P(x(i)|N),它们将形成一个非常强大的效用函数。确切的分布是难以处理的,但可以通过在I和N的样本上训练语言模型来计算P(x(i)|I)和P(x(i)|N)的估计值。此外,概率P(NI|N)可以简单地被忽略,因为它不依赖于x(i),所以对于所有的x(i),P(x(i)|I)P(x(i)|N)∝P(x(i)|I)P(NI|N)⁄P(x(i)|N)。为了直接处理语言模型的输出,比值P(x(i)|I)P(x(i)|N)被转换为对数域中的log(P(x(i)|I))−log(P(x(i)|N)。最后,从在I和N上训练的模型中得到的交叉熵损失用于估计这些值。
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选择方法的方法一直是黄金标准,但可能可以采用其他数据归因和估值方法,类似于datamodels,用于选择域内数据。然而,这些方法通常具有更高的计算要求,这是需要解决的挑战。基于困惑度的方法,类似于基于困惑度的质量过滤方法(§[3.3](https://arxiv.org/html/2402.16827v1#S3.SS3 "3.3 Data Quality ‣ 3 Data Selection for Pretraining ‣ A Survey on Data Selection for Language Models")),只需要一个域内模型,也是一个可行的研究方向。
选择机制和阈值。
特定领域的过滤方法可以利用确定性或随机选择机制。大多数基于 Moore-Lewis 的方法倾向于使用带有阈值的确定性选择。如前所述,特定领域的过滤方法通常假设除了辅助数据外还可以访问领域内数据。为了选择适当的阈值灵敏度,可以使用一组保留的领域内数据(Sethy 等人,2006)。也可以使用随机选择机制。例如,DSIR(Xie 等人,2023b)根据重要性权重对数据进行重新采样。随机机制可以允许更广泛的数据多样性,特别是在目标中存在少数子群体可能被忽略的情况下,当根据某些度量确定性地选择高得分数据时。
与数据质量过滤器的比较。
特定领域的过滤方法与数据质量过滤非常相似,可以看作是数据质量过滤的一种泛化。核心区别在于,在数据质量过滤中,领域内的数据(参考语料库)被用作所需分布的代理,但实际上这并不被保证,因此随机性元素对于数据质量过滤至关重要。另一方面,如果有足够的领域内数据,特定领域的过滤器可以直接衡量辅助数据是否与所需分布匹配。