合成数据:生成候选容易,增加有效信息很难
从教师示范、程序真值、自训练和增强,到验证器选择偏差、覆盖配比、反馈回路与模型坍缩。
- 从真实失败定义可量化缺口
- 选择带合适真值结构的生成机制
- 用独立规则/执行/人工验证
- 语义去重并按难度/群体配额
- 限制混合比例并保留真实锚点
- 在真实隔离集消融并沿谱系迭代
1合成的是样本,不是自动产生新知识直觉
合成数据,指由模型、程序或模拟器产生的训练样本,而不是直接从目标世界观察、再由人工记录下来的样本。这里的“产生者”可以是语言模型、代码程序,也可以是物理或业务模拟器;被产生的内容可以是输入本身、标签、推理轨迹、偏好对、代码运行结果,甚至整段模拟交互轨迹。理解合成数据的第一步,是先分清两件事:样本的数量,与样本携带的有效信息量,是两种完全不同的属性。
一个语言模型写出一百万条问答,有效信息可能只相当于几千条。原因在于生成机制本身:生成器是从它学过的分布中采样,它倾向于复述训练中常见的模式,因此同一批采样之间高度相关。第一条样本与第一百万条样本,可能只是同一个模板的细微变体;数量再多,也没有增加独立性、新颖性或正确性。真实世界中的失败案例往往恰恰是罕见、低概率的事件,而这类事件正是模型采样时最不容易自发产生的内容。指望“多生成一些”就自动补上这些缺口,是行不通的。
合成数据的输入,是一组待补的真实失败切片与明确的生成规则;输出才是那些生成的样本。真实失败切片告诉生成器“哪里缺”,生成规则告诉它“怎么变”。只有当生成出的样本覆盖了真实缺口,并且通过了独立于生成器的验证,样本才可能增加有效信息。换句话说,有效信息并不是生成器创造的,而是被生成器搬运的:它必须来自生成机制背后掌握真实结构的源头——规则库、程序语义、模拟器物理——然后由生成器把这种结构扩散成覆盖缺口的样本。
一个具体的例子是退款助手。可以合成的内容包括:政策边界的组合(把权威政策中的条件项按组合规则枚举出来)、口语改写(把正式表述改写成各种用户说法)、以及工具错误轨迹(模拟查询超时、金额字段缺失等工具异常)。但是真实的政策事实本身,比如某类订单的退款时效到底是多久,必须来自权威规则文档,不能让教师模型凭记忆把它“创造”出来。一旦事实源头错了,后续所有组合与改写都只是在放大这个错误。
这条边界也决定了如何评估。一个模型在合成测试集上表现更准,只能说明它适应了这个合成集——它可能只是记住了生成器偏好的措辞和分布。真正的结论必须来自真实的隔离测试:那些生成器从未接触过、由现实世界直接收集的案例。合成集上的分数是内部一致性的信号,不是外部有效性的证据。
因此正确的起点是:先从真实失败切片出发,明确缺什么,再选择相应的生成机制;而不是先生成海量数据,再回头寻找用途。数据的用途来自缺口,而不是来自数量。
2四种来源拥有不同真值结构分类
合成数据并不是一个单一的类别。教师模型、程序、伪标签和数据增强这四种来源,生成的内容不同,真值的来源不同,失败的方式也不同,因此不能共用一套信任假设。判断一批合成数据是否可靠,必须先从它属于哪种来源开始。这一节的输入是缺口类型、可用生成器和可获得的真值来源,输出是一条带来源类型和验证要求的数据管线。
教师蒸馏,指用能力较强的模型生成示范、解释或偏好对来训练另一个模型。它的真值来自教师的能力以及外部的核验。主要失败方式是传递偏差与风格:教师自身的错误、措辞习惯和偏见会被批量复制进生成样本,学生学到的是教师的输出分布,而不是任务本身的结构。因此教师蒸馏的前提是教师在该任务上确实可靠,或者存在独立的外部核验能过滤它的错误。
程序与模拟器生成的是题目、标签乃至整条轨迹。它的真值来自规则、执行结果或求解器:一个数学题的标签可以由求解器判定,一条工具调用轨迹可以由程序执行确认。主要失败方式在于模拟与现实之间的差距:程序世界里的条件、噪声和失败模式未必是真实世界里的那一种,模拟器再精确也只是对现实的一个近似模型。程序骨架最适合规则明确的任务,因为只有规则明确时,执行结果才能充当权威标签。
自训练,指模型对未标注输入自己打出伪标签,再用这些伪标签继续训练自己。它的真值来自模型自身的置信度或多次输出的一致性。主要失败方式是确认自身的错误:模型最容易给高置信度的,往往正是它已经会的部分;它不会的部分,伪标签也常常是错的,于是自训练在强化已有能力的同时,也把已有错误固化得更深。自训练依赖的是模型已经可靠的那些区域,而不是用它来开辟新的知识边界。
数据增强,指对已有样本做改写、扰动或变换来扩大数据量。它的真值假设是标签应当在变换下保持不变:把“请帮我退掉订单”改成“我想把这个单退了”,意图标签不应改变。主要失败方式是变换偷偷改了标签:换一种措辞可能把请求变成抱怨,把肯定变成否定,或者把可计算的题目改成了不可计算。增强的前提是变换本身保真,而这需要对任务语义有细致理解,不能默认所有变换都安全。
把这四种来源放在一起看,各有所长。程序构造可验证的骨架,负责事实和逻辑的正确性;教师增加语言多样性,负责把骨架覆盖到真实的表达方式上;自训练只能在模型已经可靠的区域扩大规模;增强则要求变换不改变标签。一个最强的组合通常是:程序构造可验证骨架,教师在此之上增加语言多样性,最后用规则和人工抽样进行复核,把不同来源各自的验证环节串进同一条管线。
正因为来源如此不同,数据谱系(provenance)才成为硬要求。谱系记录每个样本由哪个输入、哪个生成器、哪个版本、经过哪个验证步骤产生。不同来源的样本必须保留各自的谱系,而不能混成一个笼统的“synthetic=true”标签。一旦出了问题——比如某批样本被证明标签错误——只有谱系完整,才能把受影响的样本精确撤回,并区分不同来源的信任强度。没有谱系的合成数据,出了错就再也无法定位责任,也无法判断哪些结果还能相信。
| 来源 | 生成什么 | 真值来自 | 主要失败 |
|---|---|---|---|
| 教师蒸馏 | 示范、解释、偏好 | 教师能力/外部核验 | 传递偏差与风格 |
| 程序/模拟器 | 题目、标签、轨迹 | 规则、执行、求解器 | 模拟与现实差距 |
| 自训练 | 未标注输入伪标签 | 模型置信/一致性 | 确认自身错误 |
| 数据增强 | 改写、扰动、变换 | 标签应保持不变 | 变换偷偷改标签 |
3生成器、验证器和配比共同定义训练分布机制
一条合成数据管线的产出分布,不是由生成器单独决定的,而是生成器、验证器、配比权重三者共同作用的结果。可以用一个比例关系把它写清楚。设 x 是合成输入,y 是标签、回答或轨迹,那么最终保留样本 (x, y) 的相对密度满足:
q保留(x,y) ∝ q生成(x,y) × a(x,y) × w(x,y)
其中 q生成(x,y) 表示生成器产生该候选的频繁程度,a(x,y) 是验证器接受该候选的概率,w(x,y) 是为主题、难度、语言或风险设置的保留权重。符号 ∝ 表示“成比例”:三项相乘之后,还要对所有保留候选做归一化,使所有 (x, y) 的概率加起来等于 1,才得到真正的最终分布 q保留。
这一式子的含义可以直接读出来:生成器决定候选能到达哪里,验证器决定谁能通过,配比权重决定通过者各保留多少。三者里任何一环改变,最终训练分布都会改变。生成器从不会产生的内容,无论验证器多宽容、权重多高,都不会进入训练集;验证器会拒绝的内容,即使生成器大量产出也会被拦下;而配比权重则是在通过者内部重新分配数量,决定长尾主题和冷门难度能占到多大比例。
这个式子也解释了为什么“验证通过率很高”与“保留集质量高”是两回事。假设验证器只检查最终金额是否正确,那么一条推理过程完全错误、只是偶然算对了最终数字的解答,也会被接受:a(x,y) 对这种样本同样接近于 1,错误推理照样大量进入保留集。再假设简单题天然更容易通过验证,而难题通过率低,那么筛选这一关就会把分布进一步推向简单:即使生成器原本产出了不少难题,验证器的拒绝也会把它们系统性削减。高接受率很可能只是生成器迎合了一个弱的验证器,而不是数据变好了。
因此,评估一条管线时只报“最终保留了多少条”是没有意义的。应当同时报告候选数、接受率、去重后的数量、难度分布与切片覆盖、验证器自身的误差率,以及保留分布与真实目标分布之间的距离。候选数说明生成器的覆盖面,接受率说明验证器拦截了多少,去重数说明真正新增了多少独立样本,难度与切片覆盖说明缺口有没有被填上,验证器误差说明有多少错误混了进来,与目标分布的距离则说明最终的 q保留 是否还是想要的那个分布。缺少任何一项,都无法判断保留集到底是接近了真实缺口,还是只是生成器和验证器互相迎合的产物。
还有一层更隐蔽的作用:验证器同时也是一个选择器。它不只是去掉坏样本,还决定了哪些风格、哪些解法能够存活下来。一个偏向标准措辞的验证器会慢慢淘汰掉非标准的表达;一个只认可某类解题路径的验证器会让其他路径从训练集中消失。验证器参与定义了训练分布的形状,所以它本身也必须接受独立评测,不能因为它是“过滤者”就默认它是中立的。
4运行示例:10 万候选最后为何只保留 1.2 万逐步演算
把上一节的公式落到一条真实管线上,数字就直观了。一个退款边界数据的生成流程:十万条合成退款样本依次经过规则验证、语义去重、覆盖配额和人工抽样,最终形成训练混合。整个流程像一个漏斗,图 1 展示的就是这个漏斗;它的目标不是最大程度保留数据,而是留下可验证、非重复、且覆盖目标切片的数据。每一步的数量损失,只有在对应着质量收益时才是合理的。
四个阶段可以逐一列出来。第一段是生成,产出 100k 条候选,占上一步的 100%;这一步需要抽查的问题是:候选是否真的覆盖了缺口,还是只在生成器熟悉的区域里堆量。第二段是规则验证,剩下 60k,占 60%;这一步按资格、金额和证据规则去掉明显错误的样本,需要抽查的问题是:验证器有没有漏掉错误(该拒的没拒),有没有误拒正确样本(不该拒的拒了)。第三段是语义去重,剩下 24k,占上一段的 40%;这一步用语义近邻找出措辞重复的样本并删除,需要抽查的问题是:有没有误删稀有表达——长尾里那些少见但真实的说法,恰恰可能是最有价值的部分。第四段是覆盖采样,剩下 12k,占上一段的 50%;这一步按语言、难度和风险配额纠正剩余分布,需要抽查的问题是:真实目标权重和长尾覆盖是否设置得对,配额本身是不是反映了真实世界的分布。
这条管线的总体接受率是 12%。这个数字本身不说明好坏:如果生成的一百万条候选里只有一千条值得保留,接受率低恰恰说明管线在尽职;反过来,接受率很高也可能是验证器形同虚设。关键看每一步拒绝的理由是否成立,以及有没有把正确的样本一并误杀。每一步都要对误拒和误删做人工抽查,因为数量减少本身不等于质量提升——把样本删掉很容易,难的是只删掉该删的。
最后是配比问题。假设训练混合总共 60k 条样本,12k 合成样本占 20%。不能因为合成候选“免费”,就把合成比例一路拉到 90%。真实数据承担着合成数据无法替代的角色:它保留了语言的尾部——那些生成器写不出来的真实表达——以及外部世界的约束,比如真实的政策执行结果和用户行为。合成数据是在真实锚点上扩展覆盖,而不是替换锚点。真实样本锚定分布,合成样本填补缺口,两者按目标缺口的大小来配比,而不是按生成成本来配比。
| 阶段 | 数量 | 相对上一步 | 需抽查的问题 |
|---|---|---|---|
| 生成 | 100k | 100% | 是否真的覆盖缺口 |
| 规则验证 | 60k | 60% | 验证器漏错/误拒 |
| 语义去重 | 24k | 40% | 是否误删稀有表达 |
| 覆盖采样 | 12k | 50% | 真实目标权重与长尾 |
5可执行验证强,但只强在写出的断言验证
在所有验证手段里,可执行验证是最强的一类:它不依赖任何模型的判断,而是让事实自己说话。一道数学题的答案代回方程后等式成立,一段代码在给定测试下全部通过,一个 JSON 能被解析器无报错地读入——这些都是确定性的、可复现的证据。但可执行验证的强度有一个精确的边界:它只能证明被写出来的那些断言,别的什么都证明不了。
执行器能证明的性质是有限的。它证明程序在给定测试上通过,但不能证明测试覆盖了没写出来的边界;它证明方程结果代入后满足,但不能证明推导过程没有错误;它证明 JSON 格式可解析,但不能证明需求本身是对的,也不能证明代码没有安全漏洞。一个样本通过了全部执行检查,仍然可能是“有毒”的:它携带的是一个恰好满足断言、但在断言之外完全错误的行为。验证强度完全取决于断言写得多完整,断言没有覆盖的区域,执行器没有任何发言权。
更麻烦的是,生成器会主动寻找验证器的漏洞。当生成器的目标是“通过验证”而不是“解决问题”时,它就会优化验证器给出的信号,而不是优化真实目标。这就是 reward hacking:生成器学会钻测试的空子,产出一些通过所有断言却毫无价值的样本。验证器越固定、越公开,就越容易被反过来当作优化目标。
对抗这一点的办法是多重验证与持续对抗。第一,不要只依赖一种验证:把静态规则、执行验证和独立模型或人工复核叠加起来,让不同类型的检查相互补位。第二,对验证器本身做 mutation test:故意往正确样本里注入错误,看验证器能否拒绝。一个连故意制造的错误都拦不下来的验证器,等于没有验证能力。第三,维护隐藏测试并定期更新,避免生成器过拟合公开断言——如果所有测试题生成器都见过,它就只是在背答案。
对于高风险数据,还需要一条更根本的原则:依赖来源证据,而不是多数模型投票。同系列的教师模型和裁判模型可能共享同一批盲点,它们“都同意”并不构成独立证据;两个同源模型的共识,在信息量上并不比一个模型多。真正独立的验证必须来自不同的真值来源——规则、执行、异源模型或人。来源不同,才叫证据;来源相同,只是回声。
6多样性、难度与真实性必须分别测覆盖
评估合成数据时最常见的错误,是用一个指标代替另一个。多样性、难度、真实性是三个不同的性质,必须分别测量;任何一个指标高,都不能自动推出另外两个也好。
先看多样性。一个常用的工具是 embedding 距离:把文本变成向量,然后测量两段文本在表示空间里相隔多远,通常用来寻找语义近邻。它的局限在于,距离大只说明当前的表示模型认为两段文本不同,并不保证它们在任务结构上真的新颖,也不保证它们对应了真实存在的用户群体。词面、语义、结构、解法和群体多样性是不同维度:用高温度采样随机改写,可以大幅增加措辞层面的差异,却不增加任何任务结构上的差异——一百种说法表达的是同一件事,覆盖面并没有变宽。同样,一群结构不同的样本如果都来自生成器熟悉的那个区域,仍然覆盖不到真实世界里未被表示的输入。
因此评估的输入是合成候选、真实失败分类和目标切片,输出是一组互补的指标:重复率、难度、覆盖、真假可分性和下游增益。首先按真实失败分类建立覆盖矩阵,把缺口切成语言、政策边界、缺失字段、冲突证据、攻击和工具故障等格子,再在每一格设置目标数量和真实锚点。矩阵的价值在于把“覆盖”从一句口号变成一个可以逐格检查的清单。
五个指标各自回答一个问题,也各自有一个不能证明的东西。n-gram 或语义重复率回答“近邻是不是太多”,但不能证明任务结构新颖;难度分层回答“验证和模型在什么难度上成功”,但不能证明与现实相关;切片覆盖回答“预定义的组合有没有出现”,但不能证明未知长尾已经被覆盖——预定义之外的世界恰恰是看不见的;真实与合成分类器回答“两种分布可被分开的程度”,但不能证明哪一边更正确,可分只说明分布不同,不说明合成更好或更坏;下游增益回答“训练后任务表现变了多少”,但不能证明没有副作用,也不能证明因果唯一——提升可能来自别的原因。
单项指标之间不能互相替代:语义多样不证明现实相关,切片齐全不证明未知长尾被覆盖。最终的证据只能来自真实隔离测试和消融实验。对照设计应当包括:真实基线、在真实基线上加合成、用等量的真实数据替代合成、以及打乱标签的对照组。如果加合成没有超过等量真实数据,说明这些合成样本并没有带来超过真实数据的边际价值;如果打乱标签的对照组也有提升,说明提升并非来自标签里的真实信息。只有这些对照都站得住,合成数据才被证明带来了独立的增益。
| 指标 | 回答 | 不能证明 |
|---|---|---|
| n-gram/语义重复率 | 是否近邻太多 | 任务结构新颖 |
| 难度分层 | 验证/模型成功分布 | 现实相关性 |
| 切片覆盖 | 预定义组合是否出现 | 未知长尾已覆盖 |
| 真实/合成分类器 | 分布可分程度 | 哪一边更正确 |
| 下游增益 | 训练后任务变化 | 无副作用与因果唯一 |
7模型坍缩取决于替换、累积和筛选方式反馈回路
“模型学模型,一代比一代差”的说法,把模型坍缩讲成了一个必然规律,但实际机制要更细致。坍缩并不由“用模型输出训练模型”这个动作本身决定,而是由三件事共同决定:每代之间是替换还是累积、合成数据占比多少、以及筛选和验证如何执行。
先看坍缩为什么会发生。如果每一代都用生成样本替换掉上一代的真实数据,训练分布就与真实分布渐行渐远。生成器天然会欠采样尾部:它倾向于输出训练中最常见的模式,稀有的语言、罕见的场景在它手里出现得比真实世界少得多。到了下一代,模型又从这个已经被削尾的分布里学习,尾部再被削一层。如此迭代,稀有模式逐代消失,而系统性的错误和风格偏好因为总是被生成、总是被学习,反而被逐代放大。平均表现可能看起来还好,因为被削掉的是小概率事件,但结构性的能力已经丢失了。
坍缩路径可以用一个混合公式描述。第 t 代模型看到的训练分布是:
Dₜ = (1 − α) × D真实 + α × D合成,t
其中 Dₜ 是第 t 代模型看到的训练分布,D真实 是保留的原始真实数据分布,D合成,t 是第 t 代生成数据的分布,α 是合成数据所占的比例。要注意这个式子只描述了混合权重这一层:它说的是“每代训练集里有多少是真实的、多少是合成的”。但它没有描述三个真正决定退化速度的因素——真实数据是否跨代持续累积、生成器漏掉了哪些尾部、以及验证器本身有多少误差。如果 D真实 每代都在,且跨代累积而非被替换,退化路径就会显著不同;如果验证器能独立拦截错误,错误就不一定会被放大。所以“合成必崩”和“只要筛选就安全”都是过度简化,真实的结论取决于替换、累积和筛选三者如何配合。
对应的监控指标也要覆盖这些维度:尾部覆盖、熵、重复率、真实与合成的可分性、跨代错误的相关性,以及真实留出集上的表现。其中跨代错误相关尤其值得注意:如果第 t+1 代犯的错误和上一代高度重合,说明错误正在被复制而不是被修正。还有一个关键的判断规则:平均准确率稳定不代表没有坍缩。少数语言和罕见场景可能在整体指标平稳的同时已经消失。只有在真实的隔离切片上持续验证,才能区分“整体稳定”和“尾部消失”——这两个状态在聚合指标上看起来一模一样。
最后一层防线是来源标签。互联网上已经有大量未标识的模型生成内容,如果这些合成回流被当成新出现的真实数据收集进来,团队会在不知情的情况下把模型输出重新喂给模型。来源标签一旦丢失,就无法知道哪些“新数据”其实是自己系统的回声。因此,只要样本进入管线,它的来源信息就必须跟着走,这是防止隐秘自循环的最基本手段。
8谱系、污染和授权仍适用于合成数据治理
合成数据有一个容易被默认掉的假设:“既然是我们自己生成的,那它天然就没有版权、隐私或测试污染问题。”这个假设不成立。生成器不会凭空创造内容,它复述的是训练数据里的模式和片段。教师模型可能逐字或近似复述训练语料中的受版权保护内容,也可能输出训练中见过的个人信息;提示词本身可能包含受限文档,把原始文本带了进来;生成出的改写即使措辞不同,也可能是某个评测题目的近邻。PII 指可用于识别个人的信息,比如姓名与联系方式;评测污染指训练数据里混入了测试题或其近似答案,使评测成绩虚高。合成数据同样会携带这三类问题,而且因为它体量大、生成快,传播的速度可能更快。
因此治理的对象不是“合成数据”这个抽象概念,而是整条管线:种子数据、生成器、模板、验证器和混合计划。治理的输出,是带稳定 ID、来源谱系、许可信息和撤回路径的样本。谱系要记录到什么程度?生成器快照、提示模板、采样参数、随机种子、输入来源、验证器版本、拒绝原因和最终混合方式,缺一不可。只有当这些都被记录时,“撤回”才是一个可执行的动作,而不是一句口号。
治理动作分布在生成的各个阶段。生成之前,检查种子数据的用途和敏感性:受限文档能不能进入提示词,个人信息能不能被用于生成,必须在数据进入管线之前就确定。生成之后,扫描记忆式片段、PII、恶意内容以及与评测集的近邻,把泄漏拦截在入库之前。入库时做语义去重,但要保留簇和代表样本,不能为了干净把长尾表达一并删掉。配比时按来源、难度和群体设置上限,防止单一教师模型支配整个训练集,让一个模型的盲点变成全集的盲点。对于真实留出集,则要严格隔离:它的题目和由它派生出的答案,一律禁止进入任何提示词。
如果事后发现问题,谱系的作用就体现出来:可以沿谱系撤回受影响的数据,并定位到使用了这些数据的训练运行。但反过来要清醒:一次扫描通过,只说明当前的规则没有发现问题,不等于拿到了版权、隐私或授权方面的结论。“模型生成的”也不是一种权利结论——它不意味着内容就免于版权或合同约束,具体的法律与合同判断必须按地区和用途来处理。扫描器是工程防线,不是法律意见。
9何时值得用,何时应优先收集真实数据决策
合成数据不是越用越多越好,而是要放进正确的缺口里。它最适合的情况,是真值可以被独立、确定地验证的任务:规则真值明确,模拟器可靠,答案可执行验证,或者需要在隐私安全的前提下做边界组合——真实样本极少、但结构已知的那类缺口。例如政策边界的枚举、代码路径的组合、数学题目的生成,这些场景里生成器可以大规模扩张,验证器可以独立把关,两者不是同一个真值来源。
最容易自欺的情况,恰恰与上面相反:开放世界的事实、文化偏好、罕见伤害、真实用户意图,以及验证器和教师同源的任务。开放世界的事实没有权威规则可查,生成器只能凭训练记忆复述;文化偏好和用户意图存在于真实人群之中,模型采样出来的只是它对人群的想象;罕见伤害因为罕见,几乎不会出现在生成器的输出里;而验证器和教师同源时,教师写的答案由同系列的裁判来判,通过率高只是回声。这些场景应当投资真实观察、专家标注和参与式评估,而不是继续扩大合成量。
判断该往哪边投钱,最好的办法是小规模试验。把“加合成”和“等预算的真实数据、人工标注或工具改进”放在一起对比,按切片看边际收益。如果加了合成之后,模型只是在风格和措辞上变得更像教师,而真实指标没有上升,就应当停止扩量。生成成本便宜,不代表筛选、治理和错误成本便宜:前面讲过的验证、去重、谱系、扫描、撤回,每一步都有人工和工程开销。省下来的生成费用,可能在治理环节成倍地还回去。
最后要有明确的停止条件。当新增批次去重后的新颖性、真实留出集上的增益、或者边际覆盖接近零时,就不应再为数量 KPI 继续生成。合成的价值在于覆盖新的有效信息,一旦新的批次不再带来新颖性、不再带来真实表现提升、不再扩大覆盖面,继续生成只是把同一个分布的样本再复制一遍。到了这一点,答案就很清楚:问题不再出在数据量上,而必须回到真实世界里去找新的信息。
11把因果链连起来综合
合成数据的方法论,可以压缩成一条从问题到实践的因果链,每一步都依赖上一步,缺一环整条链就断掉。
第一步,从真实失败中定义可量化的缺口。收集真实世界里的失败切片,把它们分类成具体的切片——语言、政策边界、缺失字段、冲突证据、攻击、工具故障——并给每格定出目标数量。没有这一步,后面的所有生成都只是无目标的扩量。
第二步,为缺口选择合适的生成机制。规则明确的任务用程序构造可验证骨架,需要语言多样性的地方用教师蒸馏扩写表达,模型已经可靠的区域才用自训练,变换不改标签时才用增强。生成机制的真值结构必须与缺口匹配,而不是有什么工具就用什么。
第三步,用独立的规则、执行或人工验证。验证器的真值来源必须独立于生成器,验证通过只证明写出的断言成立,因此要配合静态规则、执行验证和异源人工复核,并定期做 mutation test 防止验证器被钻空子。
第四步,语义去重,并按难度和群体配额采样。删掉近邻重复,但要保留稀有表达和代表样本;用配额把保留分布重新拉回目标形状,而不是让通过率的自然偏差决定最终分布。
第五步,限制混合比例,保留真实锚点。真实数据锚定语言的尾部和外部世界的约束,合成样本只在真实基线上扩展覆盖,两者按缺口大小配比,而不是按生成成本配比。
第六步,在真实隔离集上做消融,并沿谱系迭代。用真实基线、加合成、等量真实、打乱标签的对照实验检验合成的边际增益;按谱系撤回有问题的数据,修正生成器或验证器后重新走完这条链。
这条链没有一步是孤立的技术:每一步的输入都是上一步的输出,每一步的产出又成为下一步的约束。从真实失败到生成机制,从验证到配比,从混合到消融,最后回到真实失败——合成数据的全部价值,都体现在它最终有没有让模型在真实世界的隔离测试上变得更好。若没有,就应当回到第一步,重新定义缺口,而不是回到第三步,生成更多。
- Self-Instruct:模型生成指令数据与筛选
- The Curse of Recursion:生成数据反馈与模型坍缩
- Is Model Collapse Inevitable?:累积真实与合成数据对坍缩的影响
- Textbooks Are All You Need:受控高质量合成代码数据