SFT 监督微调是什么?

SFT 监督微调是什么?如何让模型学会按指令回答?
上篇文章里我们聊了预训练——模型在海量互联网文本里泡了几个月甚至几年。它学会了预测下一个词,积累了语言能力,甚至涌现出了世界知识。
但你试试问它:"请解释一下量子力学。"
预训练模型会怎么回应?它大概率会接着你的话往下编,可能是量子力学的内容,也可能突然跳到别的方向。因为它只学过"怎么续写",没学过"怎么回答"。
这就引出了今天的主题——SFT(Supervised Fine-Tuning),监督微调。让模型从"文本续写高手"变成"听话助手"的关键一步。
01 从"自说自话"到"听懂指令"
你可能觉得奇怪:大模型不是号称"理解人类语言"吗?怎么还不会回答问题?
问题在于,预训练学的是"文本接龙"。
给它一段话,它接着往下说。给它一个开头,它把故事编完整。但你问它问题,它不知道这是在"提问"——在它眼里,问题和故事开头长得一模一样。
SFT要做的事情,就是告诉模型:看到这种格式的输入,你应该这样回应。

打个比方。
预训练毕业的学生,满脑子都是知识,但不懂职场规则。老板布置任务,他可能把任务当成闲聊,也可能在汇报时突然扯到毫不相关的话题。
SFT就是新员工入职培训。告诉他:老板这样说话,是在下达指令;那样说话,是在寻求意见。你的回应要有针对性,别自顾自发挥。
这就是所谓的"指令遵循能力"——SFT让模型学会了听弦外之音。
02 SFT的本质:其实还是"预测下一个词"
有意思的是,SFT的技术原理和预训练几乎一模一样。
都是给模型一段文本,让它预测下一个词。都是计算损失,反向传播,更新参数。
区别只在于数据形式。
预训练用的是海量通用文本——网页、书籍、对话、代码,混在一起让模型自己学。SFT用的是精心设计的"指令-回答"对。

看个具体例子。
SFT数据长这样:
输入:请解释什么是光合作用,用小学生能听懂的方式。
输出:光合作用就是植物吃饭的方式!植物用叶子吸收阳光...模型看到的还是一段文本,学的事情还是"预测下一个词"。但通过这种格式,它慢慢理解了:哦,原来在这种对话结构里,我应该在"输出"部分给出相应的回答。
本质没变,任务变了。
就像同一个学生,让他做数学题是在训练逻辑推理,让他写检讨书是在训练表达能力。学习的方式是相通的,应用场景不同而已。
03 损失计算:为什么只"批改答案"?
训练时,模型看到的不是整段"输入+输出"吗?那损失应该整段都算吧?
不是的。
SFT有个关键细节:损失只在回答部分计算,输入部分被"mask"掉了。
这意味着训练时,模型不会因为"如何提问"而受惩罚,只会因为"如何回答"而受奖励。
为什么这样设计?
因为输入的提问方式五花八门。你可以用"请解释",也可以用"能不能说说",甚至可以用"啥是"。模型不需要学会所有提问方式,那是预训练阶段已经掌握的技能。
SFT要解决的核心问题是:面对各种提问,模型能不能给出符合预期的回答。

这个设计很像老师批改作业——重点看答案对不对。题目写得潦草不工整,最多扣点卷面分。但如果答案错了,那才是真正的问题。
所以SFT让模型专注学习"怎么答","怎么问"留给预训练操心。
04 数据质量:1000条真的能顶几万条?
聊SFT,必须提LIMA这篇论文。
他们做了个实验:用1000条高质量、专家撰写的"指令-回答"数据做SFT,效果居然能和用几万条普通数据训练出来的模型打平。
1000对10万。差了100倍。
这个结果让很多人震惊。不是说大数据时代数据为王吗?怎么质量反而比数量更重要了?
原因在于,SFT本质上是在"激活"预训练已经学会的能力,而不是"灌输"新知识。
预训练模型就像一个读遍天下书的学者,知识都在脑子里,只是不知道怎么用。高质量的SFT数据就像一把钥匙,告诉他:这堆知识可以这样组织,那堆知识可以那样输出。
差的SFT数据呢?就像让学生做1000道重复的加减法。做了半天,他确实会算了,但换个题型就懵。知识还是那些知识,泛化能力没有提升。

这行有个说法:"Garbage in, garbage out"——喂进去的是垃圾,出来的也是垃圾。低质量数据不仅浪费计算资源,还可能让模型学到错误的模式。
好的SFT数据长什么样?
首先,答案要准确、清晰、有帮助。其次,数据要有多样性——涵盖不同领域、不同难度、不同风格的提问。最后,格式要规范,避免模型学到奇怪的回复模式。
05 SFT能做什么、不能做什么
SFT很重要,但它不是万能的。
很多初学者容易陷入两个极端:要么觉得SFT能解决一切问题,什么都想靠微调解决;要么完全否定SFT的作用,觉得预训练够了。
两种观点都片面。
先说SFT擅长的事情。
SFT擅长:
- 让模型学会特定的回复风格(正式/口语/专业)
- 让模型理解任务格式(问答/摘要/翻译)
- 让模型在特定场景下表现得更稳定
SFT不擅长:
- 教模型全新的知识(这要用continue pretrain)
- 让模型知道回答的好与坏(这要靠RLHF)
- 无限制地训练(会丢失预训练学到的能力)
第三点特别值得注意,叫"灾难性遗忘"。

什么意思?
你疯狂给模型喂领域数据,训练几十个epoch。结果模型确实学会了这个领域的知识,但通用能力下降了——原来能写代码能聊天,现在只会你这一个领域。
这就像给员工做培训,本意是让他掌握新技能。但如果培训强度太大、时间太长,他可能连原来会的东西都忘了。
怎么避免?
控制训练轮次。用大的学习率、长时间训练,模型会快速拟合新分布,但也会快速遗忘旧分布。通常用1e-5到1e-6这个量级的学习率,训练1到3个epoch,让模型慢慢适应新任务。
06 SFT之后:大模型训练的完整流水线
SFT完了就结束了吗?
没有。
SFT只是大模型对齐训练的第一步。
完整的流程通常是:预训练 → SFT → Reward Model训练 → RLHF(人类反馈强化学习)。

每个阶段解决不同问题。
预训练让模型"有知识"。SFT让模型"会回答"。但"会回答"不等于"回答得好"。
模型可能给出一个技术上正确但毫无帮助的回答。也可能给出一个看似合理但包含事实错误的答案。怎么判断哪个回答更好?这就是Reward Model要解决的问题。
而RLHF则让模型学会"追求好回答,避免坏回答"。
把这三个阶段连起来看,就构成了大模型训练的完整链条。
预训练是打地基,SFT是盖毛坯,RLHF是精装修。每一层都在前一层基础上更进一步,最终产出我们想要的那个"听话、懂事、有用"的AI助手。
下篇预告
模型怎么知道自己的回答是好是坏?它是怎么学会区分"好的回答"和"坏的回答"的?
这就是我们下一篇要聊的内容——Reward Model,奖励模型。
