一、合成数据为什么成了刚需
真实数据贵、难清洗、还涉及隐私。合成数据可以按需生成,还能控制分布。
但它有个先天问题:模型生成的数据,会带上模型自己的偏好和错误。
合成数据变成刚需,原因很朴素:真实数据不够、不好标、不能用。
不够是量的问题,不好标是成本问题,不能用是合规问题。
三个问题里,第三个最硬。有些领域的数据,压根就不能拿来做训练。
二、四种常见用法
一、指令扩充。少量人工写的种子指令,让模型改写成上千条变体。
二、难例构造。专门生成模型容易错的题,用来补短板。
三、格式对齐。把非结构化内容转成固定 JSON,省人工标注。
四、长尾补充。真实数据里稀缺的类别,用合成方式补齐。
四种常见用法:补数量、补长尾、补格式、以及补对抗样本。
补长尾最有价值,因为真实数据里长尾样本最少。补格式最省事,用来统一输出模板。
补对抗样本最容易出事。合成的对抗样本往往太理想,模型学会了对付它们,对付不了真的。
三、要防的三件事
第一,分布坍缩。模型生成的数据越来越像它自己,多样性一层层衰减。解法是保留一部分真实数据混着用。
第二,错误放大。模型有某个系统性错误,合成数据会把这个错误教得更牢。解法是抽样人工验。
第三,评测污染。用合成数据训练,又用合成数据评测,分数好看但没有意义。解法是留一份完全不参与训练的真实测试集。
要防的三件事,第一件是「分布漂移」。
合成数据天然偏向模型已经会的东西,越训越窄。表现是榜单涨、真实场景不涨。
第二件是「错误被固化」。老师模型答错的题,学生模型会学得更牢。
第三件是「格式泄露」。合成数据往往有统一的句式,模型学会了句式,没学会能力。
三件事的共同解法,是掺真实数据,并且定期用真实集做验证。
四、比例怎么定
经验上,合成数据占比不要一次拉太高。先三成,看效果,再往上加。
真实与合成的混合比例,比总数据量更影响最终表现。
比例怎么定?我的经验是三成到五成,不超过真实数据的一半。
比例越高,分布漂移越明显。超过一半,模型就开始「只会说合成数据那种话」。
还有一个变量是任务类型。分类任务可以高一点,生成任务要低一点。
五、一个可操作的质量检查
抽一百条合成样本,人工标三条:事实对不对、格式对不对、难度是否合适。
三条的通过率决定这批数据能不能用。通过率低于八成,先修生成提示词,别急着训。
质量检查我给一个可操作的版本,四步,一天能做完。
第一步,抽一百条,人工看三件事:对不对、像不像真的、有没有重复。
第二步,跑一遍真实评测集,看有没有掉分。掉了就说明分布偏了。
第三步,看长度分布和句式分布是否与真实数据接近。差太远,就是格式泄露。
第四步,把这一百条当固定样本,每次换配比都跑一遍。这套下来,能挡住八成问题。
六、一句实在话
合成数据是放大器,不是替代品。它能放大你的数据设计能力,也能放大你的疏漏。
一句实在话:合成数据不是省事的办法,是另一种费事的办法。
生成便宜,验收贵。谁把验收做成流程,谁就能用;谁只生成不验收,三个月后一定回滚。
我在项目里见过两次回滚,都是同一个原因:没人对数据负责。
所以第一件事不是写生成脚本,是定一个验收人。
一句实在话:合成数据的成本不在生成,在验收。
生成一千条是分钟级的事,验收一千条要几小时。预算要按验收来算。
不做验收的项目,三个月后一定回滚。我见过两次,原因都一样。
补一句成本观:合成数据应该按「验收成本」立项,不是按「生成成本」。
生成一分钟,验收五小时。预算算错了,项目一定中途停。
再补一句:合成数据最好留「来源标记」。出问题时能追到是真实还是合成。
不留标记,后面就分不清了。
再补一句:合成数据要「分批次」进。
一次全进,模型会偏。
慢慢掺,才稳。
延伸参考
概念对照可以去前端 Wiki 翻词条,解释都不绕。
留一句:合成数据最贵的部分,是留下来做验证的那一份真实数据。