什么是好的训练数据?质量、多样性,以及缺失的目标

中文版本由 ChatGPT 翻译,请参考英文版本。

语言模型的训练数据设计 · 三篇系列之二
什么时候值得优化,什么是好数据,以及如何改变数据。
加速与终点改善 · 什么是好的训练数据? · 从目标到操作

想象两条训练样本。

第一条是一篇写得很好的百科文章:语法规范、事实可靠、结构清晰。第二条是一份几何证明失败后留下的草稿:充满缩写、反复尝试、写到一半的公式,以及接近结尾处一个关键的纠错步骤。

哪一条是更好的数据?

对于通用语言模型,也许是第一条。对于需要在数学推理出错后发现并纠正错误的模型,也许是第二条。对于商品描述生成模型,可能两条都不合适。

“好数据取决于任务”,这句话并不新鲜。问题在于,一旦我们把某个替代性的评分指标当成数据的固有属性,许多数据处理流程就不再遵循这个认识。很多数据工程工作首先问的是:一条样本是否“高质量”?仿佛质量就写在样本内部,等待我们通过启发式规则、参考语言模型、学习得到的分类器或 LLM 评判器把它找出来。随后,我们再加入多样性,以免高分数据过于单一。

这套做法往往有效。但这样的表述隐藏了两个尚未回答的问题:

质量由谁来定义?多样性又体现在哪些方面?

“质量”太模糊,无法直接优化

假设原始数据池服从分布 $p_{\mathrm{pool}}(x)$,质量评分决定了样本的选择权重或接受概率 $w(x)$。筛选后,我们实际使用的训练分布是

\[q(x) = \frac{p_{\mathrm{pool}}(x)w(x)} {\int p_{\mathrm{pool}}(x')w(x')\,dx'}.\]

评分器并没有发现一个天然附着在每条样本上的标签。它改变的是模型接触数据池中不同部分的概率。但哪些样本应该得到更多训练机会,已有研究给出的答案很不一样。

质量评分如何处理“难度”,就很能体现这种分歧。

有时,困难样本是好数据:

有时,简单样本才是好数据:

这两类做法都可能合理,却把训练机会分配给不同类型的样本。“质量”这个词并没有解决分歧,只是被同时用来描述两种选择。

与第一篇的联系。基于难度的评分可能提高学习效率或鲁棒性,但如果没有来自目标的额外信息,它们本身并不能指出应该怎样调整数据,才能缩小训练与目标之间的差距。用上一篇的说法,它们更自然地为加速提供指引,而不一定能带来持续的终点改善。

有效的筛选器,往往隐含了一个目标分布

许多有效的筛选器,并不是在抽象地衡量质量。它们隐含地定义了一个目标数据分布,再偏向选择在这个分布下概率更高、或更受偏好的样本。

CCNet 用一个在 Wikipedia 上训练的 KenLM 模型给网页文档打分。低困惑度意味着文档更接近这个参考语言分布。筛选的结果,是让来源广泛的网页数据更像 Wikipedia 文本。

DataComp-LM 更清楚地展示了这种依赖关系。它的 fastText 筛选器通过区分正例语料和广泛的网页数据来学习。把正例语料从 Wikipedia 或 OpenWebText 换成 OpenHermes 与高评分的 ExplainLikeImFive 回答,分类器寻找的内容就会改变;在其消融实验中,后一种组合得到了效果最好的筛选器。

基于 LLM 的流程则通过评判标准来塑造偏好。QuRating、AlpaGasus 和 DEITA 使用不同的提示词、评判模型和评价标准,最终得到不同的入选数据分布。

从这个角度看,在 Wikipedia 上训练的语言模型、以偏好语料为正例训练的分类器,以及按照给定标准工作的 LLM 评判器,都在以不同方式表达一种偏好:什么样的训练样本应该被更多地选中。这种偏好隐含地定义了一个希望得到的数据分布。这些方法之所以有效,并不是因为它们发现了普适的质量,而是因为它们隐含的分布偏好恰好有助于下游目标。

与第一篇的联系。如果筛选器隐含的目标分布,比原始数据池更贴近下游目标,筛选就更有可能带来持续收益。此时,它做的不是发现普适的质量,而是缩小已有的训练—目标差距。这与上一篇关于终点改善的观点是一致的。

不过,符合筛选器的偏好,并不能证明数据对下游任务有价值。这些筛选器偏好的数据分布需要与下游目标对齐,而这种对齐是否有效,只能通过在筛选后的分布上训练得到的模型来检验。即使方向正确,大多数质量评分仍然是逐样本进行的:它们忽略样本之间的关系,可能把有限的数据预算反复花在近乎重复的样本上,使最终数据集过于单一。

多样性是直觉上的补救——但什么才算不同?

对于逐样本评分的不足,加入多样性是很自然的补救。它让筛选考虑整个集合,而不只看孤立的样本,也能避免选出的高分样本大多内容相近。

但与质量一样,多样性是一个概括性的属性,并不是具体的筛选准则。只有先决定“什么算不同”,它才变得可以计算。几何核心集(geometric coreset)试图覆盖嵌入空间;DEITA 这类基于聚类的选择方法,让样本分布在不同邻域;行列式点过程(determinantal point process)则根据核函数奖励样本之间的差异。一旦确定了表示方式和相似性度量,这些方法就有了明确的计算依据。但不同的表示和度量,会保留不同类型的差异:主题嵌入可以覆盖不同话题,却可能忽略推理难度;梯度表示则按照样本对训练的影响来组织样本。适用于一个目标的选择,不一定适用于另一个。

把质量与多样性结合起来后,还需要决定两者如何配合。我们可以先按质量过滤,再增加多样性;也可以从每个聚类中挑选得分最高的样本;还可以优化两者的加权组合。这些流程未必选出相同的数据,而“质量加多样性”并没有提供统一的衡量尺度,也没有给出一个由目标决定的选择规则。

质量可以提供一个方向,多样性可以防止重复。但把两者放在一起,仍然没有回答该如何根据目标作出权衡,也没有评价所选训练分布最终会产生怎样的模型。

从给样本打分,到优化训练分布

更直接的表达是一个双层优化问题:通过训练得到的模型在下游目标上的表现,来选择训练分布。

\[\min_{q\in\mathcal Q} \mathcal L_{\mathrm{target}}\!\left(\theta^*(q)\right) \quad\text{s.t.}\quad \theta^*(q) \in \arg\min_\theta \mathbb E_{x\sim q}[\ell(x;\theta)].\]

内层问题把训练分布 $q$ 映射为训练得到的模型 $\theta^*(q)$。外层问题通过这些模型在下游目标上的表现,比较候选训练分布。决策变量是整个分布,而不是一组永久不变的样本分数。

这样,前面缺失的相互作用就明确了。让模型更多地接触某一部分数据是否有价值,取决于其余训练数据包含什么,以及学习算法如何利用这些数据。逐样本质量评分忽略了这种相互作用。多样性项可以部分考虑冗余,但这种考虑仍然受限于所选表示定义的几何结构。双层目标则通过最终训练得到的模型,评价整个数据分配方案。

还要看哪些分布是我们能得到的

双层目标告诉我们如何比较训练分布,却没有规定哪些分布可以得到。筛选只能对候选池中已有的样本重新加权或将其移除。如果池中缺少支撑某项能力的数据,需要的是检索、采集或合成,而不只是一个更好的排序分数。

更一般地说,可行集合 $\mathcal Q$ 由数据操作方式及其预算决定。配比调整在预先定义的组之间重新分配概率,筛选在现有数据池内作出选择,合成则可以扩展分布的支持集,引入原本不存在的数据。目标决定如何评价能够得到的训练分布;操作方式和预算决定哪些分布可以进入候选范围。下一篇会说明,配比、筛选和合成如何在同一个双层表达下对应不同的可行集合,以及如何着手求解相应的优化问题。

那么,什么才是好数据?

有些处理仍然很明确:删除无效文件、完全重复的内容,或已经确认的标签错误。但在这些基础清理之外,“好”并不是一条孤立样本的属性。它描述的是:对于某个目标,这条样本与其余训练数据放在一起,能发挥什么作用。

我不想用另一个口号替换“质量与多样性”。更有用的问题是:

给定目标、训练过程、预算,以及可行的训练分布集合 $\mathcal Q$,哪个 $q\in\mathcal Q$ 能训练出我们更希望得到的模型?

质量评分可以提供有用的信号,多样性可以帮助保持覆盖范围。但它们是在这个决策中使用的代理信号或约束,不能脱离目标,独立定义数据对训练的价值。

因此,好数据并不是一个等待被发现的普适子集。我们需要设计的,是一个服务于目标的训练分布。