关于微调,最流行的直觉是”教模型新东西”:喂它医疗数据它就懂医疗,喂它公司文档它就懂业务。但从 2023 年开始,一串论文把这个直觉拆了:1000 条样本就能让 65B 模型对齐(LIMA);对齐前后模型的输出分布几乎没变,变的主要是语气词和格式(URIAL);硬灌它不知道的新知识,学得又慢,学会之后幻觉率反而上升(EMNLP 2024)。这篇把 2021–2025 年的十一篇论文串成一条线索,回答一个问题:SFT 到底教会了模型什么?
一句话主线
SFT 是解锁器,不是灌装机:知识和能力几乎全部来自预训练,SFT 做的是把其中一种行为模式(“助手式回答”或”推理链”)接上开关。想清楚这一点,SFT 的所有工程规则——质量大于数量、别用它灌新知识、它是 RL 的地基——都变成了推论而不是口诀。
先给全文的地图:
flowchart LR
A["2021 FLAN<br/>指令微调诞生"] --> B["2022 InstructGPT<br/>SFT=对齐第一步"]
B --> C["2022 Self-Instruct<br/>数据可以自举"]
C --> D["2023 LIMA<br/>1000条就够:表面对齐假说"]
D --> E["2023 URIAL<br/>显微镜:只是风格token变了"]
D --> F["2023 False Promise<br/>冷水:风格≠能力"]
F --> G["2024 Gekhman<br/>冷水:灌新知识→幻觉"]
G --> H["2025 SFT记忆RL泛化<br/>划定边界"]
H --> I["2025 s1 & LIMO<br/>反转:千条解锁推理"]
三分钟地基:SFT 在训练循环里只改了两件事
SFT(Supervised Fine-Tuning,监督微调)听起来像一种新算法,其实它和预训练用的是同一个损失函数——交叉熵,“预测下一个 token”(为什么是交叉熵、为什么带 log,见旧文《为什么交叉熵偏偏要用 log》)。相比预训练,它只改了两件事:
第一,数据换了。 不再是互联网上的任意文本,而是精心整理的(指令,回答)对,拼成对话模板:
<|im_start|>user
帮我把这句话翻译成英文:今天天气不错<|im_end|>
<|im_start|>assistant
The weather is nice today.<|im_end|>
第二,损失只算回答部分。 用户指令那几行 token 不计损失(loss mask),模型只为”assistant 说的话”付出梯度。写成公式就是把预训练的交叉熵限制在回答 token 上:
就这么多。没有奖励模型,没有采样,没有 KL 约束——在《一个循环,六种填法》的三槽位框架里,SFT 是最朴素的填法:回答是人写的,信号是标准答案本身,信号变损失就是逐 token 交叉熵。
正因为它只是”换了数据的预训练”,接下来的问题才有意思:这么小的一步,为什么能把一个只会续写的 base 模型变成助手?它到底改变了什么?
第一幕(2021–2022):示范有效——指令微调的诞生
预训练完的 base 模型”会说话但不听话”:你问”法国的首都是哪里?“,它可能回答巴黎,也可能续写出更多问题——因为互联网上问题后面常常跟着更多问题(这个铺垫展开在《示范教不会的东西》)。
FLAN(arXiv:2109.01652,Google,2021)给出了第一个系统性答案,并命名了 instruction tuning:把 60 多个 NLP 任务全部改写成自然语言指令的形式,拿去微调一个 137B 的模型。结果是它在没见过的任务类型上的零样本表现大幅提升,在 25 个评测任务中的 20 个上超过了 175B 的 GPT-3。关键消融结论:任务数量、模型规模、自然语言指令三者缺一不可。
InstructGPT(arXiv:2203.02155,OpenAI,2022)把 SFT 放进了今天所有人沿用的三段式流水线:SFT → 奖励模型 → RLHF。值得注意的是第一步的数据量小得惊人——SFT 数据集只有约 1.3 万条标注员写的示范。预训练读过的语料以千亿、万亿 token 计,对齐示范只有万级条目,这个悬殊比例是后面所有故事的伏笔。
Self-Instruct(arXiv:2212.10560,2022)解决了”示范太贵”的问题:从 175 个人写种子任务出发,让模型自己生成指令和回答,过滤后再拿来微调自己,GPT-3 在 Super-NaturalInstructions 上绝对提升 33%。斯坦福 Alpaca 用同样的方法从 text-davinci-003 蒸出 5.2 万条数据微调 LLaMA-7B,几百美元复刻出”像 ChatGPT 的模型”,点燃了 2023 年的开源微调热潮。
到这里,行业的默认叙事还是”数据越多越好”。转折在 2023 年 5 月到来。
第二幕(2023):1000 条就够——表面对齐假说
LIMA(arXiv:2305.11206,Meta,2023)做了一个挑衅性的实验:只用 1000 条精心挑选的(指令,回答)对微调 LLaMA-65B,不做任何 RLHF。人工盲评的结果:对比 GPT-4 时,LIMA 的回答在 43% 的情况下被认为相当或更好;对比 Bard 是 58%;对比 DaVinci003(经过 RLHF 训练)是 65%。
更有信息量的是两个细节:
- 多样性和质量比数量重要:消融实验显示,只堆数据量而不增加指令多样性,收益急剧递减;优化数据质量则带来明显提升。
- 30 条就能开一个新能力的门:训练集里没有任何多轮对话样本,LIMA 却能勉强进行多轮对话;补 30 条手写对话链后,多轮能力显著改善。
作者据此提出表面对齐假说(Superficial Alignment Hypothesis):模型的知识和能力几乎全部在预训练中学到,对齐只是教会它”在和用户交互时该用哪个子分布的格式”。如果对齐只是学格式,那 1000 条当然就够了。
诚实的提醒:这篇论文有争议。LessWrong 上有针锋相对的批评认为其成对偏好评测撑不起这么强的结论,论文自己也承认 LIMA 的鲁棒性远不如产品级模型——采样不走运或遇到对抗性提示就容易翻车。“1000 条能训出能用的产品”是过度解读,“对齐所需的信息量比想象中小几个数量级”才是站得住的结论。
同一年的 AlpaGasus(arXiv:2307.08701)从反方向补了一刀:用 ChatGPT 给 Alpaca 的 5.2 万条数据逐条打分,只保留 4.5 分以上的 9 千条,训出来的模型反而更好(GPT-4 评审 + 人工评测一致),训练时间还从 80 分钟缩到 14 分钟。低质量数据不是”没用”,是负资产。
显微镜下的证据:SFT 主要改了哪些 token
表面对齐假说毕竟是假说,URIAL(arXiv:2312.01552,ICLR 2024)给它拍了一张显微镜照片。方法很直接:对同一个上下文,比较 base 模型(如 Llama-2)和对齐后模型(Llama-2-chat)在每个 token 位置上的输出分布,看对齐到底改变了哪里。
结果:大多数 token 位置上,两者的解码结果几乎一致。分布偏移集中在少数几类 token 上——话语标记(“当然""首先""需要注意的是”)、连接词、安全声明这类风格性 token,而不是承载事实和推理的内容 token。
顺着这个发现,作者做了一个更狠的演示:既然对齐改的只是风格,那不训练行不行?URIAL 方法只用 3 个固定的风格化示例 + 一个系统提示做上下文学习(不改任何权重),就让 base 模型在他们的对齐评测上追平甚至超过 SFT 过的 Mistral-7b-Instruct 和 SFT+RLHF 过的 Llama-2-70b-chat。
把 LIMA 和 URIAL 放在一起,“解锁器”的图像就清晰了:“助手式回答”这个行为模式在预训练语料里早就存在(互联网上有大量问答、教程、客服对话),SFT 做的是把这个已有模式的触发概率调高——所以少量样本就够,所以甚至上下文学习都能凑效。
这也和知识的存储方式对得上:知识以分布式的方向形态存在预训练权重里(详见《模型里没有一格存着「巴黎」》),几千条样本的梯度更新,撼动不了这个用万亿 token 压出来的结构——它只够调整”入口处的开关”。
第三幕:两盆冷水——风格不是能力,灌知识教出幻觉
解锁器的图像同时预言了 SFT 的两个失败模式,各有一篇论文验证。
冷水一:模仿学到的是风格,不是能力。 2023 年开源社区用 ChatGPT 蒸馏数据微调小模型的热潮中,The False Promise of Imitating Proprietary LLMs(arXiv:2305.15717,Berkeley)发现了一个系统性错觉:众包评审最初认为模仿模型约 70% 的输出与 ChatGPT 相当或更好,但换成针对性的自动评测(如事实问答),模仿模型相对 base 模型几乎没有缩小与 ChatGPT 的能力差距,加更多模仿数据也无济于事。模仿模型学会了 ChatGPT 的口吻——自信、有条理、格式漂亮——这足以骗过人类评审,但事实性和推理能力纹丝不动。
这正是解锁器逻辑的推论:SFT 能解锁的只有预训练里已经有的东西。base 模型里没有 ChatGPT 的知识和推理,再多蒸馏数据也解锁不出来。表面对齐假说的”表面”二字,在这里从中性描述变成了警告。
冷水二:硬灌新知识,教出来的是幻觉。 那反过来,用 SFT 给模型灌它不知道的新事实呢?Gekhman 等(arXiv:2405.05904,EMNLP 2024)用闭卷问答做了控制实验,按”模型是否已经知道这个事实”给微调样本分类,然后观察两类样本的学习动态。两个发现:
- 与预训练知识矛盾或全新的样本,学得显著更慢——模型抗拒把梯度花在改写知识上。
- 一旦这些新知识样本最终被学会,模型的整体幻觉率随之线性上升。
论文给出的解释(这是作者的推断,非定论):模型从这些样本中学到的不是新事实本身,而是一种行为模式——“就算心里没有根据,也可以编一个像样的答案”。用交叉熵强迫模型输出它内部并不支持的内容,等于示范了”如何一本正经地胡说”。想给模型加新知识,正路是检索增强(把知识放进上下文)或继续预训练(用足够大的语料量真正改写权重),而不是几千条 SFT。
第四幕(2025):SFT 的边界与不可替代
SFT Memorizes, RL Generalizes(arXiv:2501.17161,ICML 2025)把 SFT 和 RL 放进同一套受控环境里正面对比:GeneralPoints(算术卡牌游戏)和 V-IRL(真实街景导航),训练后测试没见过的规则变体和视觉变体。结论浓缩在标题里:
- 用结果奖励训练的 RL 能泛化到没见过的变体;
- SFT 倾向于记住训练数据,出了分布就失灵;
- 但去掉 SFT,RL 根本训不起来——SFT 先把输出格式稳定下来,RL 才有可以采样、可以打分的对象。
这和 DeepSeek-R1 流水线里”冷启动 SFT → RL”的顺序互相印证:SFT 的角色不是终点,是给 RL 铺路的地基。为什么示范学习注定有这个天花板?因为交叉熵的目标是”像示范”,最好的结果也只是复刻示范的分布,不可能超越示范——你度量什么就得到什么(展开见《目标函数即命运》)。想”做得更好”而不是”做得更像”,信号就必须从”标准答案”换成”打分”,那是 RL 的地盘。
反转:千条样本解锁推理——LIMO 和 s1
故事到这里似乎可以盖棺:SFT 管格式、管风格,能力靠预训练,泛化靠 RL。但 2025 年初的两篇论文让”解锁”的含义再升了一级。
s1(arXiv:2501.19393,Stanford 等):精选 1000 道题配上从 Gemini Thinking 蒸馏的推理轨迹(筛选标准就三条:难度、多样性、质量),在 Qwen2.5-32B-Instruct 上做 SFT——16 张 H100 训 26 分钟——再配一个”预算强制”的解码技巧(模型想停就append一个 “Wait” 逼它继续想),竞赛数学成绩超过 o1-preview,AIME24 从 50% 拉到 57%。
LIMO(arXiv:2502.03387,COLM 2025):只用 817 条精心编排的推理样本做 SFT,AIME24 达到 57.1%(之前用 10 万条样本的 SFT 模型只有 6.5%),MATH 94.8%。更扎眼的是泛化:在 10 个分布外基准上平均绝对提升 40.5%——直接叫板”SFT 只会记忆”的说法。
千条样本教会推理,和”SFT 教不会新能力”矛盾吗?LIMO 作者的回答(Less-Is-More Reasoning Hypothesis)恰恰是表面对齐假说的续集:推理所需的知识组件在预训练里早就齐了(数学语料、代码、解题过程读了无数),缺的只是”把中间步骤一步步写出来”这个行为模式的开关。817 条示范解锁的不是数学知识,是”慢慢想”的输出习惯。解锁的对象从第二幕的”对话风格”升级到了”推理链模式”,但动词没变——还是解锁,不是灌装。
注意边界(我的综合判断,供参考):LIMO/s1 与 False Promise 并不冲突——前者蒸馏的是可验证任务上的推理轨迹且底座本身能力够强,后者试图蒸馏的是全面的知识与能力。底座里有没有对应的”存货”,决定了同一手法是解锁还是徒劳。
收束:为什么 SFT 注定是解锁器
把四幕串起来,用第一性原理说一遍为什么”解锁器”不是修辞而是机制:
- 信号量级悬殊:预训练是万亿 token 压出来的权重结构,SFT 只有千到万条样本。这点梯度改不动知识存储(那需要继续预训练的量级),只够调高某个已有模式的触发概率——所以 LIMA 的 1000 条够用,所以 URIAL 看到的偏移集中在开头几个风格 token。
- 目标函数决定上限:交叉熵只会奖励”像示范”。示范里有的(格式、语气、推理链的样子)它能学;示范里没有、底座里也没有的(新知识、超越示范的正确性),它学到的只能是表演——False Promise 的风格错觉和 Gekhman 的幻觉机制是同一枚硬币的两面。
- 于是分工清晰:知识靠预训练(或检索),行为模式靠 SFT 解锁,超越示范的优化靠 RL。SFT 在流水线里的位置不可省略也不可高估——它是把 base 模型翻译成”可交互、可采样、可打分”形态的那一道工序。
工程速查表
| 你想做的事 | SFT 合适吗 | 依据 |
|---|---|---|
| 教输出格式、语气、角色设定 | 最合适,几百到几千条高质量样本即可 | LIMA、URIAL |
| 教公司新知识 / 新事实 | 不合适,学得慢且推高幻觉;用 RAG 或继续预训练 | Gekhman (arXiv:2405.05904) |
| 提升数学 / 代码推理 | 少量精编推理轨迹可解锁(前提:底座够强) | LIMO、s1 |
| 让模型在新规则 / 新分布上举一反三 | SFT 记忆倾向明显,要泛化用结果奖励 RL | arXiv:2501.17161 |
| 作为 RL 前的格式稳定器 | 必要,没有它 RL 训不起来 | arXiv:2501.17161、R1 冷启动 |
| 蒸馏强模型的全面能力 | 警惕风格错觉:人评变好 ≠ 能力变好,用针对性评测验收 | False Promise |
| 数据预算怎么花 | 先过质量筛(低质样本是负资产),再保指令多样性,最后才是堆量 | AlpaGasus、LIMA 消融 |
全景总表:十一篇论文各自钉下的钉子
| 论文 | 年份 | 一句话结论 |
|---|---|---|
| FLAN (2109.01652) | 2021 | 指令格式微调让模型在没见过的任务上零样本泛化 |
| InstructGPT (2203.02155) | 2022 | SFT 成为对齐流水线第一步,示范只需万级条目 |
| Self-Instruct (2212.10560) | 2022 | 指令数据可以自举生成,人力不再是瓶颈 |
| LIMA (2305.11206) | 2023 | 1000 条精选样本即可对齐 → 表面对齐假说 |
| False Promise (2305.15717) | 2023 | 模仿微调学到风格而非能力,人评会被骗 |
| AlpaGasus (2307.08701) | 2023 | 9k 优质样本胜过 52k 混杂样本,低质数据是负资产 |
| URIAL (2312.01552) | 2023 | 对齐前后分布偏移集中在风格 token;3 个上下文示例可近似对齐 |
| Gekhman 等 (2405.05904) | 2024 | SFT 灌新知识学得慢,学会后幻觉线性上升 |
| SFT Memorizes, RL Generalizes (2501.17161) | 2025 | SFT 记忆、RL 泛化;但 SFT 是 RL 必需的格式地基 |
| s1 (2501.19393) | 2025 | 1000 条推理轨迹 + 26 分钟 SFT 超过 o1-preview 竞赛数学 |
| LIMO (2502.03387) | 2025 | 817 条样本解锁推理且分布外泛化,“解锁”升级到推理链 |
诚实的提醒
- 本文所有实验数字(LIMA 的 43%、LIMO 的 57.1%、AlpaGasus 的 9k vs 52k 等)均来自论文原文或其官方页面,写作时逐一核实过链接,但没有一个是我亲手复现的。
- “解锁器”是我对这条论文线索的归纳框架;LIMA 的表面对齐假说本身有争议(正文已链接批评),LIMO 对”SFT 只会记忆”的反驳也还年轻,把它们当作当前证据下最好的工作假说,而不是定论。
- 成本最低的亲手验证实验(在之前跑通的本地 Qwen2.5-0.5B 环境上约半小时):① 给 base 模型和 instruct 模型发同一个问题(如”法国的首都是哪里?”),观察前者续写、后者回答——这是 SFT 效果的直接肉眼证据;② 再给 base 模型的 prompt 里塞 3 个”问题→助手式回答”的示例(URIAL 式),观察它是否瞬间”像被对齐过”。如果②成立,你就亲手摸到了”助手模式本来就在预训练里,SFT 只是开关”这个结论的质感。
参考来源
arXiv 论文(均在写作当日核实):
- FLAN: Finetuned Language Models Are Zero-Shot Learners (arXiv:2109.01652)
- InstructGPT: Training language models to follow instructions with human feedback (arXiv:2203.02155)
- Self-Instruct: Aligning Language Models with Self-Generated Instructions (arXiv:2212.10560)
- LIMA: Less Is More for Alignment (arXiv:2305.11206)
- The False Promise of Imitating Proprietary LLMs (arXiv:2305.15717)
- AlpaGasus: Training A Better Alpaca with Fewer Data (arXiv:2307.08701)
- URIAL: The Unlocking Spell on Base LLMs (arXiv:2312.01552)
- Does Fine-Tuning LLMs on New Knowledge Encourage Hallucinations? (arXiv:2405.05904)
- SFT Memorizes, RL Generalizes (arXiv:2501.17161)
- s1: Simple test-time scaling (arXiv:2501.19393)
- LIMO: Less is More for Reasoning (arXiv:2502.03387)
工程实践与讨论:
- Stanford Alpaca(GitHub)
- SFTvsRL 官方代码(GitHub)
- s1 官方代码(GitHub)
- LIMO 官方代码(GitHub)
- 对 LIMA 的批评:MetaAI: less is less for alignment(LessWrong)
本站相关旧文: