合成数据

F10
概念 · AI 基础

合成数据。

合成数据就是由模型生成的训练数据。它从新奇玩意儿变成标准做法,原因并不是更便宜——而是你可以精确地生成你所缺的那些样本,而这靠再多的爬取也拿不到。它的失效模式同样具体:一个用自己未经筛选的输出训练出来的模型,会朝自己的平均值漂移,因此这门手艺的全部功夫都在校验环节,而不在生成环节。

STEP 1

它实际承担的三种活儿。

「合成数据」这个词涵盖了几种彼此不同的技术,它们共享一套机制,此外几乎没有共同点:

  • 蒸馏。大模型产出输出,小模型在其上训练,从而继承了以它的体量从原始文本中学不到的行为。大多数小型指令跟随模型就是这样造出来的——参见蒸馏与量化
  • 补覆盖。某个罕见场景你只有 40 条真实样本,却需要 4000 条。生成正是针对这个具体缺口——那种不常见的理赔类型、那种畸形输入、那种你数据很少的语言。
  • 偏好与推理数据。生成大量候选答案,打分,然后只用胜出者去训练。近年推理模型的大量进步都由此驱动,而它之所以奏效,是因为校验一个解往往远比产出一个解容易。

最后那条不对称性正是全部的承重点。凡是存在廉价且可靠的检查器的地方——单元测试通过、证明得到验证、SQL 返回了正确的行、JSON 符合 schema——你就可以大批量生成,只保留通过的那些。凡是不存在这种检查器的地方,你训练用的就是未经校验的模型输出,其质量上限不会高于产出它的那个模型。

STEP 2

模型崩塌,以及它真正的成因。

被广泛引用的结论是:在自身输出上递归训练的模型会退化——分布的尾部最先消失,随后整体朝均值收窄。这是真实存在的,但它常被过度推广成「合成数据很危险」,而研究并没有这么说。

崩塌是一种特定配置的后果:不做筛选、不引入新的真实数据、不引入外部信号,并且逐代重复。只要改变其中任何一项,图景就会改变:

  • 筛选打断了闭环。如果有校验器丢弃劣质样本,你就不是在强化模型的错误,而是在对错误做反向选择。
  • 与真实数据混合可以锚定分布。把真实数据与合成数据累加在一起,其行为与用合成数据替换真实数据截然不同。
  • 外部信号带来了新信息。一套测试、一个编译器、一条搜索结果或一次人工评分,注入的是生成器原本并不知道的东西。没有它,生成只能重新分配已有知识,而永远无法增加知识。

实用结论:合成数据的安全程度,与你筛选器的质量成正比。它不是数据的属性,而是流水线的属性。

STEP 3

它在智能体技术栈里凭什么占一席之地。

大多数做智能体的团队永远不会去训练一个基础模型,但仍有三种很好的生成数据用途:

  • 评测集。被低估得最厉害的一种用途。你需要对抗样本、边界样本,以及足以形成信号的数量,而手写它们正是评测工作半途而废的地方。先生成候选,再由人来接受或拒绝——这就把昂贵的环节从「撰写」倒转成了「审核」。
  • 在还没有流量时先跑起来。新智能体没有任何生产对话记录。生成一批用户请求、并向别扭的那类倾斜,能让你在真实用户替你找到 bug 之前先测试循环
  • 红队测试。生成提示词注入尝试与越狱变体既便宜,规模上也远超一个人类团队肯耐心写出的量。

请注意这三项都关于测试,而非训练。对应用团队而言这才是诚实的默认选择:生成评测数据的回报是立竿见影的,而微调数据的回报,只有在你把提示与检索都用尽之后才存在。

STEP 4

陷阱,按团队踩中的先后顺序。

  • 同质化。让模型给你 1000 条样本,你得到的是同一条样本的 1000 种改写。要变的是种子素材,而不只是温度——真实输入、人物设定、约束条件、输出格式。请显式度量多样性(不同 n-gram 数、嵌入分布离散度),而不是扫一眼前十条。
  • 泄漏进评测。如果同一个模型既生成你的训练数据又生成你的测试集,那你的基准测的是自洽性。请始终留出真实数据用于评测。
  • 被继承并浓缩的偏差。生成会复制生成器的偏斜,而筛选可能让它更尖锐,因为筛选器与生成器共享同样的盲区。
  • 许可与来源。托管模型的输出附带条款,其中一些禁止用它训练竞品模型。这首先是合同问题,其次才是技术问题——在你据此搭建流水线之前先确认清楚。
  • 隐私不会自动获得。「合成」不等于「匿名」。以真实记录为条件的生成器有可能复现这些记录;如果这件事要紧,你需要的是形式化保证,而不是感觉。

在生成任何东西之前,先把检查器写下来。如果你说不清一条生成样本将如何被校验——一个会跑的测试、一份能验证的 schema、一条会触发的规则、一个会审核的人——那你搭的就不是合成数据流水线,而是一台改写机器,它会信心十足地把模型自己的习惯教给模型。检查器才是产品;生成才是便宜的那部分。

延伸阅读:训练与推理说明它所处的位置,智能体评测是回报最好的那种用法,读懂基准测试讲被污染的测试集为何让所有人看起来都很棒。