构建更优秀的大型语言模型 (LLMs) 的竞赛,通常被视为一场对更多数据的争夺战。这主要归因于“缩放定律 (scaling laws) ”,该定律表明模型的性能与训练语料库的规模及模型参数直接相关。然而,该领域的最新进展为这一规则增加了一个至关重要的补充: 这不仅仅关乎数据的数量,同样重要——甚至更重要的是——数据的质量 。
想象一下,你试图通过阅读街上捡到的每张纸片来学习一门新语言——从经典小说到丢弃的糖纸,再到诈骗传单。你确实能学会这门语言,但你也会学到很多噪音。这就是原始网络数据的现状。为了训练像 Llama 3 或 GPT-4 这样的最先进模型,工程师必须过滤数万亿个 Token 的网络数据,将有教育意义的内容与“垃圾”分离开来。
今天,我们将深入探讨 Upstage AI 研究人员撰写的一篇引人入胜的研究论文,题为 “Rethinking KenLM” 。 他们针对这一过滤问题提出了一个巧妙且高效的解决方案。与其仅仅寻找好数据,他们专门训练了一个模型来识别坏数据,然后让两者相互博弈。
瓶颈: 质量与效率
在理解解决方案之前,我们必须先理解问题所在。过滤互联网规模的数据集是一场后勤噩梦。
现代过滤管道通常使用繁重且依赖 GPU 的方法。例如,你可能会使用基于 BERT 的分类器或微调一个小型的 LLM 来对文档进行评分。虽然这些方法很有效,但计算成本高昂。当处理 PB 级的文本时,仅仅为了数据清洗而启动 GPU 集群往往在成本上是令人望而却步的。
KenLM 登场
为了解决效率问题,行业标准一直是 KenLM 。 KenLM 是一个实现 n-gram 语言模型的库。
- 什么是 n-gram 模型? 它是一种统计模型,根据前面的 \(n-1\) 个单词预测序列中的下一个单词。如果 \(n=3\) (trigram,三元组) ,且前面的单词是 “the cat”,模型会查看接下来出现 “sat”、“ate” 或 “ran” 的概率。
- 为什么要使用它? 它非常轻量级,并且完全在 CPU 上运行。它所需的计算能力仅为神经网络的一小部分。
主流方法 (被 CCNet 和 RefinedWeb 等大型数据集使用) 是在高质量数据 (通常是 Wikipedia )上训练一个 KenLM。在过滤新的网络数据时,利用该模型计算数据的 困惑度 (Perplexity, PPL) 。
- 低困惑度: 文本看起来像 Wikipedia (可能是高质量的) 。
- 高困惑度: 文本看起来奇怪或陌生 (可能是低质量的) 。
标准方法的缺陷
研究人员指出了这种“仅限 Wikipedia”方法的关键弱点。标准的 KenLM 过滤是单向的 。 它显式地学习了“好”文本是什么样子的,但并没有显式地学习“坏”文本是什么样子的。
结果,它会出现假阳性 (false positives) 。那些语法正确但在语义上毫无价值的文本——比如写得很好的垃圾邮件或礼貌的广告——可能仅仅因为使用了标准的句子结构而获得较低的困惑度分数。模型会认为: “嗯,语法没问题,所以这一定是好内容,”却未能意识到内容本身并不适合用于训练 LLM。
核心方法: 好、坏与集成
作者提出了一种“好与坏 (Good and Bad) ”的集成方法。与其依赖单一视角,他们使用两个截然不同的模型来评估文本。
1. Good KenLM (好模型)
首先,他们升级了标准的“好”模型。虽然 Wikipedia 很棒,但它并不能涵盖所有内容。科学论文和教科书可以说是推理和逻辑更好的来源。
作者在以下组合数据上训练了他们的 Good KenLM :
- S2ORC: 一个包含科学和学术论文的庞大语料库。
- Textbooks: 具体来说,是 “Textbooks-are-all-you-need-lite” 数据集。
该模型的目标是为高质量、推理严密的文本分配较低的困惑度分数。
2. Bad KenLM (坏模型)
这是本文的新颖贡献。研究人员提出疑问: 为什么不专门在我们想要剔除的数据上训练一个模型呢?
他们创建了一个 Bad KenLM , 训练数据为明显的“噪音”数据集:
- Spam (垃圾邮件) : 邮件和自动生成的消息。
- SNS (社交网络服务) : 来自 Twitter (现为 X) 等平台的非正式文本,包含标签、俚语和碎片化的句子。
- Hate Speech/Toxic Comments (仇恨言论/有毒评论) : (不过,正如我们在实验中看到的,这部分结果喜忧参半) 。
该模型的目标是为垃圾内容分配低困惑度分数。如果一份文档从 Bad KenLM 那里得到了低分,意味着“我认得这个!这看起来就像我受训时见过的垃圾邮件。”
3. 集成策略
现在我们为每个文档得到两个分数:
- \(P_{good}\): 这有多像教科书? (越低越好)
- \(P_{bad}\): 这有多像垃圾邮件? (越低越差)
你不能简单地将这两个数字相加,因为这两个模型是在不同的数据分布上训练的。对于一个模型来说的“低”分,在数值上可能与另一个模型的“低”分不同。
为了解决这个问题,作者使用了 Z-score 标准化 。 他们计算两个模型的均值 (\(\mu\)) 和标准差 (\(\sigma\)) 来归一化分数。
最终的 集成得分 (Ensembled Score) 使用以下公式计算:

让我们拆解一下这个数学公式 (论文中的公式 1) :
- 第 1 项 (Good): 我们取归一化的 Good PPL。如果文本质量高,这个 Z-score 会很低 (负数) 。
- 第 2 项 (Bad): 我们取归一化的 Bad PPL。如果文本质量高,它对 Bad 模型来说应该看起来很陌生,从而产生高 (正数) 的 Z-score。
- 减法运算: 公式减去 Bad 分数。
- 如果文本是 高质量的 : Good 分数低 (例如 -2) ,Bad 分数高 (例如 +2) 。
- 结果: \((-2) - (+2) = -4\)。 (非常低的分数)
- 如果文本是 垃圾内容 : Good 分数可能一般 (例如 0) ,因为垃圾内容可能语法通顺,但 Bad 分数低 (例如 -2) 。
- 结果: \((0) - (-2) = +2\)。 (高分数)
参数 \(\alpha\) (alpha) 允许研究人员权衡 Good 模型与 Bad 模型的重要性。
通过结合这些视角,该指标将高质量数据推向评分体系的底部,将噪音数据推向顶部,创造了比任何单一模型都更清晰的分离效果。
实验与结果
为了证明这一方法的有效性,作者使用了一个巨大的网络数据转储 (来自 Fineweb-edu 的 CC-MAIN-2024-10) ,包含 2.11 亿个样本。他们使用“教育评分 (educational scores) ” (由高质量但计算昂贵的分类器生成) 作为地面真值 (ground truth) 。如果一段文本具有较高的教育评分,它就被视为“真阳性”。
RQ1: 它能击败基线模型吗?
结果令人印象深刻。他们将自己的方法与标准的 Wikipedia KenLM 甚至 FastText (一种流行的基于分类器的过滤方法) 进行了比较。

查看 表 1 :
- Wiki KenLM (行业标准) : 实现了 0.5530 的 Recall@30。这意味着在过滤结果的前 30% 中,它错过了近一半的高质量数据。
- Good KenLM: 仅仅将训练数据从 Wikipedia 更改为教科书/科学论文,性能就提高到了 0.7059 。 这证实了 Wikipedia 并不是好数据的“唯一标准”。
- Ens(Good, Bad): 提出的集成方法达到了 0.8190 的 Recall@30。
这里最引人注目的结果是 Ensemble (Good, Bad) 击败了 FastText 。 FastText 是一种监督分类器,通常比 n-gram 模型表现更好,但更重一些。在 CPU 上用简单的 n-gram 模型击败 FastText 是效率上的重大胜利。
RQ2: 什么构成了“坏”数据?
你可能会认为在最糟糕的文本 (仇恨言论、有毒评论) 上训练“坏”模型会产生最好的结果。然而,实验显示了不同的情况。

表 2 揭示了一个有趣的见解:
- 有毒数据 (Toxic data) 表现不佳。 与仅使用垃圾邮件或 Twitter 数据相比,添加有毒数据实际上损害了性能。
- 为什么? 有毒数据集通常包含极端的脏话或非常特定类型的仇恨言论。这种分布是一个离群值 (outlier) 。它与标准网络文本差异巨大,导致模型学习到了一个非常狭窄的“坏”定义。
- Twitter 和垃圾邮件是王道。 社交媒体和垃圾邮件代表了互联网的普遍噪音——非正式语法、广告、碎片语和无关紧要的闲聊。这正是污染网络语料库的那种“平均”噪音。
RQ3: 平衡的艺术 (\(\alpha\))
我们应该多大程度上信任 Good 模型与 Bad 模型?这由公式中的 \(\alpha\) 参数决定。

图 1 展示了性能曲线。
- 如果 \(\alpha\) 太低 (太过信任 Bad 模型) ,性能会下降。Bad 模型可能过于激进。
- 如果 \(\alpha\) 太高 (太过信任 Good 模型) ,你就会失去集成的优势。
- 最佳平衡点: 性能在 \(\alpha = 0.7\) 左右达到峰值。这表明“Good”信号是主要驱动力,但“Bad”信号提供了关键的 30% 修正,用于过滤掉棘手的情况。
RQ4: 效率如何?
使用 KenLM 而非神经网络的主要理由是速度和成本。运行两个模型会破坏这一优势吗?

表 3 细分了成本。
- 时间: 集成方法大约是单个模型耗时的 1.7 倍 (3,928秒 vs 2,234秒) 。
- 成本: 处理这个数据转储使用集成方法的成本为 \(2.50** , 而单个模型为 **\)1.42 。
虽然成本实际上翻了一番,但仍然微不足道 。 我们谈论的是以一杯咖啡的价格处理数亿份文档。与在如此海量的数据上运行基于 GPU 的分类器所需的数千美元相比,集成方法依然极具成本效益。
RQ5: 它实际上捕捉到了什么?
统计数据固然好,但眼见为实。Good 模型遗漏了哪些被集成模型捕捉到的文本?

图 2 提供了定性示例。
- “礼貌”的垃圾邮件: 看看关于“在线轮盘赌”的第一个例子。句子结构很好: “Online roulette for real money Hungary withdrawals can take up to 3 days…”
- 仅在“好”数据上训练的模型可能会看到语法并认为: “这看起来是个合法的句子。”
- 在垃圾邮件上训练的 Bad KenLM 识别出了词汇 (“roulette”, “withdrawals”, “real money”) 和劝诱的语气,立即将其标记出来。
- 沟通风格: 第二个例子代表了论坛上常见的会话填充词。它没有教育意义,但在语法上也没有“错”到足以让标准模型拒绝。然而,受过 Twitter 训练的 Bad KenLM 确切地知道这是什么样子。
结论与启示
论文 “Rethinking KenLM” 提供了一个令人信服的提醒: 在机器学习中,定义负空间 (negative space) 往往与定义正空间同样重要。
通过利用社交媒体和垃圾邮件文件夹中的噪音显式地对“坏”数据进行建模,研究人员在 CPU 硬件上实现了最先进的过滤性能。这使得高质量数据的策展变得更加普及。你不需要庞大的 H100 GPU 集群来清洗你的数据集;你只需要一个由轻量级模型组成的智能集成。
给学生的核心启示:
- 不要忽视 CPU: 在大型 GPU 时代,像 KenLM (n-grams) 这样的高效 CPU 算法在数据基础设施中仍发挥着至关重要的作用。
- 显式地对负面内容建模: 如果你想让模型拒绝某些东西,请训练它去识别那个特定的东西。仅仅依靠“它看起来不像好东西”往往是不够的。
- 数据选择很重要: 训练数据的选择 (Twitter vs. Toxic) 从根本上改变了模型的行为。理解数据的分布比仅仅囤积更多数据更重要。
随着我们继续扩展 LLM,像这样在最大化质量的同时最小化计算量的技术,对于下一代 AI 开发将是必不可少的。
](https://deep-paper.org/en/paper/2409.09613/images/cover.png)