过滤
04 过滤(综述 §2.3.3)
定位与两层结构
过滤 = 去掉低质量/敏感内容,同时保住多样性——只有「删得准 + 留得散」模型性能才不降反升。综述分两层:
- 样本级(Sample-level):整条删——按指标或模型打分,不达标就移除;
- 内容级(Content-level):只删样本内的噪声/敏感片段,避免整条删太多导致关键样本流失。
综述点出的核心难题:LLM 数据过滤的本质是「把非结构化文本变成可测量的指标」,难点在三个——评估方法是否有效、低质量的判据是什么、方法在 massive 数据集上的计算复杂度。
0 一图看懂:两层结构与方法地图
过滤 = 去坏 + 保多样性
├─ 样本级(整条删)
│ ├─ 统计评估:PPL系 / 影响力系(DEALRec·SHED) / 聚类系(DBP·SmallToLarge)
│ ├─ 模型打分:QuRating(两两比较) / DEITA(进化+打分)
│ └─ 混合方法:线性组合 / MoDS三步 / FineWeb·DCLM 工程组合
└─ 内容级(只删片段)
├─ 噪声去除:特殊字符、装饰文本
├─ PII 匿名化:正则 → 实体标签 → [MASK]
└─ 视频过滤:CogVideoX / HunyuanVideo / Wan成本递进(贵的放最后,呼应管道):
统计规则(便宜) → 困惑度打分 → 分类器(fastText) → LLM 打分(最贵)
↑ DCLM 只对去重后剩的池子做这步1 样本级过滤:三大类方法
1.1 统计评估(直接算统计量,或从代理模型间接取特征)
困惑度(PPL)系
一句话:用「模型生成这段文本有多难」当质量信号——PPL 太高大概率是噪声,太低可能是重复模板。
细节:
- 定义:PPL(y|x) = exp(−(1/N)·Σⱼ log p(yⱼ|x, y₁…yⱼ₋₁))——模型生成回答的难度,越高越难生成。预训练和微调选高质量子集的常用起点。
- 变体一(域级 PPL 相关性):用现有模型对多个域算 PPL,选「下游基准错误率 ↔ 域 PPL」秩相关系数 γⱼ 高的域(γ 用 rank 差反映同一样本上的模型性能差),从 top 域选样本;再用 fastText 分类器学会区分这些文档,泛化到页级选择——相关性计算是域级的,落地筛选是页级的。
- 变体二(小代理模型):125M 的 MosaicML 模型在随机子集上先训一遍,给其余样本算 PPL 分数筛子集,再拿筛出的子集训大模型——开销大降,性能与全量训练持平。
- 变体三(LP / IFD):Learning Percentage 和 Instruction-Following Difficulty,识别有挑战性的样本。
DEALRec(影响力评估)
一句话:算「删掉/上采样这条样本,参数/损失变多少」——影响函数近似 + 学习难度双分数。
细节(双分数):
- Influence Score:影响函数近似——代理模型在全量上训好后,估「移除/上采样样本 s 引起的参数变化」:θ̂₋ₛ − θ̂ ≈ (1/n)·H⁻¹∇θL(s,θ̂)(H 是 Hessian 矩阵),再进化成经验风险变化形式 I_remove = (1/n²)·Σᵢ∇θL(sᵢ)ᵀH⁻¹∇θL(s);
- Effort Score:代理模型学这条样本的难度,δₛ = ‖∇ϕL(s)‖₂(梯度范数,越大越难学);
- 总分 Iₛ = Influence + λ·Effort——既要「影响大」又要「有学习价值」。
SHED(Shapley 贡献)
一句话:用 Shapley 值估每条样本对模型性能的贡献,聚类选代表 + softmax 加权采样省算力。
细节:省算力三步——先聚类、每簇选离质心最近的代表;对代表算 Shapley(迭代删 n 个样本、算每次删除相对上一次的性能贡献 c = v(D∖{1..an}) − v(D∖{1..(a+1)n}),重复 k 轮取平均);最后按 softmax 加权采样 Pr(i) ∝ e^(f·Sᵢ),f 调质量-多样性权衡。
DBP(密度剪枝,聚类系)
一句话:聚类后按「簇的复杂度」重采样——越「内聚又分得开」的簇权重越高。
细节:DINOV2-L/14 编码 → K-means → 每簇算复杂度 C = d_intra × d_inter(簇内平均余弦距 × 簇间平均余弦距)→ softmax 按簇重采样。
SmallToLarge(loss 轨迹聚类,本节最值得记的想法)
一句话:不看静态 embedding,看训练动力学——小模型训练时每条样本的 loss 曲线就是它的「学习指纹」,同轨迹的样本学法相似。
细节:小代理模型在全量上训练时记录每个样本的损失曲线 Lᵢ = −log p(yᵢ|xᵢ)(随训练步变化),同轨迹的样本算一类,类内随机采样保多样性。
1.2 模型打分(LLM-as-Filter)
QuRating
一句话:让 GPT-3.5 对样本两两比较打隐分,Bradley-Terry 把比较置信度翻译成四维度质量分,再训个便宜打分器规模化了用。
细节:沿四个质量维度(写作风格、事实/冷知识量、教育价值、理解所需专业度)两两比较——记录二选一置信度 p_B≻A,用 Bradley-Terry 模型 p_B≻A = σ(s_B − s_A) 把置信度翻译成标量质量分 → 训 QuRater 打分器预测新样本各维度分数 → 按 p(dᵢ) ∝ exp(sᵢ/τ) 重采样,τ 调质量-多样性。
DEITA
一句话:路线反过来——先让 ChatGPT 「进化」样本(沿指令复杂度、回答质量改写),再用进化样本+分数训打分器。
细节:进化沿指令复杂度、回答质量两个方向改写;新样本按多维度分数乘积重采样。
1.3 混合方法(Mixed)
线性组合损失
一句话:多个指标加权求和当总分,权重用超参搜索调。
细节:logL_loss ∝ L₀ + β₀ + β₁I₁ + β₂I₂ + … + βₙIₙ + ϵ(各指标 Iᵢ 加权,β 用最小二乘估)。实际做法:在微调过的 LLaMA 2-7B 上评估微调样本,用超参优化器 Blend Search 找最优保留集。
MoDS(三步走)
一句话:质量过滤 → 多样性选种 → 用「模型答得差的样本」找薄弱点迭代——兼顾质量+多样性+必要性。
细节:① reward model 给每条 (instruction, input, output) 三元组打分,滤低质量;② 在 BERT embedding 空间用 K-Center greedy 选彼此最远的高质量样本当多样性种子集;③ 用种子集微调一个 LLM,让它给高质量数据集生成回答——模型答得差的样本(reward 分低)就是模型薄弱点,把这些样本连同原始回答再用 K-Center 选一遍,加进种子集迭代。
- FineWeb 的 C4 filters、DCLM 的 fastText 等工程组合都归此类。
2 内容级过滤:删片段不删样本
噪声去除:删/替换特殊字符(不可见字符、无效字符、HTML 转义还原、标点滥用检测);删装饰性文本(页面装饰元素)等。
PII 匿名化(层级值得注意):
常规:正则改写邮箱等
↓ 进阶:哈希化标签、实体标签([NAME] / [LOCATION])
↓ 最保守:统一替换成 [MASK]
↑ 综述明确理由:实体标签仍可能被成员推断攻击跨样本关联还原,[MASK] 才最大化隐私视频过滤(多模态大模型带火的新需求,三家做法对比):
| 模型 | 管道 | 关键数字 |
|---|---|---|
| CogVideoX | 定义负标签(人工编辑痕迹、低运动连贯性、视觉缺陷、过多文字)→ 人工标注子集训 6 个 Video-LLaMA 过滤器 + 光流 + 美学分 | 产出约 3500 万条高质量 6 秒片段,关注运动连贯性 |
| HunyuanVideo | 切片 → 编码 → 去重 → 重采样;过滤器含运动(OpenCV 光流)、OCR(去文字)、清晰度(模糊检测)、美学(Dover 打分)、来源(YOLOX 式水印/边框去除) | 5 个阈值递进的训练集,多步渐进 |
| Wan | 前处理:OCR、美学(LAION-5B 系)、NSFW 打分、水印检测、分辨率阈值;聚类保多样 + 人工打分 + 专家模型选高质量自然分布数据,视频分 6 档优先平滑运动;后处理:专家模型选 top 20% + 人工补缺,12 个主题上保证平衡 | 前处理砍掉约 50% 低质数据,前+后两段处理 |
3 三个记住的数字/原则
- DCLM-Baseline 用 fastText 分类器(OH-2.5 + ELI5 指令格式数据训练)只保留 top 10% 文档。
- 「贵的放最后」:模型打分是管道里最贵的一步,必须排在启发式过滤和去重之后(见 08 端到端管道——DCLM 就是这样编排的)。
- 过滤 ≠ 越严越好:RefinedWeb 特意选规则过滤而非 ML 过滤,理由是偏差更小、更透明(见 08 端到端管道 三原则)。
