训练和微调大模型需要大量高质量数据,但真实数据往往面临各种限制:标注成本高、某些场景的样本稀少、涉及用户隐私无法使用、长尾情况难以收集。用大模型生成训练数据,即合成数据,正在成为解决数据瓶颈的重要手段。 很多模型的后训练阶段都大量使用了合成数据。但合成数据并不是免费的午餐,用不好会把模型的错误和偏见放大。

合成数据的主要用途

微调数据扩充

当你只有几十到几百条高质量的人工示例时,可以让强大的模型参照这些示例生成更多类似的样本,扩充微调数据集。例如为客服场景生成多样化的用户提问和标准回复。

覆盖长尾和边界情况

真实数据中罕见但重要的情况,例如特殊的投诉类型、少见的错误输入、对抗性的提问,可以通过合成方式定向生成。

构建评测数据

快速生成大量测试问题,覆盖不同的难度和类型,用于评估模型表现。但评测数据的最终质量需要人工把关,参见如何构建评测集。

隐私保护

用合成数据替代包含个人信息的真实数据,用于开发测试和模型训练,降低隐私泄露风险。需要注意,合成数据如果过度模仿真实数据,仍可能泄露原始信息。

偏好数据

生成同一问题的多个不同质量的回答,用于偏好对齐训练,参见 RLHF 与 DPO。

主要风险

1. 多样性不足

大模型生成的内容往往趋于“平均化”:相似的句式、相似的用词、相似的思路。用这样的数据训练,模型的输出也会变得单调。

2. 错误放大

生成模型本身存在的错误、幻觉和偏见会被写入合成数据,用这些数据训练的模型会继承甚至放大这些问题。

3. 模型崩溃

研究发现,如果模型反复用自己或其他模型生成的数据进行训练,而缺乏新的真实数据,模型的能力可能逐代退化,输出的多样性和质量持续下降,这一现象被称为“模型崩溃”。

4. 分布偏移

合成数据的分布可能与真实场景存在差异。模型在合成数据上表现良好,在真实数据上却表现不佳。

5. 许可与合规

部分模型服务的使用条款限制使用其输出来训练竞争模型,使用前需要仔细查看条款,参见开源大模型许可证解读。

质量控制流程

第一步:用高质量种子引导

准备一批由人工编写或精选的高质量示例作为种子,明确数据的格式、风格和质量标准。种子的质量直接决定了合成数据的上限。

第二步:设计多样化的生成策略

  • 变换角度:指定不同的用户画像、场景、难度、语气来生成;
  • 组合属性:把主题、问题类型、约束条件等维度进行组合,系统性地覆盖各种情况;
  • 使用多个模型:用不同的模型生成,减少单一模型的风格偏差;
  • 适当提高采样温度:增加输出的多样性,参见采样参数实用指南。

第三步:过滤低质量数据

  • 规则过滤:格式错误、长度异常、包含禁用内容的样本;
  • 模型评估:用大模型评委对样本质量打分,过滤低分样本,参见 LLM-as-a-Judge;
  • 可验证任务的自动校验:数学题检查答案是否正确,代码检查能否通过测试。

第四步:去重

去除完全重复和语义高度相似的样本,避免数据集中某些模式被过度强化。

第五步:人工抽检

随机抽取一定比例的样本进行人工审核,评估整体质量,并根据发现的问题调整生成策略。

第六步:与真实数据混合

合成数据最好作为真实数据的补充,而不是完全替代。保持一定比例的真实数据,有助于避免分布偏移和模型崩溃。

第七步:效果验证

用独立的、基于真实数据的测试集评估训练效果,而不是用合成数据评估用合成数据训练的模型。

小结

合成数据是解决数据稀缺、覆盖长尾情况和保护隐私的有效手段,但存在多样性不足、错误放大、模型崩溃和分布偏移等风险。从高质量种子出发,采用多样化的生成策略,经过过滤、去重和人工抽检,并与真实数据混合使用、用真实数据验证效果,才能让合成数据真正发挥价值。微调数据的整体构建方法见微调数据集构建指南。