Skip to content

过滤、去重与合成数据

对应课程 Lecture 14:Data (filtering, deduplication, mixing, synthetic data)(Percy)

这一讲动手:把 Common Crawl 的原始泥沙俱下,变成能训练的数据。流程大致是:

text
原始 WARC → 解析提取正文 → 质量过滤 → 去重 → 敏感信息脱敏 → 混合配比 → 训练数据

正文提取

网页是 HTML:导航栏、广告、Cookie 横幅混杂着正文。第一步提取“真正的文本”:

  • resiliparse / trafilatura 等解析器:从 HTML 挑出正文节点;
  • 提取失败的页面(乱码、纯脚本)直接丢弃;
  • 经验:这一步的召回/精度权衡影响后面所有环节。

质量过滤:三层方法

第一层:启发式规则(Gopher 系)

一组手工规则,快速且可解释(Gopher 论文的经典规则):

  • 文档长度:过短(< 50 词)或过长的丢弃;
  • 符号占比:非字母字符超过 ~20% 丢弃(乱码特征);
  • 行统计:短行(❤️ 词)占比超过 30% 丢弃(菜单/列表特征);
  • 词表特征:含有太多“坏词”(淫秽、广告词)丢弃;
  • 重复行检测​:同一行大量重复是模板页(广告/导航)特征,段落级去重;
  • 语言识别:保留目标语言(langdetect/fasttext 分类)。

第二层:困惑度过滤

用一个参考语言模型给文档打分,困惑度过高(说明“长得不像人话”)的丢弃。CCNet 的经典做法:用目标语言 Wikipedia 训一个小 LM 作裁判。

第三层:模型化过滤(model-based filtering)

模型判断“什么像高质量数据”​:

  • 分类器过滤​:标注一批“高质量”样本(如 Wikipedia 段落),训一个 fasttext/小型分类器,只保留与高质量分布相似的文档。FineWeb-Edu 用 1.3B 参数的 LLM 生成“教育价值”标注,训分类器从 15T token 里筛出 1.3T“教育性”数据——用更少数据得到更好的模型&#8203;
  • LLM 直接打分/改写​:更贵但更强,用于退火阶段的小规模精选。

过滤的偏见放大

过滤器会把模型/标注者的偏见写进数据:比如“教育性”的定义、参考模型的领域偏好,都会系统性影响语料构成。审计过滤前后各类来源、语言、人群内容比例的变化,是数据工作的尽职调查。

去重:被低估的最大杠杆

网页内容被大量转载、聚合、模板化。​去重(deduplication) 是性价比最高的数据处理手段。

精确去重

对文档做哈希(如 SHA-1),完全相同的文档只留一份。便宜,但抓不住“改动几个词”的近重复。

模糊去重:MinHash + LSH

MinHash 用集合的 min-hash 签名近似估计文档的 Jaccard 相似度:

  1. 把文档切成 shingle(如 5-gram 集合);
  2. k 个哈希函数,每个集合的签名 = 每个哈希函数下所有 shingle 哈希的最小值;
  3. 两个文档签名一致的比例 ≈ 它们的 Jaccard 相似度。

LSH(Locality-Sensitive Hashing) 把签名分段,让“相似文档大概率落进同一桶”,避免 O(n2) 两两比较——十亿级文档去重的标准组合拳。

去重为什么有效?

  • 减少记忆与过拟合​:重复的文档会被模型逐字背诵(隐私风险 + 版权风险 + 测试集污染风险);
  • 提高训练效率​:等量 token 里信息更多;
  • 实证影响显著:GPT-3、Llama 系列的管线都把去重放在核心位置。注意:​重复对缩放定律也有影响——重复数据多时,数据量 D 的幂律收益会提前饱和。

数据混合与合成数据

混合配比(mixing)

把过滤后的各来源按配比重组。两个实操要点:

  • 用 token 数做预算​,不同来源采样率不同(高质量过采样);
  • 配比实验在小模型上做缩放外推,缩放定律的方法论完全适用。

合成数据:当数据不够时

合成数据(synthetic data) 是高质量数据枯竭后的主要出路:

  • 重写/改写​:让 LLM 把网页改写成教材风格(Phi 系列的做法,“textbook quality”);
  • 生成练习题​:从文档生成问答对、数学题,用于后训练(SFT 的指令数据大量是合成的);
  • 蒸馏​:强模型生成推理过程,教小模型;
  • 自我改进回路​:模型生成的数据训模型,配合验证(RLVR,见RLVR:可验证奖励的强化学习)形成飞轮。

风险:合成数据的分布窄化与“模型自我陶醉”(model collapse)——合成必须配合质量过滤与真实数据混合​,不能闭环比产量。

工程实践要点

  • WARC 解析要处理异常(编码、截断),失败要留痕;
  • 每个过滤阶段记录留存率与样本对照表​,便于调试与审计;
  • MinHash 的参数(shingle 长度、签名长度、LSH 桶数)在召回与算力间权衡;
  • 最终配比写进配置文件,可复现——数据管线是代码,要像代码一样管理​。

小结

  • 数据管线 = 提取 → 启发式 → 困惑度 → 模型化过滤 → 去重 → 配比;每一层都有明确的责任。
  • 去重(MinHash+LSH)是性价比最高的操作,直接影响记忆、污染与效率。
  • 模型化过滤(FineWeb-Edu)代表当前最佳实践:用模型定义“高质量”,再用审计防止偏见。
  • 合成数据是突破数据天花板的路径,但必须与验证和真实数据混合使用。
最近更新