Lecture 11 · 合成数据:改写、教科书、合成继续预训练与合成自举预训练 · Synthetic Data

Training Data for AI · Lecture 11。个人学习讲义与配套实验,按主题整理并持续修订。

课程源码 ZIP ↓

个人整理的学习笔记,非官方讲义;课程来源与整理说明见课程介绍。配套示例未逐一运行验证。

本篇目录

对应 Maps to:Stanford CS525 Winter 2026 Training Data for AI,2/25 客座讲座 Synthetic Data Trilogy(Zitong Yang,49 页 slides);3/4 后半的学生报告:Rephrasing the Web(WRAP,Thanawat Sornwanee)、Phi-4 Technical Report(Seyone Chithrananda)、The Unmet Promise of Synthetic Training Images(Bobby Shi)。阅读:Synthetic Continued Pretraining(EntiGraph)、Synthetic Bootstrapped Pretraining(SBP)、WRAP、Phi-4、The Unmet Promise。 依据说明:Yang 的 slides 文字可读,但结果大多是图;EntiGraph 和 SBP 的具体数字我从两篇论文的正文(arXiv HTML 版)里核对过。三个学生报告的文字可读,是 §4.2、§4.3、§6 的主要依据。WRAP、Phi-4、Unmet Promise 的关键结论核对过论文摘要。第 7 节”统一的视角”和第 8 节”延伸与前沿”是我补充的。 配套代码 Code:code/lecture11/(numpy;4 个脚本 + 1 个模块;最长的约 12 秒;代码 04 复用第 1 讲的合成视觉世界) 预计阅读时间:3 小时(含运行代码)


0. 本讲导航 · How to read this lecture

0.1 学习目标 Learning goals

  1. 说清楚为什么需要合成数据:数据墙、长尾知识的稀疏、需要特定的能力和格式。
  2. 了解合成数据在语言模型生命周期各阶段的用法:后训练(能力蒸馏)、继续预训练(学新知识)、预训练(改写、教科书、自举)。
  3. 理解 EntiGraph:为什么”改写”不够,为什么”实体之间的关系分析”能让模型从 130 万 token 的小语料里学到知识。
  4. 理解 SBP:不用老师模型,从文档之间的相关性里合成新文档;算力匹配的比较方法。
  5. 理解模型崩塌的条件(替换 vs 累积),以及为什么合成数据需要真实数据”锚定”。
  6. 理解”检索是合成数据的标准基线”这个方法论(The Unmet Promise)。

0.2 先修与本讲范围 Prerequisites & scope

默认你已经会 Assumed本讲不展开 Not covered
第 7 讲:Nemotron-CC 的改写、数据重复的价值生成模型本身怎样训练(扩散模型、指令微调)
第 8、9 讲:Self-Instruct、蒸馏、推理轨迹合成数据的法律问题(第 19 讲)
第 10 讲:小领域的瓶颈是独特数据量用合成数据做评测(第 14 讲)

0.3 本讲地图 Map

§1  为什么需要合成数据
§2  合成后训练:能力蒸馏(回顾第 8、9 讲)
§3  合成继续预训练:EntiGraph                                   ← 代码 01
§4  合成预训练:改写网页、教科书、合成自举预训练(SBP)           ← 代码 02
§5  模型崩塌:什么时候合成数据会害了模型                         ← 代码 03 演示 1、2
§6  真实数据的锚定与检索基线                                     ← 代码 03 演示 3、代码 04
§7  一个统一的视角:合成数据能做什么、不能做什么
§8  延伸与前沿
§9–13  小结、常见误区、练习、延伸阅读、下一讲预告

0.4 关于数字

论文的数字来自论文正文、摘要和 slides。代码的数字来自三个合成世界:

  • 故事世界(knowledge_world.py 的 StoryWorld):60 本”冷门书”,每本 16 个实体,分成 2 个情节;书里写明了每个情节里的 7 条关系(显式),其余的关系要沿着关系链推理才知道(隐式)。问题是四选一:“x 和谁有关系?“,干扰项是同一本书里另一个情节的实体。
  • 概念世界(ConceptWorld):300 个概念(人物、地点……),每个有 10 个属性;网页文档讲某个概念的 4 个属性;概念的热度服从 Zipf 分布。
  • 学生模型(Learner):对每条知识,记录它出现过多少种不同的表述、同一种表述被重复了多少次。有效曝光 = 不同表述数 + 0.5 × log(1 + 重复次数),知道它的概率 = 1 − exp(−有效曝光 / 4)。这是对”模型需要看到一条事实的很多种表述才能学会它”(EntiGraph 论文;Allen-Zhu & Li 2023)的最小刻画。
  • 代码 04 复用第 1 讲的合成视觉世界(40 个类别的特征向量),模拟”从 LAION 检索 vs 用 Stable Diffusion 生成”。

这些世界没有语言、没有风格、没有遗忘。它们能说明”多样性、推理、幻觉、覆盖面”这几个机制;凡是依赖语言本身的结论(例如 WRAP 的风格效应、SBP 的”新叙述”),讲义会说明世界衡量不了。代码固定了随机种子,同一台机器上重复运行输出逐字相同。


1. 为什么需要合成数据

1.1 语言模型训练的三个阶段

Yang 的 slides 从语言模型的训练流程讲起:

阶段学什么怎样衡量
预训练通用的世界知识网页 / 代码 / 高质量文本的困惑度,MMLU 这类少样本问答
继续预训练某个领域的知识领域内的困惑度和问答
后训练面向任务的能力SWE-Bench、AIME / HLE、IFEval……

合成数据在每个阶段都有用,但动机不同:

  • 后训练:我们需要某种格式的数据(指令 → 回答、问题 → 推理 → 答案、工具调用的轨迹),自然界里很少有现成的。
  • 继续预训练:我们想让模型学会一小批文档里的知识(一个公司的内部文档、一个冷门领域的论文),但这批文档太小,模型学不会。
  • 预训练:高质量数据快用完了(第 10、12 讲)。能不能把现有的数据”变”出更多?

1.2 知识在数据里很稀疏

Yang 的例子:线性代数的知识在互联网上有很多种表述——教科书、讲义、网上的习题讨论、SVD 的 GitHub 实现……所以模型能回答”特征向量和矩阵是什么关系”。但问它”弦理论和 M 理论是什么关系”,它就答不好了:这类冷门知识在网上只出现过很少的几次,而且表述单一。

EntiGraph 论文的说法是:一条事实,模型可能要看到几百到几千种不同的表述才能学会。Allen-Zhu & Li(Physics of Language Models 3.1,2023)的受控实验解释了原因:同一条事实只以一种方式出现时,模型可以把那段文字背下来,却不能在别的问法下”提取”出这条知识;把同样的内容改写成多种表述之后,问答能力大幅提高。

这就是合成数据的第一个用武之地:把稀疏的知识变成多样的表述。


2. 合成后训练:能力蒸馏(回顾第 8、9 讲)

2.1 一个模板

Yang 给了一个分析合成后训练论文的模板:后训练的形式通常是

arg⁡max⁡θ∑ilog⁡pθ(yi∣xi),\arg\max_\theta \sum_i \log p_\theta(y_i \mid x_i),

θ\theta 从某个已经训练好的检查点初始化。看一篇论文,就问三个问题:目标能力是什么?提示 xix_i 从哪来?回答 yiy_i 从哪来?

能力代表工作提示从哪来回答从哪来
指令遵循Alpaca(2023)Self-Instruct 从种子任务扩展老师模型(text-davinci-003)
推理Sky-T1(“450 美元训练你自己的 o1-preview”)、OpenThoughts3数学 / 代码 / 科学题库推理模型(QwQ、R1)的推理轨迹
多轮工具使用Kimi K2(2025)从 MCP 上爬取真实的工具,再合成新的工具;随机组合工具造出”智能体”和带评分标准的任务智能体和”工具模拟器”交互的轨迹,由评委按评分标准过滤

2.2 极简版:能力早就在预训练模型里了

每一类都有一个”极简版”:

  • LIMA:1000 条(指令,回答)就能让基础模型学会遵循指令;
  • s1:1000 条(问题,推理,答案)就能让指令模型学会长推理(Yang 是 s1 的共同第一作者)。

这说明这些后训练主要是轻量的能力蒸馏:能力已经在预训练模型里,后训练数据只是把它”激发”出来。于是 Yang 提出了两个更难的问题,也就是本讲的主线:

  1. 知识获取:怎样用合成数据让模型学会新的知识(例如 2026 年才出现的知识)?——§3
  2. 自我提升:合成数据能不能真正地”自举”预训练的能力,而不依赖一个更强的老师?——§4.3

3. 合成继续预训练:EntiGraph

3.1 问题设置

继续预训练的目的(Yang 的 slides):

  • 强化预训练语料里代表性不足的数据(Transformer 论文 vs 一篇冷门论文);
  • 学习互联网数据里通常没有的整个数据集(一个公司或用户的私有数据);
  • 上采样数学、代码这样的高质量数据。

EntiGraph(Yang, Band, Li, Candès, Hashimoto,ICLR 2025 Oral)的实验设置:

  • 源文档:QuALITY 数据集的 265 篇文章和短篇书(古登堡计划的科幻小说、Slate 杂志的文章等),共约 130 万 token。它们在预训练语料里很少见。
  • 测试:QuALITY 的多项选择题,闭卷——不把书放进上下文,模型要靠”记住的”知识回答。
  • 基础模型:Llama 3 8B Base,闭卷准确率 39.49%。

最直接的做法——在这 130 万 token 上继续预训练(Raw CPT)——比基础模型还差。数据太少、每条事实只出现一两次,模型学不会;而且在很小的语料上反复训练会损伤模型原有的能力。

3.2 第一次尝试:改写

基线是让老师模型把文档换个说法重写(借鉴 WRAP,§4.2)。改写增加了表述的多样性,但多样性有限:同一篇文档,改写来改写去还是那些内容、那些句子结构。论文的改写实验在 3800 万 token 停了下来,和 EntiGraph 有明显的差距。

3.3 EntiGraph:实体图上的合成数据

EntiGraph 是一个两步的”数据生成器”:

  1. 实体抽取:对每篇文档,让老师模型(gpt-4-turbo)“找出文中重要的实体”——人名、地名、物品、概念。
  2. 关系分析:从实体里随机挑出一对(或三个),把整篇文档和这几个实体一起给老师模型,让它”分析这些实体在文中的关系”。例如一篇关于牙医的文章里抽出”氟化物”和”牙釉质”,老师写一段关于它们关系的分析。

为什么有效?两个原因:

  • 组合带来多样性:nn 个实体有 (n2)\binom{n}{2} 对、(n3)\binom{n}{3} 个三元组。每一对的分析都是从一个不同的角度重新讲述文档的内容——这比”换个风格重写”多样得多。
  • 老师在上下文里做了推理:关系分析经常要把文档里分散的信息连起来——这些”推理出来的关系”在原文里没有直接写出来。

EntiGraph 从 130 万 token 生成了 4.55 亿 token(约 350 倍)。在上面继续预训练的 Llama 3 8B:闭卷准确率 56.22%,超过了闭卷的 GPT-3.5(44.81%)和 GPT-4(51.30%)。准确率随合成 token 数近似对数线性地增长。

3.4 一个数学模型:混合指数

论文用一个玩具模型解释这条曲线:

  • 实体集合 V\mathcal{V},每对实体以概率 p=λ/Vp = \lambda / V 在源文档里有直接关系(一张随机图);
  • 模型的知识是一个矩阵 MM,M(x,y)=1M(x, y) = 1 表示模型知道 xx 和 yy 的关系;在源文档上训练后,直接的关系都是 1;
  • 每一步合成:均匀地抽一对实体,在源图上找连接它们的路径;如果有路径,模型学会路径上的关系;
  • 准确率 = MM 里 1 的比例。

推导(用泊松分支过程近似)得到准确率是指数的混合:

Acc(Mt)≈p+C(1−∑kμ(k) (1−ak)t),\mathrm{Acc}(M_t) \approx p + C\Big(1 - \sum_k \mu(k)\,(1 - a_k)^t\Big),

CC 是源图里可达的实体对的比例,μ\mu 是一个混合测度。它有三个阶段:先线性增长,再对数线性增长,最后饱和。这个形式和 EntiGraph 的实验曲线拟合得很好。

这个模型的启示:合成数据能学到的知识有一个上限——源文档里”连得上”的关系(CC)。合成数据没有创造新知识,它把源文档里的知识重新排列成更容易学的形式。

3.5 在故事世界里(代码 01)

我们的故事世界就是这个玩具模型的一个版本:60 本书,840 条显式关系;3360 道题,其中 840 道问显式关系、2520 道问要推理的隐式关系;原书共 19200 token。同样多的训练 token(原书的几倍),三种做法的闭卷准确率(随机猜是 0.25):

预算重复原书改写EntiGraph改写:显式 / 隐式EntiGraph:显式 / 隐式
1×0.2910.2910.2910.42 / 0.250.42 / 0.25
4×0.3150.3560.3550.68 / 0.250.53 / 0.30
16×0.3340.4160.5070.93 / 0.240.77 / 0.42
32×0.3430.4180.6140.95 / 0.240.88 / 0.52
64×0.3510.4090.7350.95 / 0.230.96 / 0.66
128×0.3580.3830.8310.91 / 0.210.96 / 0.79
350×0.3670.3140.8830.80 / 0.150.91 / 0.87

(完整的表见代码输出。)

  • 重复原书几乎没用(350 遍只到 0.367):同一种表述看再多遍,学生能背下来,却不能在别的问法下答出来。
  • 改写在 32× 左右到顶(0.418):显式关系学会了(0.95),隐式关系仍是随机猜(0.24)——改写只换说法,不增加书里没写的关系。再往后,改写里偶尔写错的关系越积越多,准确率反而下降。(这个下降依赖于我设的”1% 的关系被写错、而且错误集中在同一本书的实体上”;论文的改写实验在 3800 万 token 就停了,没有观察到这一段。)
  • EntiGraph 小预算时和改写差不多(4× 时 0.355 vs 0.356),因为一半以上的随机实体对不在同一个情节里,这些分析不产生知识;但它一直在涨,8× 到 128× 之间每翻一倍涨 0.10–0.12,350× 时 0.883——和论文的对数线性曲线是同一个形状。

拆开 EntiGraph(代码 01 演示 2,128× 的预算):

变体全部显式隐式
完整的 EntiGraph0.8310.9620.788
所有生成都用同一种表述(没有多样性)0.5530.6750.512
只讲两端和相邻的关系0.7280.9610.650
只保留书里写明的关系(没有推理)0.4370.9980.250

两个成分缺一不可:多样性让知识学得会(去掉它,同样多的 token 几乎退化成”重复原书”),推理让知识覆盖得全(去掉它,隐式关系停在随机猜的水平)。

3.6 和检索增强(RAG)互补

如果测试时能把书放进上下文(开卷),还需要合成继续预训练吗?论文的结果:

设置准确率
Llama 3 8B,闭卷39.49%
EntiGraph CPT,闭卷56.22%
Llama 3 8B + RAG60.35%
EntiGraph CPT + RAG62.60%

RAG 本身很强,但 EntiGraph CPT 和 RAG 是互补的:参数里”记住的”知识在检索失败、或者需要多步推理时补上了。代码 01 演示 3 里同样的方向(基础模型 + RAG 0.826 → EntiGraph + RAG 0.969,提升主要在需要多步推理的题上)。不同的是,我们闭卷的 EntiGraph(0.883)比基础模型 + RAG 还好——我们的学生”只要表述够多就一定学会”,比真实的 8B 模型容易学得多。

3.7 类似的两步合成方法

Yang 的 slides 列出了两个思路相近的后续工作:

  • Active Reading(Lin et al. 2025):让模型自己为文档设计”学习策略”(复述、类比、提问……),再按策略生成学习材料,在大规模的事实学习上效果很好。
  • Reformulation for Pretraining Data Augmentation(Hao et al. 2025):先为一篇文档生成若干(体裁,受众)组合(例如”故事 × 小女孩""教科书 × 老师”),再按每个组合改写——第一步负责多样性,第二步负责忠实。

共同的结构是:先生成”角度”(实体对、学习策略、体裁 × 受众),再按角度生成内容——用组合爆炸来换多样性。


4. 合成预训练

4.1 重复的账

Yang 用一个例子说明为什么预训练也需要合成数据。一个典型的预训练配方,训练 10T token:

数据来源比例训练中分到的 token独特 token遍数
GitHub20%2T0.5T4
网页50%5T5T1

遍数 = 分到的 token / 独特 token。第 10 讲说过:高质量的小来源被重复几遍之后价值就递减了。slides 引用了 Kimi K2 技术报告的说法:只看一遍不足以充分吸收知识,看很多遍又收益递减、容易过拟合。Kimi K2 的对策是”知识数据改写”:用多样的风格和视角提示、把长文档分块逐段改写(保持连贯)、再做忠实度校验。

4.2 改写网页:WRAP

Rephrasing the Web(Maini et al. 2024)的动机:网页数据又脏又乱;按照扩展律,训练需要的数据和算力都很多,而高质量的网页数据有限。过滤会把大量”低质量”数据扔掉——能不能改写它们?

WRAP 用一个现成的指令模型,把 C4 的网页改写成几种风格:像维基百科一样的说明文、问答格式,等等。然后在真实数据 + 改写数据(一半一半)上预训练。结果:

  • 预训练加速约 3 倍;
  • 同样的算力下,在 Pile 的各个子集上困惑度平均改进 10% 以上,13 个零样本问答任务平均提高 2% 以上。

学生报告强调了几个发现:增加更多的真实数据不如增加改写数据;只用合成数据不如两者都用(只见过干净改写文本的模型,在噪声大的网页上表现变差);改写比其他数据增强方法好。作者把收益归因于两点:改写的风格多样性和下游评测的风格更接近;改写后的数据质量更高。

学生报告还做了一个有意思的类比:图像有现成的数据增强(旋转、缩放、换颜色),文本没有——用 LLM 改写就是文本的数据增强。

4.3 教科书:Phi 系列

Phi 系列走得更远(Yang 的 slides 和 Phi-4 的学生报告):

模型参数训练数据关键想法
Phi-1(2023)1.3B60 亿 token 过滤后的网页 + 10 亿 token GPT-3.5 生成的教科书和习题“教科书质量”的代码数据:让老师从零开始写教学内容(“为高中生写一篇关于 Python 列表推导式的教程”)
Phi-1.5 / Phi-21.3B / 2.7B扩展到 1.4T token(合成 + 过滤后的网页)扩大合成知识的覆盖面
Phi-33.8B–14B3.3T–4.8T token以真实文本为种子改写成严谨的分步推理(“把维基百科关于细胞有丝分裂的文章改写成大学水平的、逻辑有序的备考指南”)
Phi-4(2024)14B约 10T token:合成 40%、网页改写 15%、过滤后的网页 15%、代码 20%、购买的数据 10%预训练规模的”后训练式”数据:反向翻译(“读这段爬来的代码,倒推一个它恰好能解决的、有多重约束的难题”)、生成 → 批评 → 修改的循环

Phi-4 的摘要强调:之前的 Phi 模型主要是在蒸馏老师(GPT-4)的能力,而 Phi-4 在 STEM 问答上超过了它的老师——作者认为这说明他们的数据生成和后训练不只是蒸馏。Yang 的总结是:预训练和后训练之间的界限越来越模糊。

Phi-4 学生报告里几条和数据直接相关的经验:

  • 遍数 vs 独特性:合成数据被重复了很多遍——在第二阶段,合成数据看 12 遍比看 4 遍(同时看更多独特的网页 token)还好,没有明显的过拟合;网页数据提供大量独特 token。
  • 只用合成数据会伤害知识、增加幻觉:合成数据多的混合在推理类评测上表现好,但知识类任务(例如 trivia 问答)需要真实的网页和购买的数据。所以中期训练时要加入”知识刷新”的真实来源(§6)。
  • 推理顺序:合成数据可以把例子改写成”先推理、后答案”的顺序——如果训练数据把答案放在推理之前,自回归模型学到的前缀分布就不对。
  • 评测也是数据整理的一部分:用 13-gram / 7-gram 重叠检查去污染;用数据收集之后才出的新题(2024 年 11 月的 AMC)做”新鲜”的测试。

4.4 合成自举预训练:SBP

前面的方法都需要一个更强的老师(GPT-4、GPT-3.5、Llama 3.1 8B Instruct)。Yang 问:能不能去掉老师?

  • 从头预训练一个语言模型;
  • 把它微调成一个合成数据生成器;
  • 在合成数据上预训练一个新模型,看它是否变好。

这就是 SBP(Synthetic Bootstrapped Pretraining,Yang, Zhang, Liu, Hashimoto, Candès, Wang, Pang,ICLR 2026 Oral)。

知识从哪里来? Yang 用一个思想实验开头:一个只有 5 个 token 的世界,每篇文档里的 token 都是独立均匀随机抽的——在这上面做下一个词预测,什么也学不到。语言模型能学到东西,是因为数据里有结构上的相关性(统计的视角:token 之间有相关性;计算的视角:语言有可压缩的模式)。

标准的预训练只利用一篇文档内部的相关性。但文档之间也有丰富的相关性:《哈利·波特与魔法石》→ 它的电影剧本 → 对这本书的分析;Attention Is All You Need 这篇论文 → GPT-2 代码里的注意力实现。这些跨文档的相关性没有被利用。

SBP 的三步:

  1. 最近邻配对:在 DCLM 语料上用 Qwen3-0.6B-Embedding 给文档编码,用近似最近邻搜索找到相似度超过阈值 α\alpha 的文档对 (d1,d2)(d_1, d_2)(太长的文档去掉);
  2. 训练合成器:从预训练好的检查点出发,最大化 log⁡pθ(d2∣d1)\log p_\theta(d_2 \mid d_1)——“读了一篇文档,写一篇相关的文档”;
  3. 大规模合成:从语料里均匀地取 d1d_1,用温度 1 采样 d2d_2,每篇种子文档都能合成出不同的新文档;然后把真实数据和合成数据一起训练。

算力匹配的实验设计:数据来自 DCLM,模型是 Llama 3 架构加 QK-norm。

设置模型独特真实数据总训练 token基线SBP神谕(oracle)
200B 规模3B10B200B真实数据重复 20 遍真实数据 12.5 遍 + 75B 合成200B 独特数据
1T 规模3B / 6B50B1T重复 20 遍真实数据 + 125B / 250B 合成482B 独特数据

结果(问答平均准确率):SBP 稳定地超过重复的基线,拿到了神谕提升的 42%(200B,3B)、48%(1T,3B)、58%(1T,6B)——论文摘要的说法是”最多 60%“。训练过程中:一开始神谕和基线差不多、SBP 更好;后来基线饱和了;神谕和 SBP 继续往下走。

合成的文档不只是改写。slides 的例子:一篇关于圣地亚哥咖啡馆的真实文档,合成出的文档换了角度、换了体裁(论坛讨论、个人游记),讲的是同一个主题但内容是新的。论文的定性分析认为:SBP 抽象出种子文档的核心概念,再围绕它写出新的叙述。

贝叶斯的解释:假设文档由潜在的”概念”生成。标准的预训练学的是每篇文档的边缘分布,忽略了共享的概念;合成器的目标 p(d2∣d1)p(d_2 \mid d_1) 迫使它先从 d1d_1 推断概念的后验,再从后验生成 d2d_2。在合成数据上训练,于是相当于把”概念的后验”蒸馏给了学生。

4.5 在概念世界里(代码 02)

1500 篇真实文档,覆盖 245 个概念;这些概念的 2450 个事实里,68% 在语料里至少出现过一次。每种做法都训练 20 × 1500 篇文档的 token:

做法全部语料里有的事实语料里没有的事实自信地答错
只看一遍真实数据(参照)0.4550.5510.2500.000
基线:真实数据重复 20 遍0.5590.7030.2500.000
真实数据重复 12.5 遍(不加合成)0.5470.6850.2500.000
SBP:重复 12.5 遍 + 7.5 倍合成0.6640.8590.2470.021
神谕:20 倍的独特真实数据0.9450.9590.9160.000
  • SBP 比基线好,而且只用了同一个语料。真实数据少重复 7.5 遍几乎没有损失(0.547 vs 0.559)——重复的边际价值很低,这部分算力换成合成数据更划算。
  • 按论文的算法,SBP 拿到了神谕 27% 的提升;但在语料里出现过的事实上是 61%,在没出现过的事实上是 0%。我们的世界只衡量知识,神谕”见到新事实”的优势被放大了;论文的评测还包括困惑度,那部分收益不依赖新事实。
  • 合成数据的边界:SBP 能把语料里已有的知识以新的组合、新的表述写出来,却不能凭空造出语料里没有的知识。

配对的质量(代码 02 演示 2):不设阈值时只有 89% 的配对是同一个概念(只出现一次的冷门概念,它的”最近邻”必然是别的概念);阈值越高配对越准、能用的文档越少。在我们的世界里阈值越高越好(0.0 → 0.9:准确率 0.654 → 0.699,“自信地答错”3.7% → 0%),因为没配上对的文档,合成器仍然能读 d1d_1、退化成”换个说法复述”,而跨文档汇总在这个世界里没有额外的价值。

和”理想的改写器”比(代码 02 演示 3):一个忠实地”换个说法复述 d1d_1“的改写器得到 0.701,SBP 拿到了它 74% 的提升——而这个改写器需要一个会改写的指令模型(老师),SBP 不需要。在我们只有事实的世界里,SBP 的”跨文档汇总”没有带来额外的好处、只带来了配错对的错误;SBP 论文所说的”新的叙述、概念的抽象”这类价值,我们的世界衡量不了。这是一个诚实的局限,不是对 SBP 的否定。


5. 模型崩塌:什么时候合成数据会害了模型

5.1 递归训练的诅咒

Shumailov et al.(AI models collapse when trained on recursively generated data,Nature 2024)提出了一个让人担心的问题:互联网上的文本越来越多是 AI 生成的。如果下一代模型在上一代模型生成的数据上训练,再生成数据给下一代……会怎样?

他们发现分布会一代一代地退化:先失去尾部(稀有的事件、少见的表述),最后收敛到一个和原分布很不一样、方差很小的分布。原因有三:统计误差(有限的样本会漏掉稀有事件)、函数表达能力的误差、学习过程的误差。

5.2 在玩具模型上(代码 03 演示 1、2)

5000 种”事实”按 Zipf 分布出现;“模型”是计数的最大似然估计;每代 2 万个样本:

做法第 0 代第 1 代第 5 代第 20 代
替换:认识的词0.5170.4080.2400.113
替换:长尾(排名 1000 之后)里认识的0.4130.2950.1370.051
累积:认识的词0.5170.5170.5170.517
每代 20% 新的真实数据:认识的词0.5170.4480.3930.400
  • 替换(每代只用上一代生成的数据):一个稀有的词只要某一代恰好没被抽到,就永远消失了。20 代后只剩 11% 的词,但覆盖的真实概率质量只从 0.933 降到 0.767——头部还在,尾巴没了。
  • 累积(保留原始的真实数据,合成数据只是加进来):认识的词不变,总变差距离只是缓慢增加(0.114 → 0.135)。Gerstgrasser et al.(2024)在线性回归上证明了:累积时测试误差有上界,替换时误差随代数线性增长;他们在语言模型上也观察到同样的现象。
  • 每代混入 20% 新的真实数据:稳定在 40% 左右。

一维高斯(每代 20 个样本估计均值和标准差,再采样):替换时 σ 从 0.933 一路缩到第 200 代的 0.000,累积时稳定在 0.892。原因:样本标准差系统性地偏小,log⁡σ\log \sigma 做一个带负漂移的随机游走,没有东西把它拉回来。

5.3 结论:崩塌的条件

“合成数据导致崩塌”不是一个无条件的结论。崩塌的条件是用合成数据替换真实数据。今天的合成数据管线——WRAP、Nemotron-CC、Phi-4、EntiGraph、SBP——都是把合成数据和真实数据一起用,或者以真实数据为种子。

一个有趣的对照:下一讲(Pre-training under infinite compute)会看到,自蒸馏(在同样大小的模型自己生成的数据上训练新模型,同时保留真实数据)反而提高了性能。差别仍然在”保留真实数据”——以及合成数据被当作一种正则化 / 隐式的集成。


6. 真实数据的锚定与检索基线

6.1 合成数据教出的知识(代码 03 演示 3)

合成数据的内容从哪来,决定了它能教出什么知识。在概念世界里,一个老师模型对热门概念几乎都知道(95%)、对冷门概念大多不知道(20%)。比较两种合成数据:从零写教科书(Phi-1 式:老师凭自己的知识写,不知道的属性有 70% 的概率会编一个)和改写真实文档(WRAP 式:内容来自真实文档,老师只换说法)。预算都是 20 × 1500 篇文档:

训练数据全部热门概念冷门概念自信地答错
真实数据重复 20 遍0.5560.8900.4760.000
只用从零写的教科书0.5450.9700.3920.250
只用改写的真实文档0.7300.8510.6720.000
真实 10 遍 + 教科书 10×0.6230.9760.4940.079
真实 10 遍 + 改写 10×0.7290.9120.6590.000
真实 5 遍 + 改写 7.5× + 教科书 7.5×0.6980.9130.6080.041
  • 从零写的教科书:热门概念学得极好(0.970),冷门概念很差(0.392),而且 25% 的题”自信地答错”——老师不知道的东西,它会编;学生学到的是老师的知识,包括老师的错误。
  • 改写真实文档:冷门概念好得多(0.672),没有幻觉。内容由真实数据决定,形式由合成决定——这就是 WRAP、Nemotron-CC、Kimi K2 改写管线的思路。
  • 混入真实数据把长尾知识”锚定”住了(教科书 + 真实:冷门概念 0.392 → 0.494)。这和 Phi-4 的经验一致:合成数据擅长教”推理的轨迹”,知识要靠真实数据。

注意:Phi 系列的合成数据主要教的是推理和格式,不是冷门事实;那一部分的价值不依赖老师知道长尾知识。练习 5 会看到:老师知道得更多时,教科书式的合成数据会变得很有用。

6.2 图像:检索比生成更好

The Unmet Promise of Synthetic Training Images(Geng et al. 2024)问了一个尖锐的问题:文生图模型(Stable Diffusion)是在 LAION-2B 上训练的,它生成的图片里的每一点信息,都来自 LAION-2B。那么,生成器这个”中间环节”有没有带来超过它的训练数据本身的信息?

实验设计(任务适配:给定一个目标任务,构造一个有针对性的训练集):

  • 合成:用 Llama-2 7B 把类别名扩展成带背景和空间描述的标题,用 Stable Diffusion 1.5 生成(50 步 DDIM,引导强度 2.0);
  • 检索:在 LAION-2B 的 20 亿张图片里,(1) 标题里直接包含类别名的(子串匹配),(2) 在 CLIP ViT-L/14 的嵌入空间里每个类别的 2000 个最近邻;
  • 两边都用 CLIP 分数过滤,每个类别保留前 30%。

结果:在 5 个基准上(零样本和线性探测),检索的真实图片都和合成图片一样好或更好。合成数据对某些任务有帮助,但从来没超过简单的检索。

为什么? 两类缺陷:低层的伪影(飞机边缘模糊、猫的眼睛和嘴巴扭曲);高层的语义错误(空客 A320 的引擎配置画错了——这恰恰是细粒度分类要用的信息)。SDEdit 实验把两者分开:给真实的检索图片加噪声、再用 Stable Diffusion 去噪——语义内容基本保留,只加入”生成器的痕迹”。随着噪声强度增大,性能单调下降。生成器的”手笔”本身就有害。

结论:检索应该是合成数据研究的标准基线;目前的生成模型还不能超过它们自己的训练数据的价值。

6.3 在视觉世界里(代码 04)

用第 1 讲的视觉世界做上游数据(40 个类别、每类 3000 张”标题提到这个类别”的网络图片,大部分其实不是这个类别),目标任务是鸟和鱼的 10 个细类:

训练数据(每类 n 张)n = 50n = 200n = 1000
检索(标题匹配 + CLIP 过滤)0.5010.5170.651
完美的生成器0.4970.5650.588
细节模糊(保真度 0.6)0.4370.5190.546
伪影(强度 0.5)0.4170.4810.509
细节模糊 + 伪影0.3570.4220.449
(参照)干净的真实图片0.6680.7360.744
  • 检索一直在涨(0.501 → 0.651),尽管越往后检索到的图片越脏(目标类别的比例 0.73 → 0.38)。
  • “完美的生成器”有一个有趣的优点:n = 200 时比检索还好(0.565 vs 0.517)——它把上游 3000 张图平均成一个”典型”的分布,相当于去噪。但它很快到顶(n = 1000 时 0.588):生成器只学到了每个类别的一个粗略分布,再多生成也只是在重复它。
  • 真实的生成器不完美:细节模糊、带着伪影(分类器会把伪影当成线索,测试时它们不存在)。两者都有时远低于检索(0.449 vs 0.651)。

SDEdit(代码 04 演示 2,每类 200 张,把检索到的图片和生成的图片按 γ 混合):伪影强的生成器,准确率随 γ 单调下降(0.517 → 0.467 → 0.331);伪影弱的生成器,混一点几乎没影响(γ ≤ 0.75 时 0.508–0.519),完全合成才变差(0.431)。“合成的痕迹有多大害处”取决于生成器的质量;论文观察到的单调下降说明 Stable Diffusion 1.5 的痕迹不小。

诚实的说明:生成器的两类缺陷是我们用两个旋钮设定的,世界本身不能告诉你真实的生成器有多不完美。这个演示说明的是机制:生成器的信息上限是它的训练数据;它能”去噪”,但会饱和;它的缺陷直接变成训练数据的缺陷。论文的贡献是测量了真实的生成器落在哪个位置。


7. 一个统一的视角:合成数据能做什么、不能做什么(补充)

把本讲的方法放在一起:

合成数据在做什么例子信息从哪来主要风险
重新表述:同样的内容,更多样的形式WRAP、Nemotron-CC、Kimi K2 改写、EntiGraph 的”多样性”部分真实文档改写时写错;风格单一
在上下文里推理:把分散的信息连起来EntiGraph 的关系分析、Phi-3 的”改写成分步推理”真实文档 + 老师的推理能力推理出错
跨文档汇总 / 抽象SBP语料里的文档间相关性配错对、错误的抽象
注入老师的知识和能力Alpaca、Phi-1 的从零教科书、推理轨迹蒸馏(第 9 讲)老师模型学生的上限是老师;老师的幻觉
生成可验证的经验强化学习环境(第 9 讲)、Phi-4 的反向翻译 + 校验验证器 / 环境验证器的漏洞

几条贯穿的原则:

  1. 合成数据不创造信息,它重新组织信息。信息只能来自真实数据、老师模型、或者验证器 / 环境。EntiGraph 的上限是源图里”连得上”的关系,SBP 学不到语料里没有的事实,生成器的上限是它的训练集。
  2. 多样性是合成数据的核心价值。EntiGraph 赢在组合爆炸,Reformulation 赢在(体裁 × 受众),去掉多样性就退化成重复。
  3. 真实数据是锚。用合成数据替换真实数据会崩塌(尤其是长尾);混在一起用就不会。
  4. 永远和”检索 / 更多真实数据”比较。SBP 的神谕、Unmet Promise 的检索基线,都在回答同一个问题:合成数据比”直接去找更多真实数据”好在哪里?

8. 延伸与前沿 · Beyond the original lecture

本节是我补充的。

  • 更大规模的网页改写:Nemotron-CC(第 7 讲)把低质量数据改写成维基式、把高质量数据改写成多种形式;BeyondWeb、Recycling the Web(REWIRE)等工作研究怎样把本来要被过滤掉的文档”回收”成高质量数据。
  • 潜在思维(Latent Thoughts,Ruan et al. 2025):让模型补全”作者写这段文字时脑子里的推理过程”,把它和原文一起训练——合成的不是新文档,而是文档背后的思考。下一讲的”megadocs”就受到它的启发。
  • 合成数据和算力:下一讲会看到,在数据有限、算力充足时,合成数据是一个可以持续投入算力的”杠杆”,而且和集成等其他方法可以叠加。
  • 合成数据的污染和法律问题:用别人的模型输出训练自己的模型,受模型使用条款的约束(第 19 讲);合成数据可能把评测题”改写”进训练集(第 14 讲)。
  • AI 生成的内容进入网页:Shumailov 的担心在现实中正在发生——未来的 Common Crawl 里会有越来越多的 AI 生成文本。区分人写的和 AI 生成的数据、保留”AI 之前”的数据快照,可能变得越来越重要。

9. 小结 · Summary

  1. 为什么需要合成数据:高质量数据有限;长尾知识在数据里很稀疏,模型需要很多种表述才能学会一条事实;后训练需要现成数据里没有的格式。
  2. 合成后训练主要是能力蒸馏(Alpaca、Sky-T1、OpenThoughts、Kimi K2);LIMA、s1 说明能力已经在预训练模型里。
  3. EntiGraph:抽实体、分析实体对 / 三元组的关系,从 130 万 token 生成 4.55 亿 token,闭卷准确率 39.49% → 56.22%,对数线性扩展;价值来自组合带来的多样性和老师在上下文里的推理;和 RAG 互补。
  4. 合成预训练:WRAP 改写网页(约 3 倍加速);Phi 系列从”从零写教科书”到”以真实数据为种子”到”预训练规模的后训练式数据”;SBP 不用老师,从文档对学 p(d2∣d1)p(d_2 \mid d_1),拿到神谕 42%–58% 的提升。
  5. 模型崩塌的条件是用合成数据替换真实数据;累积或混入真实数据就能避免。尾部最先消失。
  6. 锚定与检索:合成数据的知识上限是它的信息来源;从零生成会教出幻觉,改写真实文档不会;在图像上,检索真实图片和合成一样好或更好——检索应该是标准基线。

10. 常见误区 · Common pitfalls

  1. “合成数据就是让模型自己生成更多数据。” 大多数成功的合成数据都有一个外部的信息来源:真实文档、更强的老师、或者验证器(§7)。
  2. “改写就够了。” 改写的多样性有限,也不增加原文没写出来的知识(代码 01)。
  3. “合成数据越多越好。” 改写在小规模上就到顶;生成器的数据会饱和(代码 01、04);幻觉会累积。
  4. “合成数据一定会导致模型崩塌。” 崩塌的条件是替换真实数据(代码 03 演示 1、2)。
  5. “老师知道的,学生就该学。” 老师不知道的东西它会编;从零生成的数据在长尾上教出幻觉(代码 03 演示 3)。
  6. “合成数据比真实数据好,所以不需要真实数据。” WRAP 和 Phi-4 都发现只用合成数据更差。
  7. “合成数据的效果要和不用合成数据比。” 应该和”检索更多真实数据”比(Unmet Promise),和”同样的算力重复真实数据”比(SBP 的算力匹配)。

11. 练习 · Exercises

练习 1(重复的账) 按 §4.1 的例子:10T token 的训练,GitHub 占 20%(独特 token 0.5T),网页占 50%(独特 token 5T)。(a) 如果把 GitHub 的比例提高到 30%,它要被看几遍?(b) 你希望 GitHub 最多看 2 遍,但仍然占 20%。需要多少”新的独特 token”?如果用改写,每篇代码改写 2 次、每次改写都算作新的表述,需要多少原始代码?

参考答案

(a) 10T × 30% = 3T,3T / 0.5T = 6 遍。

(b) 2T / 2 = 1T 独特 token,需要再增加 0.5T。每篇代码改写 2 次,原始的 0.5T 就能产生 1T 改写数据,加上原文共 1.5T”不同表述”的 token——足够了(甚至只需要改写一次)。但要注意:改写的”新表述”不等于新知识(代码 01 的改写曲线、代码 02 的”语料里没有的事实”),它解决的是”重复”的问题,不是”信息量”的问题;改写也会引入错误。

练习 2(EntiGraph 的组合爆炸) QuALITY 的源语料约 130 万 token、265 本书,EntiGraph 生成了 4.55 亿 token。(a) 平均每本书生成了多少 token?是原书的多少倍?(b) 如果每段关系分析约 500 token,每本书需要多少段?(c) 只用实体对,每本书至少要有多少个实体?同时用实体对和三元组呢?

参考答案

(a) 4.55×108/265≈1.72×1064.55 \times 10^8 / 265 \approx 1.72 \times 10^6 token;原书平均约 1.3×106/265≈49001.3 \times 10^6 / 265 \approx 4900 token,所以约 350 倍。

(b) 1.72×106/500≈34001.72 \times 10^6 / 500 \approx 3400 段。

(c) 只用实体对:(n2)≥3400\binom{n}{2} \ge 3400,n≥83n \ge 83。加上三元组:(n2)+(n3)≥3400\binom{n}{2} + \binom{n}{3} \ge 3400,n=28n = 28 时 378+3276=3654378 + 3276 = 3654,够了。组合数随实体数的立方增长——这就是 EntiGraph 能”长”出几百倍数据的原因。同一对实体也可以用温度采样生成多段不同的分析。

练习 3(尾巴为什么先消失) 代码 03 演示 1 里,5000 个词按 Zipf(1.1) 分布(归一化常数约 6.32),每代 2 万个样本。(a) 排名第 1000 的词在一代里一次都没被抽到的概率是多少?排名第 100 的呢?(b) “替换”时,一个词一旦没被抽到会怎样?(c) 解释为什么第 0 代(真实数据)就只覆盖了 52% 的词。

参考答案

(a) 排名 rr 的概率 pr=r−1.1/6.32p_r = r^{-1.1}/6.32。r=1000r = 1000:p≈7.9×10−5p \approx 7.9 \times 10^{-5},期望出现 20000p≈1.620000 p \approx 1.6 次,一次都没出现的概率 ≈e−1.6≈0.20\approx e^{-1.6} \approx 0.20。r=100r = 100:p≈10−3p \approx 10^{-3},期望约 20 次,没出现的概率 ≈e−20≈2×10−9\approx e^{-20} \approx 2 \times 10^{-9},几乎不可能。

(b) 它在模型里的概率变成 0,以后每一代都生成不出来——丢失是不可逆的。每一代都有一批稀有的词碰巧没被抽到,所以覆盖率单调下降。

(c) 排名 5000 的词期望只出现 0.27 次,大部分长尾词在 2 万个样本里一次都没出现:15000∑r(1−e−20000pr)≈0.52\frac{1}{5000}\sum_r (1 - e^{-20000 p_r}) \approx 0.52。这说明崩塌放大的是本来就存在的采样误差:有限的真实数据已经漏掉了很多长尾,合成数据让它们漏得更多。

练习 4(SBP 的算法) (a) 用 SBP 论文表 1 的数字(200B 规模:基线问答平均 47.66,SBP +2.32,神谕 +5.54)算 SBP 拿到了神谕多少比例的提升。(b) 用代码 02 演示 1 的数字算同样的比例,分别对”全部事实”和”语料里有的事实”。(c) 为什么我们世界里”全部事实”的比例比论文低得多?

参考答案

(a) 2.32/5.54≈42%2.32 / 5.54 \approx 42\%。

(b) 全部:(0.664−0.559)/(0.945−0.559)≈27%(0.664 - 0.559)/(0.945 - 0.559) \approx 27\%;语料里有的:(0.859−0.703)/(0.959−0.703)≈61%(0.859 - 0.703)/(0.959 - 0.703) \approx 61\%。

(c) 我们的评测只有”事实”,而 32% 的事实根本不在真实语料里——神谕的 20 倍新数据能覆盖它们,SBP 永远覆盖不了。论文的评测(问答准确率、困惑度)还衡量语言建模的一般能力,那部分收益不依赖”新的事实”,SBP 的合成文本也能提供。所以”拿到神谕多少比例的提升”很依赖评测衡量的是什么。

练习 5(更博学的老师) 把代码 03 里 teacher_knowledge 的”冷门概念老师知道的比例”从 0.2 提高到 0.6(中等热度从 0.6 提高到 0.8),重新运行演示 3。先预测:只用从零写的教科书会怎样?三种数据混合会怎样?

参考答案(实际运行结果,在代码副本里运行)

只用教科书从 0.545 升到 0.775(冷门概念 0.392 → 0.704),超过了只用改写(0.730);但仍然有 12.0% 的题自信地答错。三种数据混合(真实 5 遍 + 改写 7.5× + 教科书 7.5×)最好:0.829,自信地答错 1.6%。教科书 + 真实是 0.801(3.3%)。

启示:从零生成的合成数据有多大价值,取决于老师知道多少——老师越博学,它的数据越有用;但只要老师有不知道的东西,就有幻觉,混入真实数据和改写数据能把幻觉压下去。这也是为什么”更强的老师”一直是合成数据进步的主要来源之一(Phi-4 用 GPT-4 系列),而 SBP 想回答的问题是:没有更强的老师时怎么办。

练习 6(讨论:什么时候生成比检索好) Unmet Promise 的结论是检索和合成一样好或更好。举出至少三种你认为合成可能比检索更好的情况,并说明你会怎样验证。

参考答案(要点)
  • 上游数据里根本没有:组合式的场景(“一只戴着潜水镜的长颈鹿”)、罕见的视角或光照、隐私原因不能用的真实数据(医疗影像)。检索不到的东西,生成器也许能通过组合已知的概念生成——但要验证生成的是不是真的”对”。
  • 需要精确控制标注:分割掩码、深度、姿态这类稠密标注,渲染或生成时可以免费得到,检索的真实图片要人工标注。
  • 生成器训练时用了检索不到的数据:如果生成器的训练集比你能检索的数据大得多、或者它经过了人类反馈的微调,“生成器的信息上限是它的训练数据”仍然成立,但这个上限比你手里的检索池高。
  • 代码 04 的观察:小数据量时,“完美的生成器”相当于对上游数据去噪,可以比检索好。

验证的方法就是论文的方法:同样数量的检索数据作为基线;对合成数据做 SDEdit 式的消融,分开”内容”和”伪影”的影响;在真实的测试集上评估。


12. 延伸阅读 · Further reading

原课阅读与讲座

  • Yang et al., Synthetic continued pretraining(ICLR 2025):arXiv:2409.07431。
  • Yang et al., Synthetic bootstrapped pretraining(ICLR 2026):arXiv:2509.15248。
  • Maini et al., Rephrasing the Web: A Recipe for Compute and Data-Efficient Language Modeling(ACL 2024):arXiv:2401.16380。
  • Abdin et al., Phi-4 Technical Report(2024):arXiv:2412.08905。
  • Geng et al., The Unmet Promise of Synthetic Training Images: Using Retrieved Real Images Performs Better(2024):arXiv:2406.05184。

slides 里引用的工作

  • Gunasekar et al., Textbooks Are All You Need(Phi-1,2023)。
  • Kimi Team, Kimi K2: Open Agentic Intelligence(2025)。
  • Lin et al., Learning Facts at Scale with Active Reading(2025)。
  • Hao et al., Reformulation for Pretraining Data Augmentation(2025)。
  • Zhou et al., LIMA: Less Is More for Alignment(2023);Muennighoff et al., s1: Simple test-time scaling(2025)。

本讲补充

  • Allen-Zhu & Li, Physics of Language Models: Part 3.1, Knowledge Storage and Extraction(2023)。
  • Shumailov et al., AI models collapse when trained on recursively generated data(Nature 2024)。
  • Gerstgrasser et al., Is Model Collapse Inevitable? Breaking the Curse of Recursion by Accumulating Real and Synthetic Data(2024):arXiv:2404.01413。
  • Dohmatob et al., A Tale of Tails: Model Collapse as a Change of Scaling Laws(2024)。

和本目录其他课程的联系


13. 下一讲预告 · Next lecture

第 10、11 讲都碰到了同一个约束:数据有限。混合只能重新分配有限的数据,合成数据只能重新组织已有的信息。那么,数据真的会用完吗?什么时候用完?到那时,多出来的算力该怎么花?

第 12 讲:数据扩展的极限。 Epoch AI 对人类文本存量的估计(大约 2028 年用完?);客座讲者 Suhas Kotha 的 Pre-training under infinite compute:数据固定、算力无限时,更强的正则化、集成、蒸馏能把数据效率提高 5 倍以上;以及 token 级的数据过滤——不是丢掉整篇文档,而是只去掉其中某些 token,用来”塑造”模型的能力。

← 返回课程目录