合成数据不是"免费的训练集"
用模型生成数据来补样本,听起来很划算。它确实有用,但用错了会污染评测与训练,
而且问题往往到很久以后才暴露(模型学会了合成数据的偏差)。
三种合理用法
一、扩充"格式与边界"样本
让模型生成结构合法但内容多样的样本(空值、极短、超长、异常编码),
用来测解析与校验的健壮性。这类任务不依赖事实正确性,风险低。
二、做"困难负例"
针对容易混淆的类别,生成"看起来像但不对"的样本,用于训练/测分类边界。
注意:负例要人工核对,否则会把真样本误标为负例。
三、做"检索与问答的干扰项"
生成与问题主题相关但不含答案的段落,用于测检索的抗干扰能力。
三条红线(不要越)
- 不要用合成数据当"事实"评测集 —— 模型生成的事实可能本身就是错的,
用它测"事实正确率"等于自证;
- 不要用生成模型评测自己 —— 同一模型生成 + 评分会系统性偏好自己的风格
(要评就用不同来源的判据或人工);
- 不要混入真实用户数据生成 —— 合成过程会把个人数据带进产物,
合规上等同直接使用原始数据。
必须做的两件事
- 标注来源:每条样本记
synthetic: true与生成模型/提示词版本,
这样评测差异能归因,也便于随时剔除;
- 人工抽检:抽 10% 核对(尤其是"事实类"内容),
合成样本的人工错误率通常明显高于真实样本。
一个务实的组合
评测集 = 真实样本为主(>=70%)
+ 合成样本补充边界与困难负例(<=30%,全部标注来源并抽检)
评测的结论只能由真实样本决定 ✔;合成样本的作用是把边界测厚,而不是替代真实分布。
怎么验证合成数据有没有帮上忙
- 用真实评测集做基线;
- 加入合成样本只用于训练/调参,再看真实评测集是否提升;
- 若只在合成集上变好、真实集没变 —— 说明过拟合合成分布,应减少合成比例。