大模型数据不够用时,很多团队会让模型自己造数据,这就是合成数据。但「造出来」和「能用」之间隔着一条很宽的过滤带——生成模型跑一晚上能产出上百万条,真正进训练集的往往只有一小半。本文按机制层讲法,把这个生成与过滤的循环拆成环环相扣的四步。
第一步:按模板批量生成
循环的起点是批量生成。进来的是一个任务描述,比如「写一道有步骤的数学题并给出答案」,生成端按这个模板反复产出候选。这一步追求的是数量和覆盖面,常用的生成源包括 DeepSeek、通义千问这类通用助手,也可以是专门在领域语料上续训过的模型。出去的是一大堆格式各异、质量参差的候选文本。
第二步:规则过滤先砍废品
紧接着是最便宜的一刀:规则过滤。进来的是全量候选,过一遍格式校验——长度是否在区间内、有没有该有的字段、是不是重复的模板复读、答案和步骤是否对得上。出去的是格式合格的候选。这一层不判断内容好坏,只判断「像不像一条正常样本」,成本极低但能砍掉两三成明显的废品。
第三步:质量打分排个队
过来的是过了规则关的候选,接下来用几种方式评估质量:让另一个模型当裁判给分、用小模型做困惑度排序、或拿领域内的判别模型判相关性。进来的候选按分数排好队,出去的是一条带阈值的分割线,线之上的进候选池,线之下的回炉。阈值定在哪,直接决定合成数据占训练集的比例。
第四步:人工抽检修循环
最后一步是人工抽检与迭代。进来的是高分候选的一个随机小样本,人工审出系统性问题:生成端是不是偏爱某类开头、某类知识错误会不会反复出现。出去的不是结论,而是对第一步模板和第三步阈值的修正指令——这就是「循环」的含义,生成端和过滤端互相喂反馈。循环转起来的直观效果是:第一轮合格率可能只有四成,改过模板和阈值后第二轮能到六成以上。抽检比例不用高,百分之五就足以暴露系统性问题,因为模板缺陷是成片出现的,不是零星个案。人工看的时候重点盯两类信号:答案事实错误和表述模板化,前者说明知识源不对,后者说明提示写得太死。阈值也不要一次定死,实践里常按任务分档,简单任务放宽、高风险任务收紧。
四步走完,每条候选的进出和损耗是这样的。
| 步骤 | 进来什么 | 这一步做什么 | 出去什么 | 这一刀的分量 |
|---|---|---|---|---|
| 按模板批量生成 | 一个任务描述 | 生成端按模板反复产出候选 | 格式各异、质量参差的候选文本 | 追求数量和覆盖面 |
| 规则过滤 | 全量候选 | 校验长度、字段、模板复读、答案与步骤是否对得上 | 格式合格的候选 | 成本极低,砍掉两三成明显的废品 |
| 质量打分 | 过了规则关的候选 | 裁判模型给分、小模型做困惑度排序、判别模型判相关性 | 一条带阈值的分割线 | 线之上进候选池,线之下回炉 |
| 人工抽检 | 高分候选的随机小样本 | 审系统性问题:偏爱某类开头、某类知识错误反复出现 | 对模板和阈值的修正指令 | 抽检百分之五就足以暴露问题 |
哪些手法能让候选更稳,可以对照数据增强的具体手法里的改写与回译;新造数据怎么和旧语料掺着用而不把模型带偏,继续预训练怎么避免忘本给了配方视角。需要警惕的是,过滤再严也挡不住生成源自带的偏见被放大,人类偏好为什么会有分歧讲的就是裁判本身也会不一致;如果合成流程里让模型给奖励,还得防奖励模型被钻空子那类作弊。
模型出题模型做的自循环玩法,在自我训练是怎么回事里有更完整的展开,喂进训练前数据的洗牌规矩则在数据顺序那篇里另讲。
- 生成:按模板量产候选,要数量也要覆盖面
- 规则过滤:格式、字段、去重复,成本最低先砍废品
- 质量打分:裁判模型或困惑度排序,按阈值切一刀
- 人工抽检:找系统性问题,回头改模板和阈值
- 循环:四步反复转,合格率逐轮抬升
聊聊合成数据的常见疑问
- 合成数据占训练集多大比例合适?:看任务,通用扩量常压在三成以内,领域补盲可以更高,但一定要掺真实数据,纯合成容易让模型只认得自家模板味。
- 裁判模型会不会有偏见?:会,所以常见做法是多个裁判投票或加人工抽检,单裁判的打分只能当粗筛。
- 怎么判断过滤过头了?:看留下来的样本多样性,如果开头句式高度一致、话题分布坍缩成几类,就是阈值定得太苛刻。


