合成数据与自我改进(Synthetic Data & Self-Improvement)
"高质量真实数据不够用了"是 2024-2026 大模型训练的中心矛盾——Chinchilla-optimal 需要几万亿 token、GPT-4/Llama-3 已经吃到了公开互联网的天花板。合成数据从"补充"变成了主力增量来源:Llama-3 后训练主要靠拒绝采样、Phi 系列的预训练几乎全靠"教科书合成"、DeepSeek-R1 用自己的推理轨迹蒸馏出一系列小模型。本文把合成数据的五大技术路线、质量控制、模型崩溃风险与规避一次讲透。前置阅读:数据工程与合成数据、RLHF/DPO 对齐、推理模型与慢思考。
面试先背这几句话
- 合成数据不是"造假数据":它是"用现有强模型 / 规则 / 验证器"生成新的训练样本,让新模型能学到目标能力。核心不是"合成",而是"验证"——能自动判对错的领域(数学、代码)最成功。
- 五条主线:① Self-Instruct(Alpaca / Vicuna 谱系);② Evol-Instruct(WizardLM / WizardMath / WizardCoder);③ 强蒸馏(用 GPT-4/R1 生成 SFT 数据教弱模型);④ 拒绝采样(Llama 2/3 的后训练主力:采样 N 条 → RM 选最好);⑤ 自我改进(STaR / rStar / rest-EM / R1-Zero,模型自己生成-筛选-再训练)。
- 数据领域的"新摩尔定律":合成 CoT + 可验证奖励 让数学/代码这两个领域的数据量在 12-18 个月内涨了 100 倍——NuminaMath、OpenMathReasoning、MetaMath、Magicoder 都是这条路径的产物。
- 头号风险:模型崩溃(model collapse):反复用模型输出训练模型 → 分布尾部信息逐代丢失、多样性塌缩。对策三件套——始终混合真实数据、用验证器/RM 过滤、控制合成比例。
一、为什么合成数据从"补充"变成"主力"?
三个结构性原因:
| 原因 | 事实 |
|---|---|
| 数据墙(Data Wall) | 高质量公开英文文本约 10-30T token 已被大厂吃透;扩到 100T 只剩低质量网页 |
| 训练配方后重心 | 从"堆预训练"转向"预训练 + SFT + RL + 蒸馏",后三阶段几乎完全是合成数据主导 |
| 领域数据难获取 | 中文推理、多步数学、专业代码、长文档理解——真实标注贵,合成成本降 10-100 倍 |
一个具体数据:Llama-3 后训练用了 ~10M SFT 样本、~10M 偏好对,其中绝大部分是合成/半合成(Meta 报告"人工写作只占很小比例")。DeepSeek-R1 生成的 80 万条推理轨迹蒸馏出的 R1-Distill 系列,让 7B 模型都能追上 GPT-4o 的数学能力。
二、五条技术路线全景
2.1 Self-Instruct(Alpaca 谱系)
做法:手写 175 条种子指令 → 让 GPT-3.5 按种子风格扩写 52K 条新指令 → 拿这批合成数据 SFT LLaMA-7B → Alpaca。
- 贡献:证明了"几百美元 GPT-4 API 就能造出一个能对话的 7B 模型"这条路径;
- 谱系:Alpaca → Vicuna(ShareGPT 对话)→ Dolly(真人指令)→ OpenAssistant;
- 局限:早期 Self-Instruct 数据分布窄、深度浅,简单任务 SFT 就够,复杂推理不行。
2.2 Evol-Instruct(WizardLM/Math/Coder)
核心创新:不是"横向扩量",而是"纵向加深"。用 LLM 把一条指令"进化"成更难/更复杂的版本:
- In-depth Evolving:加约束、加推理步骤、加复杂化前提;
- In-breadth Evolving:改变主题、换问法。
代表:
- WizardLM — 通用指令进化;
- WizardMath — 数学推理进化,MATH benchmark 显著提升;
- WizardCoder — 代码进化,HumanEval 超越 GPT-3.5。
这条路径证明了"指令复杂度比"指令数量"对下游性能更重要"。
2.3 强蒸馏(Strong-to-Weak Distillation)
做法:用最强模型(GPT-4、Claude、R1)生成高质量输出,直接 SFT 弱模型。
| 代表 | 教师 | 学生 |
|---|---|---|
| Vicuna | ChatGPT(ShareGPT 对话) | LLaMA-7B/13B |
| Zephyr | GPT-4 生成 + UltraFeedback | Mistral-7B |
| Nemotron-4 340B Reward 蒸馏 | Nemotron 教师 | Nemotron 学生 |
| DeepSeek-R1-Distill | R1 生成推理轨迹 | Qwen2.5-7B/14B/32B、Llama3-8B/70B |
为什么小模型蒸馏 R1 效果比自己做 RL 还好? 小模型受限于容量和算力,很难自行探索到"回溯 / 自验证 / 反思"这类复杂推理模式;把 R1 探索出的优质推理轨迹直接教给它,比让它从零摸索高效得多。这是 推理模型页 的核心结论之一。
2.4 拒绝采样(Rejection Sampling)
做法:对每条 prompt 采样 N 条回答 → 用 RM / 规则筛出最好的 → 只用这些进入训练集。
- Llama 2 / 3 后训练主力:Meta 明确说"拒绝采样是最重要的合成手段";
- WizardMath / rStar-Math:数学题采样 32-64 条 → 只保留答案正确的 → SFT,等价于"用验证器过滤 CoT";
- 本质:离线的 Best-of-N——用推理时的 test-time compute 换离线数据质量。
拒绝采样与 RLHF 的关系:拒绝采样是开销更小、更稳的替代路径——不用 RL 训练不稳定的 policy,直接用高质量 top-1 做 SFT。Llama 3 报告中 RLHF 前先跑几轮拒绝采样 SFT 是标准做法。
2.5 自我改进(Self-Improvement)
模型自己生成 → 自己筛选 → 训练自己 → 迭代。是最激进也最像 R1-Zero 的一条路径。
| 方法 | 核心机制 |
|---|---|
| STaR(Self-Taught Reasoner,2022) | 模型生成 CoT,答对的直接留下;答错的用 hint 重新生成,再当"正确 CoT"训练 |
| rStar-Math(2024) | 用 MCTS + PRM 生成高质量数学推理链,蒸馏出 7B 数学模型追平 o1-mini |
| rest-EM(DeepMind) | Reject-sample + EM 迭代,理论对应到一个 EM 算法 |
| R1-Zero(DeepSeek) | 纯 RL + 可验证奖励,模型自发涌现长 CoT / 反思,等价于自我改进的极限 |
| Absolute Zero(2025) | 让模型自己出题 + 自己解 + 自己验证,完全 self-play |
关键限制:必须有可靠的验证器(数学 checker、代码 executor、RM),否则错误会被放大而不是被过滤。
三、按领域看合成数据的现状
3.1 数学推理
| 数据集 | 规模 | 生成方式 |
|---|---|---|
| MetaMathQA | 395K | GPT-3.5 rewrite MATH/GSM8K,多种改写视角 |
| NuminaMath(数字合作 & MIT,2024) | 860K | 竞赛题人工整理 + LLM 生成 CoT + 验证 |
| OpenMathReasoning(NVIDIA,2025) | 3B token | R1/o1 生成 CoT + TIR(工具集成推理),配 3.2M 训练 recipe |
| DAPO-Math-17k(字节,2025) | 17k | 精选 + DAPO 训练用 |
趋势:从"重写已有题目"→ "合成 CoT" → "合成 CoT + 代码工具(TIR)"三代演进。CoT+TIR 是 2025 数学推理的 SOTA 配方。
3.2 代码
| 数据集 | 生成方式 |
|---|---|
| CodeAlpaca | Self-Instruct 生成编程指令 |
| WizardCoder | Evol-Instruct 加深代码题 |
| Magicoder / OSS-Instruct | 从真实开源代码片段出发,让 LLM 生成"教学任务",覆盖度远超凭空生成 |
| StarCoder2-Data | 开源代码 + LLM 教程 + 数学 |
| CodeR1 / DeepSeek-Coder-V2 | 用 R1 类推理链 + 单元测试 RL 生成 |
关键洞察:Magicoder 的 OSS-Instruct 用真实代码"锚定"合成分布——避免了纯合成的"教科书幻觉",是 2024 后代码合成数据的主流做法。
3.3 偏好数据(RLHF 用)
| 方法 | 描述 |
|---|---|
| Constitutional AI(Anthropic,2022) | 用"宪法原则"让 AI 自己评判 AI 的输出,生成偏好对(RLAIF) |
| UltraFeedback(清华,2023) | GPT-4 打分给多模型输出排序,产生 64K 偏好对 |
| PairRM(AllenAI) | 一次生成偏好对 + 排序模型 |
| Nemotron-4 340B | 用大 RM 自动生成偏好,训 Llama-3 有类似效果 |
RLAIF vs RLHF:RLAIF 便宜、可扩展、闭环稳定;风险是偏好会向 AI 评审自身的"品味"漂移。Anthropic 内部经验:"RLAIF 不能完全替代 RLHF,但可以把人工偏好用得更少。"
3.4 中文与多语
- BELLE / Firefly / MOSS — 早期 Chinese Alpaca 谱系;
- YAYI2 / DeepSeek-V3 后训练 — 大规模中文合成 + 拒绝采样;
- 多语翻译 SFT — 用 GPT-4 翻译英文 SFT 数据,覆盖低资源语言。
四、数据质量控制:合成 ≠ 有效
4.1 数量 vs 质量:LIMA 观察
LIMA(Meta,2023):1000 条精选指令 SFT LLaMA-65B,效果优于用 52K Alpaca 数据 SFT。结论:SFT 阶段质量 >> 数量。
- Alpagasus 用 GPT-4 筛掉 Alpaca 里 90% 的低质数据,效果反而更好;
- DEITA / IFD 分数 用 LLM 打分自动选高质量数据。
但:预训练阶段仍是"越多越好",SFT 才是"精而不多"——这个反转是面试题常问的。
4.2 语义去重
- 表面去重(MinHash)→ 只去字面重复;
- 语义去重(SemDeDup、SimSeek)→ Embedding 相似度阈值,能干掉"改写但意思相同"的样本;
- 通常能砍掉 20-40% 数据、下游指标反而略升。
4.3 难度平衡(Curriculum)
- 全是简单题 → SFT 完模型只会做简单题;
- 全是难题 → 训练发散、收敛慢;
- 实践:难度分层 + 从易到难 curriculum,或动态过滤(DAPO 的动态采样思路——扔掉过易过难样本)。
4.4 数据配比
后训练混合数据的经验配比(Llama 3 / Qwen 2.5 报告口径):
- 通用对话 : 数学 : 代码 : 安全 : 多语 ≈ 40 : 20 : 20 : 10 : 10;
- 强推理阶段:数学 + 代码可占 60-80%;
- 每个类别内部再做"高质量精选 40% + 广度覆盖 60%"。
五、模型崩溃(Model Collapse)
Shumailov et al. 2024(Nature):反复用模型输出训练模型,会导致:
- 早期阶段:分布尾部(罕见事件)逐代丢失;
- 晚期阶段:分布中心也开始退化 → 生成越来越单调、越来越"典型";
- 极限:模型只输出高概率 token,多样性彻底崩塌。
数学上是递归采样导致的方差累积——每一代模型都在采样上一代的近似分布,误差累积。
5.1 会不会真的发生?
实践中:如果完全用合成数据递归训练,几代后可测量地退化。但从没有大厂真的这么干:
- Llama 3 训练数据是"真实 + 合成"混合;
- Phi 系列虽然重合成,但基础语料仍含真实数据;
- DeepSeek-R1 用真实数学题和真实代码库做 verifier。
5.2 三件套对策
| 对策 | 说明 |
|---|---|
| 锚定真实数据 | 始终保留一定比例(>30%)真实高质量数据,防止分布漂移 |
| 验证器过滤 | 数学 checker、代码执行、RM 打分——只留通过验证的合成样本 |
| 多样性度量 | 用 embedding 熵、n-gram 多样性等指标监控,触发告警时上采样人写数据 |
验证器优先原则:能自动验证的领域(数学、代码、事实性问答)合成数据最安全;开放域生成(诗歌、创意写作)风险最大——因为没有"对错"就没有过滤器。
六、合成数据的伦理与法律
- 训练数据版权:用 GPT-4 API 生成的数据训练竞争模型是否违反 OpenAI ToS 一直有争议("竞争模型条款")。开源社区常绕道用开源强模型(Llama 3、Qwen、R1)生成。
- 模型溯源:合成数据训练的模型经常"暴露教师"——问它"你是谁"会说自己是 ChatGPT,需要专门 SFT 修正身份。
- 数据污染:合成数据可能包含教师模型在评测集上见过的答案 → 下游评测虚高。清洗合成数据前先做benchmark 污染检测(n-gram 匹配、embedding 匹配)。
高频追问
Q:合成数据能否完全替代真实数据? 不能。① 真实数据是"分布锚点",防止 model collapse;② 真实数据里的"长尾罕见知识"是合成模型无论怎么改写都造不出来的;③ 有版权和溯源的真实数据是法律合规的最终依据。合成数据是"扩量 + 领域增强",不是"替代"。
Q:Self-Instruct 和 Evol-Instruct 的核心差别? Self-Instruct 横向扩量——用种子生成更多样但相似难度的指令;Evol-Instruct 纵向加深——把一条指令逐步进化得更难更复杂。WizardLM 系列证明"复杂度 > 数量",同样规模数据下 Evol-Instruct 训出的模型在复杂任务上显著强于 Self-Instruct 版本。
Q:拒绝采样为什么在 Llama 3 里被称为"最重要的合成手段"? 因为它兼顾了质量、稳定性和简单性:① 直接用 RM 选 top-1 → 质量高;② 只做 SFT 不做 RL → 训练稳定,避免 PPO 的调参地狱;③ 天然离线,可大批预生成、缓存复用。Meta 的做法是"拒绝采样 SFT 多轮 + 一轮 DPO 收尾",比"直接 PPO"更省钱、更可控。这条路径 2024 后被 Qwen、DeepSeek 等广泛复制。
Q:小模型蒸馏 R1 为什么比自己做 RL 强? 探索能力受限。小模型(7B)在 RL 训练时很难自发探索到 R1 那种"反思-回溯-验证"的长 CoT 模式(这需要模型有足够的表征能力);而 R1 已经把这些模式具象化在它的输出里了——小模型 SFT 上这些轨迹,等于"跳过探索、直接模仿"。这是 推理模型页 的核心工程结论。
Q:STaR / rStar 和 R1-Zero 的区别? 都是"自我改进",但机制不同:
- STaR:模型生成 CoT → 答对留下 → SFT,是离线迭代;
- rStar-Math:加入 MCTS + PRM 精细搜索,把高质量推理链筛出来,然后蒸馏;
- R1-Zero:在线 RL 直接用 GRPO 训练,跳过 SFT,模型自发涌现推理。 STaR/rStar 是 SFT 系"离线自蒸馏",R1-Zero 是 RL 系"在线自改进"。
Q:LIMA 说"1000 条精选 SFT 就够",那 Llama 3 为什么还要 10M 样本? LIMA 观察适用于"基础对话能力"——1000 条高质量样本足以激活预训练模型已有的知识和对齐。但领域能力(数学、代码、多语、长上下文、Agent 工具调用)需要专门覆盖,量还是要够。所以现代配方是"精选核心对话 + 广覆盖专项能力"两层结构,总量仍要百万到千万级。
Q:模型崩溃在实际生产中真的发生吗? 在纯递归合成的实验里可复现,但大厂实际配方从不纯递归。Llama 3 / DeepSeek 都保留真实数据、加验证器过滤、控制合成比例。风险在长期迭代——如果一个模型的输出被互联网大量抓取、又被下一代训练数据吸收,理论上会形成慢性污染。这是 2025 年学界呼吁"标记 AI 生成内容"(水印、C2PA)的部分动机。
Q:RLAIF 会不会陷入"AI 评审 AI"的偏见循环? 会。风险两类:① 风格漂移——AI 评审偏爱"AI 味"的输出(长、结构化、免责声明多);② 能力上限锁死——RLAIF 只能训到评审模型的能力上限,无法超越。Anthropic 的做法是"Constitutional AI + 少量高质量人工偏好锚点",用宪法原则约束评审、用人工样本校准漂移。RLAIF 不是 RLHF 的完全替代,而是"人工偏好数据量放大器"。
Q:怎么防止合成数据污染 benchmark? ① n-gram 匹配:训练集/合成集与常见 benchmark 做 13-gram/33-gram 匹配,命中即剔除;② embedding 相似度:语义级去污染;③ 独立验证集:用私有或最新 benchmark(如 LiveCodeBench, GPQA 更新版)做防污评估;④ 溯源合成数据:明确记录每条合成样本的教师模型和生成时间,方便回溯。GPT-4/Claude 蒸馏数据里混入过 MMLU/HumanEval 答案的案例在开源社区多次被抓出。
Q:合成数据在预训练阶段和 SFT 阶段的用法有何不同?
- 预训练:追求广度、量大——教科书合成(Phi)、多语翻译扩充、代码合成,数据量到 T 级;重点是覆盖,不是精雕。
- SFT:追求深度、质精——Evol-Instruct 加深、拒绝采样选优、LIMA 式精选,量在 10K-10M;每条样本都要打磨。
- RLHF/RL 阶段:追求可验证性——数学题、代码题、RM 打分,能自动判"好坏"的样本才能进 RL loop。 三个阶段的合成配方本质是"广 → 精 → 可验证"三层递进。