合成数据这两年被讲得很多,宣传语几乎一致:解决长尾、降低成本、绕开隐私。真正难的不是理解它,而是判断它在你这个任务上到底有没有用。

我的结论先说:能用,但必须带着「留出真实测试集」的前提去用。

三组对比,看什么指标

要判断合成数据有没有用,至少要做三组对照,而且必须在同一套真实测试集上评:

训练数据目的观察点
只用真实数据基线作为一切比较的参照
只用合成数据探上限看合成数据自身的信息量
真实加合成看增益看增益集中在哪些类别

第三组才是实际会用的方案,第一组是唯一可信的参照。跳过第一组直接看第三组,得到的结论没有意义。

什么时候有效

  • 长尾类别。真实样本极少的类别,合成数据能明显改善。
  • 标注昂贵的任务。分割、关键点这类标注,合成的边际成本低得多。
  • 隐私受限场景。不能使用原始数据的场合,合成是唯一可行路径。

这三类有一个共同点:真实数据的「供给」是最紧的瓶颈,而不是模型的容量。

什么时候无效

  • 分布偏移。合成数据的分布和真实分布不一致时,模型学到的是错的先验。
  • 几何一致性要求高的任务。多视角、遮挡关系这类约束,生成模型很难保证。
  • 语义漂移。从文本生成图像时,细粒度属性(数量、方位、材质)经常对不上。

第三个问题最隐蔽,因为它不影响整体指标,只在细分属性上出错。

评估流程

合成数据有效性评估
  1. 1留出集先切一份只含真实数据的测试集,全程不参与训练
  2. 2单变量替换只替换训练集,其他超参保持一致
  3. 3分层对比按类别、按难易度分组看增益,而不是只看总体
  4. 4失败分析找出合成数据带来的新错误类型,判断能否接受

第三步是最容易被跳过的一步。总体指标涨了两个点,但某个关键类别掉了十个点,这种情况很常见。

第四步决定要不要继续用。如果合成数据引入的错误正好落在你最在意的类别上,那这个方案就不成立。

一句话结论

合成数据的价值不在替代真实数据,而在补齐真实数据覆盖不到的部分。把它当增量用,通常有收益;把它当替代品用,通常出问题。

成本这个账怎么算

合成数据常被说成「便宜」,但这个比较必须放在同一口径下才有意义:

  • 生成成本。模型推理的算力开销,以及为生成做的调参人力。
  • 校验成本。合成数据必须被检查,否则错误会被系统性放大,这部分人力经常被漏算。
  • 返工成本。如果训练出的模型在真实数据上表现不稳,重训的代价要算进去。

三项加起来的结论通常没有宣传里那么乐观,但在长尾类别上仍然划算——因为那边的真实数据几乎无法获取,成本等于无限。

什么时候该直接放弃

如果合成数据带来的增益集中在你不关心的类别上,或者它引入的新错误类型正好落在核心类别上,就别继续投入了。这两条都是上线后很难补救的问题。

还有一种情况也该放弃:你连一份干净的真实测试集都凑不出来。没有可信的评估基准,合成数据的任何收益都无法被验证,这时候上项目等于在赌一个看不见的结果。


免责声明:本文为技术方法讨论,所述结论基于个人实验与公开资料,不构成任何投资或采购建议。