04. 合成数据的主流生成方式有哪些?有哪些风险?

整理合成数据的生成方式、优势与核心风险。

简单回答

合成数据是指用模型生成的数据来训练模型,主要分三类:用强模型直接生成指令和回答(蒸馏式)、用小模型自我生成再过滤(Self-Instruct/Evol-Instruct 类)、以及基于种子数据做变换和扩充。合成数据的优势是成本低、可控性强;核心风险是质量天花板(合成数据难以超越生成它的模型)、以及模型塌缩(Model Collapse)——如果训练数据全是合成数据,多代之后模型能力会退化。

详细解答

为什么合成数据越来越重要

高质量人工标注数据的获取成本非常高。一条好的 SFT 样本,从设计指令、人工书写回答到质检,可能需要花费几十元人民币。对于数学推理、代码生成这类需要专业能力的数据,标注成本更高。

合成数据的出现让这个成本降低了几个数量级。GPT-4 或 Claude 3.5 Sonnet 这样的强模型,生成一条高质量的回答,成本可能不到一分钱。Alpaca、Vicuna、WizardLM 等早期开源模型就是这条路走出来的——用 ChatGPT 的输出来训练 LLaMA,在当时效果出奇地好。

Phi 系列是合成数据用到极致的例子。Phi-1 用的几乎全是 GPT-4 生成的"教科书质量"的合成数据,1.3B 参数在代码 benchmark 上打败了很多更大的模型。

主流生成方式

蒸馏式生成是最直接的方法:用一个强大的教师模型(GPT-4、Claude)直接生成指令-回答对。通常的做法是先设计一批种子任务(或者直接用真实用户 query),让强模型针对这些任务生成高质量回答。Alpaca 就是用这个思路,用 GPT-3.5 生成了 52K 条指令数据,微调 LLaMA 得到了当时效果不错的对话模型。这种方式的天花板是教师模型的能力,学生模型很难超过老师。

Self-Instruct 是让模型自己生成指令数据。从一批人工写的种子指令出发,让模型生成更多指令,再生成对应的输出,然后做过滤去掉低质量的。这个过程可以迭代:用生成的数据微调模型,再用微调后的模型生成更多数据,形成循环。核心难点是保证生成数据的多样性,避免模型反复生成相似的指令。

Evol-Instruct(WizardLM 的做法)是在 Self-Instruct 基础上的改进。通过给模型一个"进化"的提示词(比如"把这道题变得更难"、"加上更多约束"、"把这个问题拆成多个子问题"),把简单的种子指令变成更复杂、更多样的指令。这样生成的数据难度分布更丰富,训练出来的模型在复杂指令跟随上表现更好。

基于规则的数据扩充是另一类方法,不依赖模型生成,而是通过规则变换种子数据。比如把一道数学题里的数字换掉、把代码里的变量名替换、把英文翻译成中文等。这类方法生成的数据质量很可控,但多样性有限。

从自然过程中提取也算一类合成数据生成方式:比如用代码执行结果来自动验证生成的代码是否正确(过程验证),用数学解题器来验证推理步骤。DeepSeek-R1 的技术路线里就用了大量基于验证器的过滤——让模型生成多个解答,只有执行结果正确的才保留作为训练数据。

合成数据的核心风险

Model Collapse(模型塌缩) 是最受关注的风险。这个问题是:如果用合成数据训练的模型去生成更多合成数据,再用这些数据训练新模型,反复迭代,模型的输出分布会越来越窄——边缘案例、低频内容、多样性会逐渐消失,模型"退化"成只会输出几种常见模式。从信息论角度理解就是:每一轮生成都是对原始数据分布的有损压缩,多次压缩之后信息量越来越少。缓解方法是每一轮迭代都保留一定比例的真实人类数据混合训练。

质量天花板:合成数据的质量上限是生成它的模型。用 GPT-4 生成的数据训练出来的模型,在 GPT-4 擅长的任务上可以接近 GPT-4,但很难超越。要突破这个上限,需要引入外部验证机制(比如代码执行器、数学验证器),在模型无法自我评判的任务上提供客观的质量信号。

版权和合规风险:用某些商业模型的输出来训练自己的模型,可能违反该模型的使用条款(比如 OpenAI 的 ToS 明确禁止用其输出来训练竞争性模型)。这在合规要求严格的场景下是真实存在的法律风险,不能忽视。

偏差放大:强模型本身有偏见(比如对某些话题的倾向性、对某些格式的偏好),合成数据会把这些偏见传递和放大到训练出来的模型里。

面试时可以这样答

合成数据现在基本是训练数据的标配了,主要分几个流派。最简单的是蒸馏——用 GPT-4 这类强模型直接生成指令和回答;Self-Instruct 是让模型自己生成、自己过滤,形成数据生成循环;Evol-Instruct 在此基础上加了"难度进化"机制,让生成的数据难度更丰富;还有基于外部验证器的方式,比如生成代码然后执行验证,正确的才留下。

核心风险有两个最值得关注。一是 Model Collapse——多轮迭代生成会导致数据多样性不断收缩,模型最终退化成只会输出几种套路,缓解方法是每轮都混一定比例的真实人类数据。二是质量天花板,合成数据的上限是生成它的模型,要突破的话必须引入外部验证器。

另外版权合规也是绕不开的问题,OpenAI 的条款明确不允许用 GPT 输出来训练竞争性模型,这在商业产品里是实际风险。

常见追问

  1. Model Collapse 有哪些论文研究过?具体的退化机制是什么?
  2. 怎么评估合成数据的质量?有没有自动化的质量指标?
  3. Rejection Sampling 在合成数据里是怎么用的?