合成数据怎么系统构建?
模板/LLM/回译方法,质量控制与风险规避
原题:在缺乏足够真实标注数据的情况下,如何系统性地构建高质量的大规模人工合成数据?请描述常用方法(如模板生成、LLM生成、回译等)、质量控制手段及潜在风险规避策略。
模型训练 · 美团真题
回答与解析
合成数据前要先定义缺口。模板适合规则明确、槽位可枚举的任务;回译与改写适合保持语义的表达扩展;LLM可以生成开放指令、对话和解释;模拟器适合能执行验证的代码、数学或工具任务。不同方法产生的偏差不同,不能只追求数量。
Self-Instruct不是把种子指令做相似改写。它用一小组人工任务引导模型生成新的指令,并根据指令是否需要输入继续生成输入与输出,再通过相似度和启发式规则过滤,形成迭代数据。实现时要保留来源、生成模型、prompt和过滤版本,防止同一模板无限扩张。
质量控制应按可验证性分层。代码运行测试,数学重算结果,检索型答案检查权威资料和引用,结构化任务用schema与业务规则,主观写作用盲标gold和成对人评。多个模型给出相同答案只能作为弱信号,因为它们可能共享训练数据、知识盲点和表达捷径。
困惑度可以反映文本在某个语言模型下的可预测程度,却不是通用质量分数。低困惑度可能只是模板重复,高困惑度也可能来自专业术语。它可以用于异常筛选,但不能代替事实、相关性与任务正确性。强模型打分同样要用人工gold校准。
分布治理要保留真实数据锚点,并按来源、意图、难度、长度和语言检查覆盖。只按embedding分散也不保证业务多样性,还要限制单种子与单模板贡献,做近重复和基准污染检测。涉及用户或专业数据时,合成并不会自动消除隐私与许可风险。
我会用相同训练预算比较真实数据基线、不同合成配比和过滤方案,在完全真实且未参与生成的held-out集上评测,并按错误类型人工抽检。若合成数据只提升类似模板而损伤真实长尾,就降低权重或停止。合成是扩展覆盖的工具,不是事实真值的来源。
口语版讲法(约4分钟)
- 选择适合任务的合成方式
- 准确描述Self-Instruct流程
- 建立多层验证
- 控制分布与模板坍缩
- 用真实holdout验收
合成数据前要先定义缺口。模板适合规则明确、槽位可枚举的任务;回译与改写适合保持语义的表达扩展;LLM可以生成开放指令、对话和解释;模拟器适合能执行验证的代码、数学或工具任务。不同方法产生的偏差不同,不能只追求数量。
Self-Instruct不是把种子指令做相似改写。它用一小组人工任务引导模型生成新的指令,并根据指令是否需要输入继续生成输入与输出,再通过相似度和启发式规则过滤,形成迭代数据。实现时要保留来源、生成模型、prompt和过滤版本,防止同一模板无限扩张。
质量控制应按可验证性分层。代码运行测试,数学重算结果,检索型答案检查权威资料和引用,结构化任务用schema与业务规则,主观写作用盲标gold和成对人评。多个模型给出相同答案只能作为弱信号,因为它们可能共享训练数据、知识盲点和表达捷径。
困惑度可以反映文本在某个语言模型下的可预测程度,却不是通用质量分数。低困惑度可能只是模板重复,高困惑度也可能来自专业术语。它可以用于异常筛选,但不能代替事实、相关性与任务正确性。强模型打分同样要用人工gold校准。
分布治理要保留真实数据锚点,并按来源、意图、难度、长度和语言检查覆盖。只按embedding分散也不保证业务多样性,还要限制单种子与单模板贡献,做近重复和基准污染检测。涉及用户或专业数据时,合成并不会自动消除隐私与许可风险。
我会用相同训练预算比较真实数据基线、不同合成配比和过滤方案,在完全真实且未参与生成的held-out集上评测,并按错误类型人工抽检。若合成数据只提升类似模板而损伤真实长尾,就降低权重或停止。合成是扩展覆盖的工具,不是事实真值的来源。
生成器与评估器最好不要共享完全相同的提示和单一模型,否则容易共同偏向某种格式。即便使用不同模型,也要用真实gold校准。对于高风险领域,合成样本只能补充表达覆盖,核心事实和标签仍需权威数据或专家确认,不能因为规模压力降低验证标准。
合成流程还要检测评测污染。生成模型可能已经见过公开基准,并把题目或答案复现到训练集。应对真实held-out做近重复和语义检索,记录生成种子来源。若无法确认隔离,相关基准只能作为开发信号,不能用于最终泛化声明。
关键一句:为什么多模型一致和低困惑度都不能直接证明合成样本正确。
核验来源
面试官还可能这样问
- 问法 1 · 场景切入
假设你要做一个金融客服的意图分类数据,但真实标注样本只有几百条,业务方又要求覆盖几十种理财咨询场景。你打算怎么用合成数据把这套分类模型撑起来?
- 问法 2 · 层层追问
合成数据你一般是怎么搞的?……如果只有几条种子样本,怎么让它变出几万条?……那你怎么保证生成的数据质量,不会把模型带偏?
- 问法 3 · 直球架构
请系统性地讲一下构建大规模人工合成数据的流程:你会用到哪些方法?质量怎么控制?有哪些潜在风险以及怎么规避?