垃圾数据喂出来的大模型,可能比精筛数据更强

斯坦福大学的研究团队做了一件反直觉的事:他们把未经任何过滤的原始网络爬虫数据直接喂给大模型,结果发现,在足够大的计算量下,不过滤数据的效果反而优于所有精心设计的过滤方案。

https://arxiv.org/pdf/2605.19407

这个结论和整个行业的直觉相悖。

过去几年,数据质量被视为训练大模型的核心变量之一,DCLM-Baseline 这类数据集会把 Common Crawl 原始数据过滤掉 99%,只保留约 1% 的"高质量"内容。

但这篇来自斯坦福的论文给出了一个让人不安的答案:那被丢掉的 99%,可能正是你需要的。

过滤数据的代价,比你想的更高

Common Crawl(CC)是目前最大的公开网络爬虫数据集,包含 2023 年以前约 240 万亿个 token。

问题在于,主流的数据过滤流程会把这个数字砍得很小。

以 DCLM-Baseline 为例,经过英语过滤、重复内容过滤、停用词过滤、RefinedWeb 清洗、再加上 fastText 质量分类器,最终只保留约 3.8 万亿个 token,大约是原始数据的 2.1%。

3.8 万亿听起来很多,但对于一个万亿参数量级的模型来说,按照 Chinchilla 最优的 token 预算,这个量仍然不够。

而且当前的训练趋势是刻意超过 Chinchilla 最优,用更多数据换来更小的模型,因为小模型推理成本更低,实际部署才划算。

这就产生了一个矛盾:过滤数据是为了提高质量,但过滤本身减少了数据量,而数据量不足又会限制模型性能的上限。

实验设计:把问题问到极端

研究团队没有选择在常规规模上做对比,而是把问题推到极限:如果给模型足够大的参数量和足够长的训练时间,不过滤数据能不能赢过精筛数据?

他们从 CC 中随机采样了约 6.7 亿 token 的子集,然后对这个子集分别应用五种过滤方案:

  • 英语过滤(保留 28.2%)
  • 重复内容过滤(保留 45.3%)
  • 停用词过滤(保留 50.4%)
  • RefinedWeb(保留 13%)
  • DCLM-Baseline(保留 2.1%)

模型规模从 1500 万参数到 10 亿参数,训练步数也大幅变化,通过多轮 epoch 来榨干每个数据集的信息。

在 15M 小模型上,过滤数据全面领先,未过滤的 CC 是最差的。但当模型规模达到 330M 和 1B 时,情况完全反转,未过滤的 CC 在充分训练后超越了所有过滤版本,最终达到最低损失 3.37。

从计算量的角度看,随着算力增加,CC 原始数据从最差变成最优。

这个转变不是渐进的,而是有一个明显的交叉点,过了这个点,过滤数据就再也追不上了。

把随机字符串塞进训练集,大模型照样扛住了

为了进一步测试模型的鲁棒性,研究团队做了一个更极端的实验:向训练集里注入明显的垃圾数据。

两种垃圾数据的构造方式:

随机字符串:从 10,000 个随机生成的英文词汇中均匀采样,拼接成文档。这些词没有任何语义,也不遵循任何语言规律。

打乱词序的文档:从 CC 中取出额外的文档,随机打乱每篇文档内所有词的顺序。这些文档保留了原始词汇分布(unigram 分布),但句子结构完全被破坏。

注入比例从 +20% 到 +800% 不等,最极端的情况下,打乱词序的文档占训练数据的 80%,原始 CC 文档只剩约 10%。

结果:

  • 在 15M 小模型上,注入垃圾数据会明显拉低性能,且注入比例越高,损失越大。
  • 在 330M 和 1B 模型上,即便注入了 400% 的打乱词序文档,最终性能仍然超过了干净的 CC 基线
  • 随机字符串的影响更小,因为模型更容易识别它们来自不同分布,直接忽略。

打乱词序的文档之所以反而有帮助,研究团队的解释是:词序虽然打乱了,但词汇共现关系还在。

比如把"The capital of France is Paris"打乱后,"France"和"Paris"仍然出现在同一篇文档里,模型依然能从中学到两者之间存在某种关联。

240 万亿 token 的 CC 什么时候能成为最优选择

上面的实验用的是 6.7 亿 token 的子集,距离完整的 240 万亿 token CC 还差了好几个数量级。

研究团队进一步扩展了实验,把数据池从 6.7 亿扩展到 100 亿 token,同时变化模型规模,观察 CC 原始数据超越 RefinedWeb 所需的训练步数。

关键发现是:数据池越大,CC 赢过 RefinedWeb 所需的 epoch 数增长是超线性的。

6.7 亿 token 池大约需要 1 个 epoch,20 亿 token 池需要约 3 个 epoch,100 亿 token 池则需要约 10 个 epoch。

基于这个规律,研究团队拟合了两条 scaling law,分别基于 token 与参数比(600:1,参考 DeepSeek V4)和 epoch 约束(4 epoch,参考 Muennighoff 等人的工作)。

两条曲线的 (R^2) 均超过 0.99,给出的预测结果高度一致:

完整的 240 万亿 token CC 数据集成为最优选择,大约需要 (10^{30}) FLOPs 的计算量。

这个数字很大。目前前沿模型的预训练算力估计在 (5 \times 10^{26}) FLOPs 左右(来自 xAI 的 Grok 4 数据)。但根据现有预测,到 2030 年,(10^{29}) FLOPs 量级的训练运行是可以预期的。

从 (10^{29}) 到 (10^{30}),也就是再往前走一步的事。

什么样的数据才真正有害

既然垃圾数据都能被大模型消化,那有没有真正会拖后腿的数据?

研究团队的假设是:语言模型对协变量偏移(covariate shift)有很强的抵抗力,真正有害的是条件分布发生偏移的数据,也就是"标签错误"的数据。最典型的例子:如果训练集里有大量"法国的首都是哥本哈根"这类错误事实,模型就会学错。

为了验证 CC 里有多少这类内容,他们用 GPT-5 mini 对 CC 中与 MMLU 题目相关的文档进行分类,判断每篇文档是支持、反驳、相关还是无关。结果(表 1)显示:支持正确答案的文档数量比反驳正确答案的文档多至少一个数量级。

这说明 CC 里虽然有阴谋论和错误信息,但它们的绝对数量相对于正确内容来说很少,不足以系统性地污染模型的学习。

还有一个有趣的边界情况:打乱词序的文档会改变文档开头 token 的分布。

对于预测第一个 token 的任务,模型无法通过上下文判断这篇文档是否被打乱,因此会受到影响。但研究团队认为,实际使用中极少有只看第一个 token 的场景,这个退化不构成实质问题。

理论上为什么会这样

研究团队用低秩矩阵分解给出了一个简洁的理论解释。

把预训练看成一个多任务学习问题,不同的数据来源对应不同的任务。

如果模型的秩(参数量)足够大,它可以为每个任务分配独立的表示空间,不同任务之间互不干扰。

垃圾数据只是增加了任务数量,只要模型够大,就能把它们隔离开来,不影响其他任务的学习。

如果模型太小,秩不够,不同任务会争抢同一批参数,互相干扰,垃圾数据就真的会拖累性能。

这个理论预测和实验结果完全吻合:小模型怕垃圾数据,大模型不怕。

数据过滤的苦涩教训

Rich Sutton 在 2019 年写过一篇著名的《苦涩教训》,核心论点是:在 AI 历史上,依赖人类先验知识设计的方法,最终都会被更简单、更能随计算量扩展的方法所取代。

这篇论文的标题直接引用了这个概念。

数据过滤正在重演同样的故事:精心设计的过滤规则在小规模下确实有效,但随着计算量的增加,它们的优势逐渐消失,最终被"什么都不过滤"所超越。

对于当下的实践者,结论是清晰的:如果你的计算预算有限,数据过滤仍然值得做;如果你在规划未来几年的大规模训练,现在就应该开始认真考虑如何保留更多原始数据,而不是继续优化过滤流程。

过滤掉的那 99%,可能正是下一代模型需要的东西。

添加评论
点赞收藏
点踩分享查看原文
评论
?
参与讨论