22

Synthetic Data & Augmentation

⏱️ 30分钟

Synthetic Data Augmentation

Synthetic data 最容易被误解成“数据不够就让模型多编一点”。这很危险。真正有效的 synthetic data,不是为了把 dataset 变大,而是为了把 coverage 变合理、把 eval 变更有杀伤力、把模型盲区更早暴露出来。

所以这页的重点不是教你批量生成文本,而是 AI engineer 怎么把 synthetic data 用在更靠谱的 augmentation workflow 里。

Synthetic Data Pipeline


先说结论:先补 coverage,不要先追规模

很多 team 一缺数据,就先追 10 倍、100 倍扩充。
更稳的顺序应该是:

  1. 找出真实数据缺口
  2. 明确要补哪类 case
  3. 生成后做 verification 和 dedup
  4. 最后才考虑规模化生产

如果 coverage 没想清楚,synthetic data 只会把偏差放大。


Synthetic Data 最适合用在哪

场景为什么适合
eval set 扩充补 edge case 和 rare case
safety / refusal 测试生成 jailbreak、policy 边缘样本
格式化 extraction批量生成结构相近但内容多样的输入
locale / style variation补不同语言和表达方式
low-resource task bootstrap先快速搭一个可训练/可评估起点

它最值钱的地方,通常不是训练主数据,而是评估和覆盖补洞。


最常见的错误用法

错法后果
让同一个模型生成再评估很容易自嗨,误判质量
只做 paraphrase看起来很多样,实际信息量很低
不做 provenance后面不知道哪批数据污染了结果
train / test 混源leakage 后评估会失真

Synthetic data 不是越多越强,失控后反而会让你更难判断真实能力。


一个更稳的 Generation Pipeline

gap analysis
  -> generation prompt
  -> judge / filter
  -> dedup
  -> difficulty tagging
  -> split and version

这个 pipeline 里最容易被跳过的是 middle steps。
但恰恰是 judge、dedup 和 tagging,决定了这批数据能不能用。


常见的生成方式

方法适合做什么
paraphrase补表达多样性
template expansion补实体、行业、locale 变量
adversarial generation补攻击样本、边界样本
source-grounded generation基于真实文档生成 Q&A / citation case

其中最靠谱的往往是最后一种。
因为它最接近真实任务,也更容易做 correctness check。


Verification,不能靠“看起来没问题”

Synthetic item 至少应该经过:

检查项为什么要做
format validation保证结构能进 pipeline
faithfulness check确保没有偏离 source
safety filter避免带入不该有的内容
manual spot check自动 judge 也会漏
duplicate control避免虚假多样性

如果没有这些,后面你看到的提升可能只是 dataset contamination。


Provenance 和 Versioning 很关键

每条 synthetic sample 最少记录这些字段:

  • source
  • generation model
  • generation prompt version
  • judge result
  • tags
  • difficulty
  • split

没有 provenance,后面一旦出现坏样本、奇怪提升或 regression,你几乎没法追。


难度分层比平均分更重要

AI engineer 用 synthetic data 时,最值得做的是 difficulty tagging。

难度层例子
easy常规格式、常规表达
mediumparaphrase、轻度歧义
hard多约束、长上下文、边界 case
adversarialinjection、诱导、格式破坏

这样你才能知道模型到底是普遍提升了,还是只在 easy case 看起来变好了。


什么时候别急着继续扩 synthetic data

情况为什么
真实数据 pipeline 还没整理好你会一直在 synthetic 上兜圈
judge 机制不稳扩得越多,噪声越大
bad case 都没复盘生成再多也补不到点上
团队没有版本治理数据越来越难维护

Synthetic data 是放大器,不是替代真实数据治理的捷径。


Practice

拿你现在一份 eval set,先不要扩 10 倍。
先回答这 4 个问题:

  1. 缺的是哪类 case
  2. 哪些 case 值得用 synthetic 补
  3. 生成后怎么 judge
  4. 如何记录 provenance

这 4 个问题想清楚后,再开始批量生成。

📚 相关资源

❓ 常见问题

关于本章主题最常被搜索的问题,点击展开答案

Synthetic data 是不是数据不够就让模型多生成一点?

不是,这种用法很危险。Synthetic data 真正的价值不是把 dataset 扩 10 倍,而是把 coverage 补合理、把 eval 变更有杀伤力、把模型盲区更早暴露。先做 gap analysis 找出真实数据缺什么,再针对性生成;coverage 没想清楚就批量扩,只会把偏差放大。

Synthetic data 最适合用在什么场景?

5 个高价值场景:eval set 扩充补 edge / rare case;safety 与 refusal 测试生成 jailbreak 边缘样本;格式化 extraction 批量生成结构相近内容多样的输入;locale / style variation 补不同语言表达;low-resource task 的 bootstrap。它最值钱的地方通常是评估和覆盖补洞,不是训练主数据。

怎么判断生成的 synthetic 样本到底能不能用?

至少过 5 道关:format validation 保证能进 pipeline、faithfulness check 确保没偏离 source、safety filter 过滤危险内容、manual spot check(自动 judge 也会漏)、duplicate control 避免虚假多样性。让同一个模型既生成又评估是最常见的错法 —— 容易自嗨误判质量。

为什么每条 synthetic 样本都要记 provenance?

没有 provenance,后面一旦出现奇怪提升、regression、坏样本,几乎追不回来源。每条样本最少记 source、generation model、prompt version、judge result、tags、difficulty、split 这 7 个字段,才能在出问题时回溯到底是哪一批数据污染了结果。

什么时候应该停下,别再扩 synthetic data?

4 个红线场景:真实数据 pipeline 还没整理好(你只会一直在 synthetic 上兜圈)、judge 机制不稳(扩越多噪声越大)、bad case 还没复盘(生成再多也补不到点上)、团队没有版本治理(数据越来越难维护)。Synthetic data 是放大器,不是替代真实数据治理的捷径。