跳转到内容

FLAN — 用自然语言指令教模型学会"听话"

是什么

FLAN(Finetuned Language Models)是 2021 年 Google 提出的一种训练方法:把几十个 NLP 任务全部用自然语言指令包装一遍,然后混在一起做监督微调。结果是模型没见过的任务,只要你用一句话告诉它要干什么,它也能直接做

这套思路有个正式名字叫 instruction tuning(指令微调)——这个词就是这篇论文起的。

日常类比:以前训练 NLP 模型像教一个只会做填空题的学生,每换一种题型都要重教。FLAN 把所有题型的题目改写成”老师跟学生说话的口气”——“请你判断下面这两句话的关系”、“请把这句话翻译成法语”——然后让学生一次见 60 多种题。等他见够了,再丢一种全新口气的题,他也能照着说话风格去答

为什么重要

不理解 FLAN,下面这些事都没法解释:

  • 为什么 ChatGPT 训练三步里的第一步叫 SFT(监督微调),并且就是按 FLAN 这个套路做的——指令包装、多任务混合、监督学习
  • 为什么 HuggingFace 上下载量最高的开源模型之一叫 flan-t5——它是把 FLAN 的指令数据搬到 T5 上的产物
  • 为什么 gpt-3 时代大家依赖 in-context learning(给几个例子让模型模仿),但 FLAN 之后这种”少样本提示”很多场景已经不需要例子了
  • 为什么”会聊天的大模型”突然在 2022 年井喷——FLAN 给出了第一份工程菜谱

核心要点

FLAN 的方法可以拆成 四步

  1. 收集任务:找 60+ 个公开 NLP 数据集(NLI、阅读理解、翻译、情感、问答等),按任务类型分成 12 个 cluster
  2. 包装成指令:每个数据集人工写 10 个自然语言指令模板。原始 NLI 是 (前提, 假设, 标签),包装后变成”请判断前提是否蕴含假设:……答案:……”。
  3. 混合训练:留出 1 个 cluster 不训(用来当未见任务),其余 11 个 cluster 数据全部混在一起,对 137B 参数的 LaMDA-PT 基座做监督微调。
  4. 零样本评测:在留出的 cluster 上只给指令、不给示例,看模型能不能直接做。

关键直觉:任务以”自然语言指令”为接口统一表达后,模型学到的不再是某个具体任务,而是”读指令-按指令做事”这件事本身

一个具体的指令模板示例(NLI 任务):

原始数据:(premise="The cat sat on the mat", hypothesis="A feline is resting", label="entailment")
包装后:
"Premise: The cat sat on the mat
Hypothesis: A feline is resting
Does the premise entail the hypothesis?"
答案:"Yes"

模型不再学”NLI 这个任务的输入输出映射”,而是学”读完一段问句、给出英文回答”。

实践案例

案例 1:FLAN 137B 把 GPT-3 175B 零样本打趴下

在 25 个评测数据集上,FLAN 137B 零样本表现 20 个超过 GPT-3 175B 零样本,在 ANLI、RTE、BoolQ、AI2 ARC、OpenbookQA 上甚至超过 GPT-3 的 few-shot(带几个示例的)成绩。

数学含义:用一份 137B 的模型 + 监督指令数据,能打过一份更大、训练数据更多但没做指令对齐的模型。

案例 2:模型规模是开关,不是放大器

消融实验里有一个反直觉发现:

  • 8B 参数:instruction tuning 反而让零样本变差
  • 68B 参数:开始打平
  • 137B 参数:显著超过未微调版本

含义:指令微调不是无脑加分项,得模型够大才解锁。这个现象后来被叫做”instruction-following 的涌现门槛”,chinchillascaling-laws 那条线索的远房亲戚。

案例 3:cluster 数量决定泛化

另一个消融:训练时用的 cluster 越多,留出 cluster 上的零样本表现越好——而且还没看到饱和

1 cluster → 留出准确率 ~50%
4 clusters → 留出准确率 ~58%
7 clusters → 留出准确率 ~62%

含义:泛化能力来自任务多样性,不是单一任务的数据量。这条经验直接催生了后续的 FLAN Collection v2(1800+ 任务)。

踩过的坑

  1. 误以为 instruction tuning = RLHF:FLAN 只是 监督微调(人写指令 + 人写答案),完全没有奖励模型也没有强化学习。RLHF 是 instructgpt 在 FLAN 之上加的下一步。

  2. 误以为指令模板越花哨越好:消融显示,每个数据集即使只用 1 个模板而不是 10 个,掉点也很有限。多样性来自任务种类,不是模板措辞。

  3. 误以为零样本就是”无监督”:FLAN 的零样本指留出任务上没给示例,但训练阶段全都是有标签的监督数据。零样本 ≠ 没标签。

  4. 误以为这套方法对所有模型都有效:8B 以下反向收益是论文明确的结论。在小模型上做 instruction tuning,先评估再投入

  5. 数据污染风险:FLAN 把几十个公开数据集塞进训练,评测时务必检查测试集是否被无意混入——后续工作发现这是同期一些”超过 GPT-3”结论的常见锅。

  6. cluster 划分主观性:什么算同一类任务有人为判断成分。论文把 NLI 和文本蕴含归在一起,但”情感分类”和”评论摘要”的边界就有商榷空间。复现实验时这一步分歧会让数字差几个点。

适用 vs 不适用场景

适用

  • 大模型(≥ 60B 量级)想加”听指令”能力,作为 SFT 第一步
  • 任务格式可以转成”指令 + 输入 → 输出”的 NLP 场景
  • 想在多任务间共享知识、同时做泛化的设定
  • t5 / llama 这类开源基座加指令对齐能力

不适用

  • 小模型(< 10B)——反向收益已被论证
  • 需要主观偏好对齐(“哪个回答更礼貌”)→ 必须上 RLHF(见 instructgpt / rlhf-christiano
  • 需要事实正确性保证——instruction tuning 不解决幻觉问题
  • 任务格式跟自然语言关系远(图像分类、强化学习控制)→ 思路可借鉴,方法不直接套用

历史小故事(可跳过)

  • 2020-05gpt-3 论文发布,主推”in-context learning”——给模型 0~k 个例子,不改参数
  • 2021-09:FLAN 论文挂 arXiv,提出”指令微调”是另一条路,还便宜
  • 2021-10:BigScience 的 T0 论文几乎同时发布,思路相近但用 11B 的 T5 做基座,证明小模型 + 大量任务也能行
  • 2022-03instructgpt 把 FLAN 的 SFT 思路 + RLHF 拼起来,成为 ChatGPT 的直接前身
  • 2022-12:ChatGPT 上线,普通用户首次感受到”模型会听话”——FLAN 是这条路的起点
  • 2022 至今:FLAN Collection v2 扩到 1800+ 任务,几乎所有开源指令模型都从中取数据

一个有趣的副产品:FLAN 论文一作 Jason Wei 后来去了 OpenAI,参与了 ChatGPT 的训练。

学到什么

  1. 范式转换:从”模型 + 提示工程”转向”模型 + 指令数据”。前者是用户花心思,后者是训练时花心思。
  2. 统一接口的力量:把所有任务表达成”自然语言指令”这一种格式后,模型学到的是元能力,不是单任务能力。和 t5 的 text-to-text 思路一脉相承。
  3. 规模是质变开关:很多大模型能力不是线性放大,是过门槛后突然出现。FLAN 在 8B / 68B / 137B 上的相反符号是早期最干净的证据之一。
  4. 多样性 > 数据量:60 个任务各 1000 条,比 1 个任务 60000 条更有用——前提是任务格式经过对齐。
  5. 工程菜谱可复现:和很多大模型论文不同,FLAN 的方法栈每一步都能在小规模验证(任务收集 → 模板撰写 → 多任务混合 → 留出评测)。这也是为什么 2022 年开源社区能很快把它复现到 t5 / llama 上。

延伸阅读

关联

  • gpt-3 —— FLAN 要打的零样本基线,在它之前 in-context learning 是主流
  • instructgpt —— FLAN 的下一步,加 RLHF 后变 ChatGPT 雏形
  • t5 —— text-to-text 思路的前身,FLAN 的”指令”是它的精神延续
  • scaling-laws —— 解释为什么 instruction tuning 在 68B 起才生效
  • chinchilla —— 同样讨论”模型规模 vs 训练量”的权衡
  • rlhf-christiano —— FLAN 之后的对齐路线起点
  • llama —— 开源基座,配合 FLAN-style 数据可以复刻指令对齐能力

反向链接

  • blip2-2023 —— BLIP-2 — 用 188M 小桥接器把冻结的视觉模型和大语言模型拼起来
  • chinchilla —— Chinchilla — 训练大模型的数据/参数最优比
  • gpt-3 —— GPT-3 — Language Models are Few-Shot Learners
  • instructgpt —— InstructGPT — RLHF 让 LLM 听话
  • llama —— LLaMA — Meta 开源大语言模型
  • rlhf-christiano —— RLHF Christiano 2017 — 人类偏好做奖励
  • scaling-laws —— Scaling Laws — 神经语言模型的缩放规律
  • st-llm-2024 —— ST-LLM — 把所有时空 token 交给 LLM,让它自己学时序
  • t0-2021 —— T0 — 让 50 个人各写各的提示词,模型反而更会听新指令
  • t5 —— T5 — Text-to-Text Transfer Transformer