← 返回题库
第 029 题 · 预训练与数据 · 简单

Self-Instruct 如何生成、筛选并迭代合成指令数据?

岗位专项 这代表什么?
✓ 资料核验 来源说明:公开面经题库主题;公司归属未独立核验,技术答案依据原论文或官方文档整理
Self-Instruct合成数据指令微调
评论与补充 ↓
口述训练

先用自己的话答,再看参考说法

60 秒是练习上限,不是必须凑满。原理题讲清因果,设计题讲清约束,项目题只讲真实证据。

别照着背。参考说法只用于对照;直接回答问题,简单题说清楚就收尾。项目题只用自己的经历和数字。

面试时怎么答

按数据闭环讲:从少量种子任务出发,让模型扩写新指令和样例,再做格式、相似度、可执行性与质量过滤,把合格样本加入池中继续迭代。重点不是“让模型自己生成数据”,而是筛选与去重。

若问风险,指出模型会复制自身错误与表达偏好,还可能污染评测集。需要独立 Judge、规则与人工抽检,并控制合成数据和真实数据的配比。

可以这样答:

Self-Instruct 从少量人工种子指令出发,让模型生成新的任务描述、输入和答案,再经过格式检查、语义去重、可回答性与质量筛选,把通过的数据用于训练或下一轮扩展。它能低成本增加任务覆盖,但也会放大生成模型的事实错误和写作偏好。数据管线要保留来源与版本,隔离评测集,并用规则、独立模型和人工抽检共同把关。

核心回答

Self-Instruct 用少量人工 Seed Tasks 启动自举循环:让教师模型生成新指令,判断任务是否需要输入,再生成对应 input/output 实例;随后用规则与相似度过滤无效、重复或格式错误样本,把合格数据加入任务池,继续生成,最后用得到的指令数据微调目标模型。

它降低了逐条人工编写指令的成本,并扩展任务覆盖,但合成不等于真实。教师的事实错误、文风偏好和安全盲点会进入数据,反复自举还可能造成模板化与多样性下降,因此需要去重、独立验证和人工 Gold Data 锚定。

展开说明

生成新指令时从任务池抽取若干示例做 In-context Demonstration,使教师模仿格式但提出不同任务。随后按任务类型生成实例:有些任务先生成输入再回答,有些开放生成任务可直接产生输出。过滤阶段检查解析失败、关键词黑名单、答案缺失,以及新指令与已有指令的文本相似度。

Self-Instruct 的“迭代”主要是不断扩充任务池,不必每一轮都重新训练教师。若使用已微调目标模型继续生成,应更警惕模型坍缩:低概率语言现象和少数观点会逐轮丢失。合成数据还可能意外包含评测题,应在入库前做 Benchmark Decontamination。

工程实践

给每条样本记录 Seed、教师模型、Prompt 版本、采样参数、过滤原因和生成时间。按任务类型、语言、长度和安全风险分层抽检,并用规则验证器或多个 Judge 交叉检查可验证任务。训练时混入人工高质量样本,比较“纯人工、纯合成、混合”消融,同时监控重复率和真实用户集表现。

常见追问

  1. Self-Instruct 的教师必须比目标模型大吗? 不一定是形式要求,但教师能力和多样性决定数据上限;较弱或同源教师更容易复制错误与模式。
  2. 为什么生成后还必须去重? In-context 示例会诱导模型改写相似任务,不去重会让高频模板主导训练,并提高评测污染风险。
  3. 合成数据越多越好吗? 不是。新增样本若缺少新信息或质量较低,只会放大偏差;应看去重后的有效覆盖和真实任务收益。

一句话复习

Self-Instruct 从少量 Seed 自举生成“指令—实例—答案”,靠过滤去重扩充任务池,并用人工数据与独立评测约束合成偏差。

参考资料

无需账号 · 原地交流

评论与补充

评论会直接显示在这道题下面。可以写自己的答法、继续追问或指出错误,不需要 GitHub 账号,也不会跳转到 Issue;内容会公开,请勿填写个人隐私、公司机密或受保密约束的材料。

正在加载评论…