AI 基建
0%
第三部分 · 后训练 · 第 23 章

合成数据与自我改进

作者Changkun Ou
阅读时长约 14 分钟

合成数据有用,是因为生成成本低。危险也来自同一个原因:模型可以迅速生成数百万条看似合理的记录,远早于任何人弄清它们是否正确、是否足够多样,又是否合法可用。因此,工程上的核心问题并不是怎样生成数据,而是什么证据足以让一条生成记录安全地进入训练。

自我改进也需要同样谨慎地定义。模型用自己写的文本训练,并不等于它已经改善。所谓改善,是指后续模型在独立评测上取得改善。从生成文本到证明改善之间,还隔着任务来源、候选生成器、接纳信号、更新规则与迭代安排。其中任何一项都可能提供有效的优化压力,也可能悄然破坏整个回路。

2026-06-21T23:30:57.733551 image/svg+xml Matplotlib v3.11.0, https://matplotlib.org/ 0 1 2 3 4 5 6 自训练轮次 0.3 0.4 0.5 0.6 0.7 0.8 留出质量 过滤后的循环 未过滤循环
图 23.1. 多轮训练示意图。选择性回路可能提升留出质量,而不加区分的递归替换可能使质量下降。两条曲线都只是示意,并非实测结果。

合成数据描述来源,不描述算法

只要一条记录中有实质内容由模型或模拟器生成,它就是合成记录。这个定义说明的是记录从哪里来,而不是它将怎样使用。同一条生成回答可以成为 SFT 目标、偏好对的一侧、强化学习的 rollout、评测候选,也可以最终完全不用。

如今被归入合成数据的研究脉络有好几条。Hinton、Vinyals 与 Dean 在 2015 年系统化了知识蒸馏,让学生模型学习教师模型软化后的输出分布 (Hinton et al. 2015)。后来的 STaR 选择答案可核查的模型生成推理过程,并重复这一流程 (Zelikman et al. 2022)。Constitutional AI 使用模型生成的批判、修订和偏好 (Bai et al. 2022)。Self-Instruct 则生成指令、输入与回答,过滤无效或过于相似的样本,再用余下数据微调 (Wang et al. 2023)。这些方法彼此相关,却不是同一条历史阶梯上的不同阶段。

LIMA 提供了一项重要但范围较窄的结果。在它的实验环境中,1,000 条经过仔细筛选的示范便能带来很强的指令遵循表现 (Zhou et al. 2023)。然而,LIMA 并没有测试自训练回路。它支持的结论是精心选择数据很重要,高质量示范很有价值;它不能证明模型生成数据或 best-of-nn 筛选一定有效。

设计评审时,最好把六个问题分开:

设计选择 常见选项 可能出错之处
提示来源 人工语料、模板、环境、教师、当前模型 任务范围狭窄、基准泄漏、遗漏罕见情形
回答生成器 教师、当前策略、旧策略、搜索、模型混合 错误彼此相关、候选支持不足、行为过时
传递的信号 软词元分布、回答、排序、标量奖励、接纳标记 信号可能丢失不确定性,或奖励捷径
接纳信号 不筛选、人工评审、习得评判者、确定性检查器 错误接纳、错误拒绝、评估者偏差
更新规则 SFT、蒸馏损失、偏好优化、策略梯度强化学习 合适的信号仍可能被错误的目标函数使用
迭代安排 单轮、定期刷新、回放、自我博弈 反馈错误与分布漂移可能逐轮累积

这些列中的选择可以自由组合。教师可以生成候选,由奖励模型排序,再让较小的学生模型用 SFT 学习。当前策略也可以同时生成问题与回答,由执行器给强化学习提供奖励。把两条流水线都称为「合成训练」,掩盖了真正决定系统行为的区别。

source 任务与数据来源 人类·教师·模型 环境 generate 生成候选 版本化模型与采样方案 source->generate gate 接纳流水线 检查·评判者·抽样人工审计 generate->gate mix 经筛选的训练混合 真实数据锚点与合成记录 gate->mix update 更新模型 SFT·偏好优化·RL mix->update holdout 独立于筛选的 验证门槛 update->holdout decision 发布、修订、停止, 或开始下一轮 holdout->decision decision->generate
图 23.2. 一条可审计的合成数据回路。独立于筛选的验证门槛只评估更新结果,不向生成与接纳阶段提供样本、奖励或阈值。

采样创造机会,不创造正确性

假设提示 xx 有一组可接受回答。令 qθ(yx)q_\theta(y \mid x) 表示生成器给回答 yy 的概率,z(x,y){0,1}z(x,y) \in \{0,1\} 表示独立理想评判者是否认为该回答可接受。单次采样的成功概率是

px=Pryqθ(x)[z(x,y)=1].p_x = \Pr_{y \sim q_\theta(\cdot \mid x)}[z(x,y)=1].

如果 nn 个候选是在给定 xx 后彼此独立、且成功概率都为 pxp_x 的采样,那么至少出现一个可接受回答的概率,也就是候选覆盖率,为

Cn(x)=1(1px)n.C_n(x) = 1 - (1 - p_x)^n.

这里,xx 是提示,yy 是候选回答,θ\theta 表示生成器参数,qθq_\theta 是回答分布,zz 是独立的可接受性检验,pxp_x 是单次成功概率,nn 是采样次数,Cn(x)C_n(x) 是最终覆盖率。这个公式描述的是独立采样假设下出现可接受回答的机会。它并不表示实际选择器一定能找到它,也不表示样本真的相互独立,更不表示增加采样必然带来很多新的多样性。

import numpy as np
import matplotlib.pyplot as plt

counts = np.arange(1, 21)
for p in (0.1, 0.3, 0.5):
    coverage = 1 - (1 - p) ** counts
    plt.plot(counts, coverage, marker="o", markersize=3, label=f"p={p}")

plt.xlabel("独立候选数 n")
plt.ylabel("候选覆盖率 C_n")
plt.title("独立采样下的理想覆盖率")
plt.ylim(0, 1.02)
plt.legend()
plt.show()

print("当 p=0.10、n=20 时,候选覆盖率为",
      round(1 - (1 - 0.10) ** 20, 2))

现在把理想评判者换成实际过滤器 z^\hat z。令 αx\alpha_x 表示它在提示 xx 上的真阳性率,βx\beta_x 表示假阳性率。它的选择精确率

Pr[z=1z^=1,x]=αxpxαxpx+βx(1px).\Pr[z=1 \mid \hat z=1,x] = \frac{\alpha_x p_x}{\alpha_x p_x + \beta_x(1-p_x)}.

在这个式子里,z^=1\hat z=1 表示过滤器接纳回答,αx=Pr[z^=1z=1,x]\alpha_x=\Pr[\hat z=1\mid z=1,x]βx=Pr[z^=1z=0,x]\beta_x=\Pr[\hat z=1\mid z=0,x] 是假阳性率。真正可接受的样本很少时,即使 βx\beta_x 很小,错误回答也可能污染接纳集。假阴性会造成相反的问题:过滤器丢掉正确但不熟悉的回答,使训练分布越来越窄。

筛选只是重新加权生成器,并不会凭空创造正确性。若 a(x,y)[0,1]a(x,y) \in [0,1] 表示流水线保留回答 yy 的概率,那么保留分布

q~θ(yx)=qθ(yx)a(x,y)Zθ(x),Zθ(x)=Eyqθ(x)[a(x,y)].\widetilde q_\theta(y \mid x) = \frac{q_\theta(y \mid x)a(x,y)}{Z_\theta(x)}, \qquad Z_\theta(x)=\mathbb{E}_{y\sim q_\theta(\cdot\mid x)}[a(x,y)].

其中,aa 汇总了全部接纳阶段,Zθ(x)Z_\theta(x) 是提示 xx 的总体接纳概率,q~θ\widetilde q_\theta 是归一化后的保留回答分布。只有当生成器偶尔能产生有用回答,而且接纳流水线能够可靠地区分它们时,增加采样才有帮助。

五种生成数据的用法并不相同

教师蒸馏

在经典知识蒸馏中,固定教师提供软化后的词元分布,学生学习匹配这份分布。在回答蒸馏或序列蒸馏中,教师改为解码完整文本,学生再用普通的词元级似然学习这些硬目标 (Kim and Rush 2016)。后一种形式在语言模型中很常见,却丢掉了教师表达的大部分不确定性。

教师通常是回答生成器,而不是候选生成之后才介入的评判者。教师输出可以传递格式、风格、领域行为和推理模式,也会传递拒绝模式、系统性错误与覆盖缺口。没有一条普适定理要求学生在所有下游评测中都低于教师,学生在某些蒸馏环境中超过教师 (Furlanello et al. 2018)。更准确的限制是:如果教师从未产生某类有用输出,那么只用教师样本就没有直接证据去纠正这处盲点。

合成任务与示范

模型不仅能生成回答,也能生成提示。Self-Instruct 从种子任务开始,让模型创造新指令和实例,移除无效或相似的项目,再为保留任务生成答案 (Wang et al. 2023)。这种方法可以低成本扩展小型种子集,但哪些任务能够出现,仍受生成器影响。如果流水线只是生成数千个熟悉任务的改写,那么行数增加了,覆盖范围却没有扩大。

因此,任务合成需要分别检查提示的新颖性、答案质量、难度,以及与目标人群的相关性。提示生成与回答生成也应分别记录来源,否则模型写出的错误前提可能被误认为一道困难但答案有效的任务。

经过筛选的自训练

经过筛选的自训练会采样候选,给它们评分或进行核查,再对选出的回答执行 SFT。STaR 根据答案正确性选择生成的推理过程,然后迭代训练 (Zelikman et al. 2022)。RAFT 为每个提示采样多个候选,保留奖励排名最高的回答,并对筛选集微调 (Dong et al. 2023)。best-of-nn 推断在选出回答后便结束;拒绝采样微调则把选出的回答固化成训练数据,并更新模型。

这里必须记录策略来源。只有当前学习器生成候选时,候选收集在当时才是同策略的。RAFT 也可以使用单独的生成器,而且任何保存下来的筛选数据都会随着学习器变化而过时。把所有筛选后的 SFT 数据都称为「同策略」会混淆收集来源与更新算法。除非同时保留胜者与败者供偏好目标使用,否则筛选记录只是示范,并不是偏好对。

AI 反馈

AI 评判者把筛选扩展到缺少确定性检查器的属性,例如语气、有用性或是否遵循成文原则。Constitutional AI 有两种不同用法:监督阶段生成批判与修订,再对修订后的回答微调;RLAIF 阶段生成 AI 偏好,训练偏好模型,并把这个模型用作强化学习奖励 (Bai et al. 2022)。该实验减少了无害性标注所需的人力,却没有移除人类编写的原则、提示,也没有移除所有关于有用性的人工监督。

覆盖范围更广,代价是判断只能近似。习得评判者可能有位置偏差、冗长偏差、自我偏好与领域偏差。对代理信号优化得越强,代理分数可能继续提高,独立指标反而下降 (Gao et al. 2023)。因此,与构造数据时所用评判者一致,不能证明训练后的模型真的改善了。

验证器引导的学习与自我博弈

确定性检查器可以提供比习得评判者更强的证据,但只针对检查器实际编码的属性。令 C(x,y){0,1}C(x,y) \in \{0,1\} 表示回答 yy 是否满足提示 xx 的预期要求,V(x,y){0,1}V(x,y) \in \{0,1\} 表示已经实现的验证器是否接纳它。验证器满足可靠性时,

V(x,y)=1C(x,y)=1.V(x,y)=1 \Longrightarrow C(x,y)=1.

这里的完备性则表示

C(x,y)=1V(x,y)=1.C(x,y)=1 \Longrightarrow V(x,y)=1.

可靠性防止错误回答被接纳,完备性防止有效回答被丢弃。单元测试、答案提取器、证明陈述与沙箱执行器,都可能错误表达原本的要求。例如,EvalPlus 扩充了 HumanEval 的测试,并淘汰了一些原测试曾经接纳的程序 (Liu et al. 2023)。最终数字正确,也不能证明生成推理中的每一步都正确。

学习得到的过程奖励模型仍是代理。Let's Verify Step by Step 训练了结果奖励模型和过程奖励模型,其中过程模型使用 800,000 个人工步骤级标签,并比较了二者在 best-of-nn 选择中的表现。这个实验并没有用强化学习训练生成器 (Lightman et al. 2024)。

RLVR 是另一种更新方式。它把自动奖励直接用于策略 rollout,而不一定先把通过的轨迹保存下来做 SFT。DeepSeek-R1-Zero 从预训练基座开始强化学习,没有监督式推理示范,但仍使用经过筛选的训练问题,以及基于规则的准确率与格式奖励。完整的 DeepSeek-R1 流程后来还组合了冷启动数据、强化学习、拒绝采样、SFT 和另一个强化学习阶段 (Guo et al. 2025)。这项工作为验证器引导的强化学习提供了证据,却不能证明所有此类系统都是生成、过滤、SFT 的数据飞轮。

自我博弈改变的是任务分布由谁生成。Absolute Zero 让同一个预训练策略分别扮演出题者和解题者,仍依赖人工设计的任务模式与代码执行器。它所说的「零数据」是后训练阶段没有外部任务数据,不等于没有预训练数据或没有人工设计 (Zhao et al. 2025)。R-Zero 则共同训练 Challenger 与 Solver,并用多数票产生伪标签。这些标签并不是精确验证器,而且论文报告多轮训练后性能下降 (Huang et al. 2025)。两套系统不能只因都会生成课程就被视为同一种方法。

迭代会改变数据分布

只使用一轮合成数据,与递归替换训练数据,风险并不相同。令 rr 表示训练轮次,MrM_r 表示第 rr 轮模型,SrS_r 表示由 MrM_r 生成的数据,RR 表示保留的真实数据或经过独立核查的数据。以下三种模式经常被混为一谈:

模式 下一轮数据 运行含义
替换模式 Dr+1=SrD_{r+1}=S_r 每一代生成数据都替换此前来源
固定锚点模式 qr+1=αpR+(1α)pSrq_{r+1}=\alpha p_R+(1-\alpha)p_{S_r} 每个训练批次都保留预先选定的真实数据采样权重
累积模式 Dr+1=RS0SrD_{r+1}=R\cup S_0\cup\cdots\cup S_r 早期真实记录和各轮合成记录都继续可用

这里,Dr+1D_{r+1} 是下一轮训练数据集,qr+1q_{r+1} 是它的采样分布,pRp_RpSrp_{S_r} 分别表示真实数据与当轮合成数据上的分布,α[0,1]\alpha\in[0,1] 是采样真实数据的概率。实际采用累积模式时仍须写明权重,因为集合并集并不能决定每种来源的采样频率。

Shumailov 等人证明,不加区分的递归训练会造成模型崩溃。原始分布的罕见部分先消失,随后才出现更广泛的退化 (Shumailov et al. 2024)。这项结果不能缩写成「合成数据会导致崩溃」。Gerstgrasser 等人在替换模式中也观察到崩溃,却在其研究的累积模式中避免了崩溃 (Gerstgrasser et al. 2024)。这些是取决于训练模式的结果,不是普适的安全混合比例。真实数据锚点有助于保留当前生成器无法重建的证据,尤其是罕见模式。

递归回路还有一些会被总体质量掩盖的失效方式:

失效 早期征兆 必需检查
错误接纳 回路内部得分提高,独立得分停滞 按切片审计接纳集精确率
错误拒绝 不常见但有效的回答消失 测量罕见有效样本的召回率
多样性损失 措辞、语法或解题路径反复出现 跟踪语义聚类与长尾覆盖 (Guo et al. 2024)
基准污染 留出集分数异常陡增 去除精确重复、近似重复与语义重复 (Yang et al. 2023)
课程漂移 生成任务越来越简单或格式错误 对照固定任务规格比较难度与有效性
递归依赖 少数生成器支配大量后代样本 记录父记录 ID 与递归深度

建立可审计的回路

生产中的基本单位不是「合成数据集」,而是带有接纳记录和退出决策的版本化轮次。最小实现可以写成:

输入:冻结的任务规格、来源混合 R、生成器 M_r、接纳流水线 A_r
1. 从获批来源创建提示,并排除私有评测材料。
2. 生成候选,记录模型、模板、检索、解码与随机种子版本。
3. 在质量过滤之前,先去重并去污染提示与回答。
4. 分开执行确定性检查、习得评判者与策略规则,分别作出决定。
5. 在分层独立审计中估计假阳性率与假阴性率。
6. 用接纳记录构造 D_(r+1),并保留经过刻意设计的真实数据锚点。
7. 按声明的更新规则训练候选模型 M_(r+1)。
8. 在从未向生成器和选择器开放的验证门槛上比较 M_(r+1) 与 M_r。
9. 只有能力、安全、多样性与污染门槛全部通过时才发布。
10. 一旦越过任何预先声明的回滚阈值,就停止回路并隔离该轮数据。

这里,RRMrM_rDr+1D_{r+1} 沿用上文定义,ArA_r 是第 rr 轮的完整接纳流水线。逐行来源记录至少应包含:来源与许可证、生成器检查点、提示模板、检索语料库、解码参数、随机种子、父记录、递归深度、评判者或验证器版本、阈值、变换、去污染结果,以及接纳原因。缺少这条血缘链,后续发现的错误便无法追踪或删除。

作为验证门槛的独立留出集必须位于数据构造之外。它不能出现在生成提示、检索、评判者训练、验证器构造或接纳阈值调优中。它可以决定是否发布和何时提前停止,因此还应另留一份使用频率更低的私有最终测试集。验证评估者的失效方式应与选择器不同,因为选择和认证都使用同一个评判者,只能测到自洽性。

每一轮至少跟踪四组指标:

指标组 示例
数据构成 真实与合成比例、递归深度直方图、来源记录完整率
过滤器行为 接纳率、假阳性率、假阴性率、按切片统计的选择精确率
覆盖范围 任务、语言、难度、罕见类别与语义聚类覆盖
外部结果 独立能力和安全变化、污染率、选择器与评估者分歧

还要预先声明停止与回滚阈值。如果外部得分下降、长尾覆盖收缩,或选择器分歧超过限值,就应停止回路,隔离新记录,回退检查点,并检查被错误接纳的样本与遭错误拒绝的有效样本,再决定是否生成下一轮。

自我改进能证明什么,不能证明什么

当有用回答已经偶尔出现时,筛选训练可以让这种行为更可靠。任务生成可以扩充课程。强化学习可能发现并未作为示范文本出现的策略。蒸馏可以把行为传到另一个模型。这些观察都不能证明自主改进可以无限延续。

争议所在

迭代使用模型生成数据究竟能把能力推进多远,目前仍没有定论。固定教师限制了模仿可直接获得的证据,却不意味着学生所有下游得分都必然低于教师。可靠的验证器可以在它所检查的属性上支持超越示范者的改善,但验证规格和任务分布仍构成边界。习得评判者可以覆盖更广的行为,却引入一个可能在优化中偏离人类判断的代理。因此,自我改进必须在独立留出集上跨轮次取得改善,不能只看构造训练集的选择器是否给出更高分。

下层约束

可核查程度决定回路有多少部分能够安全自动化。当规格完整且检查器可靠时,形式化证明、程序执行和答案核查可以提供很强的证据。开放式的有用性、品味与社会判断通常需要习得评估者或人。上层训练方法无法让下层证据变得比它本身更强。证据不完整时,系统仍须保留人工审计、独立测试和运行时控制。

真正需要问的并不是数据来自人还是模型,而是记录中的哪些部分是合成的,哪些独立证据准许它进入训练,它代表什么分布,以及什么条件会叫停下一轮。能够回答这些问题的回路是一条数据流水线,不能回答的回路只是自动重复自己。

延伸阅读

  • Bai et al., “Constitutional AI: Harmlessness from AI Feedback” (把性情挪进模型), 2022. arXiv:2212.08073
    Constitutional AI 通过成文原则、自我批判、修订与 AI 反馈,训练无害但不过度回避的助手行为。
  • Zhou et al., “LIMA: Less Is More for Alignment,” 2023. arXiv:2305.11206
    LIMA 表明,仅用 1,000 条精心筛选的提示-回复对对 65B LLaMa 模型进行监督微调(无需 RLHF)即可实现强对齐效果,支持了"表层对齐假说"。
  • Dong et al., “RAFT: Reward rAnked FineTuning for Generative Foundation Model Alignment” (拒绝采样微调), 2023. arXiv:2304.06767
    RAFT(奖励排序微调)通过迭代采样模型输出、用奖励模型评分并仅对高分子集做监督微调,以稳定的方式替代 PPO 完成大语言模型与扩散模型的对齐。
  • Guo et al., “DeepSeek-R1 incentivizes reasoning in LLMs through reinforcement learning” (通过大规模 RL 实现推理,从纯 RL 中涌现), 2025. arXiv:2501.12948
    DeepSeek-R1 展示了大规模可验证奖励强化学习能引出长推理行为;R1-Zero 不用监督冷启动直接 RL,R1 则加入多阶段训练以改善可读性和稳定性。
  • Lightman et al., “Let's Verify Step by Step” (作为逐步验证的过程监督), 2023. arXiv:2305.20050
    《Let's Verify Step by Step》在固定生成器的 MATH Best-of-N 选择中比较结果监督与过程监督,并发布约 80 万条人工步骤标签的 PRM800K。
  • Zhao et al., “Absolute Zero: Reinforced Self-play Reasoning with Zero Data” (同一个策略在代码执行器验证下自行提出并解决任务), 2025. arXiv:2505.03335
    Absolute Zero 让同一个模型自己提出最有学习价值的任务并求解,两个角色都由代码执行器核查,在不用任何外部数据的情况下取得强的代码与数学推理表现。
  • Huang et al., “R-Zero: Self-Evolving Reasoning LLM from Zero Data” (在没有预先存在的任务与标签数据集时,让挑战者模型和求解器模型共同演化), 2025. arXiv:2508.05004
    R-Zero 从同一个基座初始化出题的 Challenger 与答题的 Solver 并让二者共同演化:Challenger 不断提出更难的任务,Solver 学着解决,从零外部数据生成自己的课程。
  • Shumailov et al., “AI models collapse when trained on recursively generated data” (替换会崩溃,累积保持有界), 2024. nature.com
    在大语言模型自身合成输出上递归训练会导致模型崩塌,跨代累积后输出分布退化为噪声。

评论

登录后评论