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 的方法可以拆成 四步:
- 收集任务:找 60+ 个公开 NLP 数据集(NLI、阅读理解、翻译、情感、问答等),按任务类型分成 12 个 cluster。
- 包装成指令:每个数据集人工写 10 个自然语言指令模板。原始 NLI 是 (前提, 假设, 标签),包装后变成”请判断前提是否蕴含假设:……答案:……”。
- 混合训练:留出 1 个 cluster 不训(用来当未见任务),其余 11 个 cluster 数据全部混在一起,对 137B 参数的 LaMDA-PT 基座做监督微调。
- 零样本评测:在留出的 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 的涌现门槛”,chinchilla 和 scaling-laws 那条线索的远房亲戚。
案例 3:cluster 数量决定泛化
另一个消融:训练时用的 cluster 越多,留出 cluster 上的零样本表现越好——而且还没看到饱和。
1 cluster → 留出准确率 ~50%4 clusters → 留出准确率 ~58%7 clusters → 留出准确率 ~62%含义:泛化能力来自任务多样性,不是单一任务的数据量。这条经验直接催生了后续的 FLAN Collection v2(1800+ 任务)。
踩过的坑
-
误以为 instruction tuning = RLHF:FLAN 只是 监督微调(人写指令 + 人写答案),完全没有奖励模型也没有强化学习。RLHF 是 instructgpt 在 FLAN 之上加的下一步。
-
误以为指令模板越花哨越好:消融显示,每个数据集即使只用 1 个模板而不是 10 个,掉点也很有限。多样性来自任务种类,不是模板措辞。
-
误以为零样本就是”无监督”:FLAN 的零样本指留出任务上没给示例,但训练阶段全都是有标签的监督数据。零样本 ≠ 没标签。
-
误以为这套方法对所有模型都有效:8B 以下反向收益是论文明确的结论。在小模型上做 instruction tuning,先评估再投入。
-
数据污染风险:FLAN 把几十个公开数据集塞进训练,评测时务必检查测试集是否被无意混入——后续工作发现这是同期一些”超过 GPT-3”结论的常见锅。
-
cluster 划分主观性:什么算同一类任务有人为判断成分。论文把 NLI 和文本蕴含归在一起,但”情感分类”和”评论摘要”的边界就有商榷空间。复现实验时这一步分歧会让数字差几个点。
适用 vs 不适用场景
适用:
- 大模型(≥ 60B 量级)想加”听指令”能力,作为 SFT 第一步
- 任务格式可以转成”指令 + 输入 → 输出”的 NLP 场景
- 想在多任务间共享知识、同时做泛化的设定
- 给 t5 / llama 这类开源基座加指令对齐能力
不适用:
- 小模型(< 10B)——反向收益已被论证
- 需要主观偏好对齐(“哪个回答更礼貌”)→ 必须上 RLHF(见 instructgpt / rlhf-christiano)
- 需要事实正确性保证——instruction tuning 不解决幻觉问题
- 任务格式跟自然语言关系远(图像分类、强化学习控制)→ 思路可借鉴,方法不直接套用
历史小故事(可跳过)
- 2020-05:gpt-3 论文发布,主推”in-context learning”——给模型 0~k 个例子,不改参数
- 2021-09:FLAN 论文挂 arXiv,提出”指令微调”是另一条路,还便宜
- 2021-10:BigScience 的 T0 论文几乎同时发布,思路相近但用 11B 的 T5 做基座,证明小模型 + 大量任务也能行
- 2022-03:instructgpt 把 FLAN 的 SFT 思路 + RLHF 拼起来,成为 ChatGPT 的直接前身
- 2022-12:ChatGPT 上线,普通用户首次感受到”模型会听话”——FLAN 是这条路的起点
- 2022 至今:FLAN Collection v2 扩到 1800+ 任务,几乎所有开源指令模型都从中取数据
一个有趣的副产品:FLAN 论文一作 Jason Wei 后来去了 OpenAI,参与了 ChatGPT 的训练。
学到什么
- 范式转换:从”模型 + 提示工程”转向”模型 + 指令数据”。前者是用户花心思,后者是训练时花心思。
- 统一接口的力量:把所有任务表达成”自然语言指令”这一种格式后,模型学到的是元能力,不是单任务能力。和 t5 的 text-to-text 思路一脉相承。
- 规模是质变开关:很多大模型能力不是线性放大,是过门槛后突然出现。FLAN 在 8B / 68B / 137B 上的相反符号是早期最干净的证据之一。
- 多样性 > 数据量:60 个任务各 1000 条,比 1 个任务 60000 条更有用——前提是任务格式经过对齐。
- 工程菜谱可复现:和很多大模型论文不同,FLAN 的方法栈每一步都能在小规模验证(任务收集 → 模板撰写 → 多任务混合 → 留出评测)。这也是为什么 2022 年开源社区能很快把它复现到 t5 / llama 上。
延伸阅读
- 论文 PDF:arXiv 2109.01652(28 页,消融实验值得重点看)
- 后续数据集:FLAN Collection v2(1800+ 任务,开源)
- 同期对照:T0 — Multitask Prompted Training (BigScience)
- 工程落地:flan-t5 on HuggingFace(直接可用的指令对齐 T5)
- 一作 Jason Wei 的演讲:Instruction Tuning Talk
- 后续扩展:Scaling Instruction-Finetuned LMs (FLAN-T5/PaLM 2022) 把任务数从 60 推到 1800+
- 中文综述:搜索 “instruction tuning 综述” 可读到几篇国内研究小组的整理
关联
- 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