指令数据从哪来?Self-Instruct 和 Evol-Instruct 怎么让 AI 教 AI

训练一个能听懂人话的 AI,最难的一步是什么?不是模型架构,不是算力——是 数据。更具体地说,是 指令数据:那种“帮我写一封辞职信”“用小学生能听懂的话解释相对论”的 prompt-response 对。OpenAI 能做出 ChatGPT,靠的是大量人工标注员手写指令、手写答案,成本高得离谱。但如果你没有这笔预算呢?答案你可能已经猜到了:让 AI 自己教自己。这就是 Self-Instruct 和 Evol-Instruct 要做的事。但它们不是随便让 AI 生成一堆数据就完事了——这里面有精心设计的生成、过滤、进化机制。我第一次看到 Self-Instruct 这个标题时,脑子里冒出的想法是:“这不就是 AI 左脚踩右脚上天吗?”但仔细读完论文,发现这事没那么简单。

AI technology illustration

为什么人工标注指令数据这么贵?

很多人以为,训练 ChatGPT 最贵的是那几千张 GPU。其实 数据标注才是真正的隐形成本。OpenAI 在 InstructGPT 论文里提到,他们雇了大约 40 名标注员,花了几个月时间,才写出几万条高质量指令数据。这些标注员要遵循复杂的规范:多样性、安全性、有用性、格式……而且指令必须覆盖真实用户可能问的各种奇葩问题。你可能会想,那直接从网上爬对话数据不行吗?不行,因为网上的对话大多是闲聊、低质量、重复的,根本不具备“指令遵循”所需的清晰结构和多样性。所以,指令数据短缺成了大模型平民化的最大瓶颈。直到 2022 年底,一篇论文提出了一个大胆的想法:Self-Instruct

Self-Instruct:让 AI 自己出题自己答

Self-Instruct 的核心思想很简单:给大语言模型(LLM)一小批 种子任务(比如 175 个手工编写的指令),然后让它批量生成更多的新任务,再自己生成对应的答案,最后用这些数据去训练一个更听话的模型。这听起来像左脚踩右脚,但背后有一套严密的流程,确保生成的数据足够多样、质量够高。

  1. 从种子池抽取示例:每次生成新指令时,从当前任务池中随机抽取 8 个已有任务作为上下文示例,让模型“照着样子”发明新任务。这 8 个示例确保了生成方向不会跑偏。
  2. 生成新指令:LLM 根据这些示例,输出一个全新的任务指令。这个指令可能是“将下列句子翻译成法语”,也可能是“用一个笑话解释什么叫递归”。
  3. 判断任务是否需要输入:有些任务只需要指令(比如“写一首诗”),有些需要额外输入(比如“把以下文本概括成一句话”)。模型会先判断任务类型,再决定后续生成什么。
  4. 生成实例:对于“需要输入”的任务,模型先生成输入字段,再生成对应输出;对于“不需要输入”的任务,直接生成输出。这就得到了完整的 instruction-input-output 三元组。
  5. 过滤低质量数据:这是最关键的一步。自动生成的数据必然包含大量垃圾——重复的、太短的、太长的、跟已有任务高度相似的。论文用了 ROUGE-L 相似度去重,还过滤掉包含特定关键词(如“图片”“视频”)的指令,因为纯文本模型无法处理。只有通过过滤的数据才能加入任务池,继续下一轮生成。

这套流程像滚雪球一样,从 175 个种子开始,最终生成了 52K 条指令数据,用来训练 Stanford Alpaca 模型。52K 数量不算大,但足以让一个 7B 的 LLaMA 模型展现出不错的指令遵循能力。这让我意识到:数据质量比数量重要得多。那些被过滤掉的数据,可能比留下的多好几倍。

Evol-Instruct:不仅要出题,还要出难题

2023 年,WizardLM 团队提出了 Evol-Instruct。他们发现,Self-Instruct 生成的指令太“平”了,缺乏挑战性。而现实世界中,用户的问题往往很复杂:“先总结这篇文章,然后对比其中两种观点,最后用表格列出优缺点”——这种多步推理、带格式约束的指令,Self-Instruct 很难自动生成。于是他们想:能不能让 AI 把简单的指令进化成复杂的指令?就像给指令“升级打怪”。

Evol-Instruct 从一批简单的初始指令出发(这些初始指令可以来自 Self-Instruct 或手工编写),然后通过 提示工程 让 LLM 对指令进行“演化”。演化分为两种类型:

  • 深度进化(In-Depth Evolving):让指令变得更复杂。具体包括五种操作:添加约束(“写一篇 500 字的文章,且不能使用字母 e”)、加深层次(“先解释概念,再举例,最后指出常见误解”)、具体化(“用小学生能听懂的话解释”改为“用 8 岁小孩能听懂的话解释,且不能出现专业术语”)、增加推理步骤(“回答这个问题并给出推导过程”)、让问题更全面(“不仅要给出答案,还要分析可能出现的边界情况”)。
  • 广度进化(In-Breadth Evolving):生成全新的、有创意的指令,提升话题覆盖面。比如从“写一封辞职信”演化出“写一封辞职信,但语气要像《指环王》里的甘道夫”。

每次进化后,还有一个 指令淘汰机制:如果进化后的指令跟原始指令一模一样(说明进化失败),或者生成的信息对模型来说太难(比如要求处理图片),或者指令包含无意义占位符,就会被丢弃。合格的指令进入下一轮进化,如此迭代多次,指令的复杂度会像滚雪球一样越来越高。

WizardLM 团队用 Evol-Instruct 从初始的 70K 指令开始,最终生成了 250K 条复杂指令数据。用这些数据训练出的 WizardLM,在复杂推理任务上的表现明显优于只用 Self-Instruct 数据训练的模型。这让我想通了一个点:指令数据的核心不是“像人写的”,而是“能逼出模型的推理能力”。简单的指令只能训练出听话的鹦鹉,复杂的指令才能训练出会思考的助手。

一张表看清 Self-Instruct 和 Evol-Instruct 的区别

维度 Self-Instruct Evol-Instruct
核心思路 从种子任务批量生成新任务 从简单指令进化出复杂指令
输入数据 少量手工种子任务(175 条) 大量简单指令(可来自 Self-Instruct)
生成方式 通过示例让模型发明新任务 通过提示让模型改写指令,增加复杂度
复杂度控制 依赖种子多样性,无法自动提升 主动提升难度,支持深度/广度进化
过滤机制 ROUGE-L 去重、关键词过滤、长度过滤 淘汰无变化、不可行、格式错误指令
典型产出 52K 指令(Alpaca) 250K 复杂指令(WizardLM)
适用场景 快速构建通用指令遵循模型 提升模型在复杂推理、多步任务上的表现

为什么 AI 教 AI 并没有那么完美?

这两种方法看起来很美,但实际用起来坑不少。我踩过几个:

  • 生成的数据有偏见:LLM 从种子任务或进化提示中学习,会放大原有的偏见。如果种子任务都是英文、西方文化背景,生成的指令也会偏向这些,导致模型对其他语言或文化理解不足。
  • 幻觉会传染:如果生成答案时模型自己就编造了错误信息,这些错误数据会被用来训练下一代模型,造成“错误强化”。
  • 难度失控:Evol-Instruct 可能把指令进化得过于复杂,甚至超出模型本身的能力范围,导致生成的答案质量极差,训练出的模型反而更糟。
  • 多样性假象:虽然生成的指令数量多,但仔细看可能只是表面变化,深层任务类型并没有真正拓展。比如从“写一封辞职信”进化到“写一封辞职信,语气像莎士比亚”,本质上还是“写辞职信”。

有一次,我用 Self-Instruct 生成了几万条指令,训练后发现模型特别爱用“Sure, I can help with that”开头,原因就是种子数据里人工标注员总爱这么写,模型学得挺快,但变通能力为 0。后来我意识到,数据过滤必须针对这些“模板化”模式做专门处理,否则模型会学得八股味十足。

FAQ:关于指令数据生成的三个常见误解

“让 AI 生成数据,再用这些数据训练 AI,这不是循环论证吗?”

不是。因为生成数据的 AI 和 被训练的 AI 是同一个模型的不同版本,或者不同模型。关键是:生成数据时用的是更强的模型(比如 GPT-4),然后用这些数据训练一个更小的模型(比如 LLaMA 7B)。强模型把自己的知识“蒸馏”到弱模型里,弱模型变强了,但强模型并没有因此变弱。这更像老师教学生,而不是左脚踩右脚。

“是不是数据越多越好?”

不是。Self-Instruct 论文中实验发现,数据量超过一定阈值后,模型性能提升趋于平缓,甚至可能因为低质量数据混入而下降。52K 对于 Alpaca 来说已经足够,再往上加,需要更精细的过滤。

“Evol-Instruct 一定能提升模型能力吗?”

不一定。如果进化后的指令难度超过了模型能处理的上限,生成的答案可能充满错误,训练出的模型反而在原有任务上退化。所以,难度控制是 Evol-Instruct 成功的关键,通常需要人工抽样检查进化质量。

我现在的判断

Self-Instruct 和 Evol-Instruct 解决的是指令数据生成的两个不同维度的难题:多样性和复杂性。Self-Instruct 擅长低成本铺开覆盖面,Evol-Instruct 擅长在深度上做文章。目前最实用的做法可能是 两者结合:先用 Self-Instruct 生成大量基础指令,再挑出一部分用 Evol-Instruct 进化成复杂指令,最后混合训练。但无论哪种方法,人工审核和过滤都是必不可少的一环——完全靠 AI 教 AI 跑出来的模型,往往会在某些边界情况上表现得很诡异,就像一个只会背题库的学生,遇到没见过的题型就露馅。指令数据的未来,不是 AI 取代人,而是 AI 帮人省掉 80% 的脏活累活,剩下的 20% 关键决策,还得人来把关。

进阶阅读:原始论文与关键资源

原创文章,作者:guanweilu,如若转载,请注明出处:https://guanweilu.cn/article/156.html

(0)
上一篇 2026年8月18日 上午12:01
下一篇 2026年8月18日 上午12:05

相关推荐