SFT是什么意思?大模型为什么要做监督微调
简答:SFT是 Supervised Fine-Tuning 的缩写,中文叫监督微调。它用大量“用户要求—理想答案”样本继续训练已经预训练好的模型,重点让模型学会按要求回答、遵守格式和执行特定任务。SFT主要改变模型的行为方式,不等于把最新知识可靠地写进模型;如果问题是知识更新,通常应先考虑检索增强。
定义:SFT(Supervised Fine-Tuning)是使用带有标准答案的示例数据,对预训练大模型继续训练,使其更好地遵循指令并完成特定任务的方法。
先看结论:SFT到底改了模型什么
SFT可以理解成“用标准答案教模型按要求办事”。预训练阶段,模型主要通过大量文本学习语言规律和常见知识;SFT阶段,则进一步学习什么样的输入对应什么样的输出。
例如,用户输入“把这段客户留言整理成JSON,只保留姓名、问题和紧急程度”,预训练模型可能会直接解释内容,或者输出不符合格式的文字。经过包含大量类似“指令—标准JSON答案”的SFT训练后,模型更可能稳定输出指定字段和格式。
从研究定义看,指令微调通常使用“指令—输出”数据对进行监督训练,用来缩小模型原本的“预测后续文字”目标与用户“请按要求完成任务”目标之间的差距。《Instruction Tuning for Large Language Models: A Survey》将指令微调与SFT视为通常可互换使用的概念。
| 问题 | SFT能否主要解决 | 原因 |
|---|---|---|
| 回答是否遵循指令 | 可以改善 | 训练样本直接展示了指令与理想执行方式 |
| 输出是否符合固定格式 | 可以改善 | 模型反复学习字段、顺序和表达要求 |
| 语气和写作风格是否统一 | 可以改善 | 样本中包含稳定的表达风格 |
| 能否知道今天刚发生的事情 | 不能直接保证 | SFT不是实时知识更新机制 |
| 是否能减少所有事实错误 | 不能保证 | 模型仍可能生成不准确内容 |
SFT的训练数据和基本流程
SFT的核心数据不是单纯的文章,而是带有任务要求和参考答案的样本。常见结构可以写成:
指令:把下面的投诉内容归纳为三个要点,并输出JSON
输入:物流延迟,客户要求说明原因并退还运费
理想输出:{"问题":["物流延迟","要求说明原因","要求退还运费"]}- 准备任务样本:明确用户会怎样提问,以及什么答案才算合格。
- 检查答案质量:删除事实错误、格式不统一、互相矛盾或含糊的样本。
- 拼接对话:把系统要求、用户输入和理想回答按训练模板组织起来。
- 计算训练误差:模型预测回答中的词元,并与标准答案比较,通常使用交叉熵损失。
- 更新参数:根据误差调整模型参数,使它更倾向于生成训练样本中的理想回答。
- 验证泛化效果:用没有参与训练的新问题检查模型是否仍能遵守要求,而不是只会背训练样本。
在许多对话式训练中,重点通常放在回答部分,而不是让模型机械地学习整段输入。简单说,训练目标是让模型更会生成“应该说的话”,而不是只记住问题长什么样。
数据质量往往比盲目堆数量更重要。假如训练数据中同一个问题有三种互相冲突的标准答案,模型学到的就可能不是稳定规则,而是摇摆的表达方式。错误样本还可能让模型形成错误格式、错误语气或不可靠的任务流程。
为什么预训练之后还要做SFT
预训练让模型获得较强的语言续写能力,但“会续写”与“会按用户要求完成任务”不是一回事。用户通常希望模型先理解任务,再遵守格式、语气、范围和步骤;这些要求并不会自动从普通文本续写目标中完整产生。
一项关于指令训练的研究指出,模型规模变大并不天然意味着它更能理解用户意图;通过人工编写的示范答案进行监督训练,是让模型更贴近用户任务目标的一种方式。相关研究论文还把监督微调放在后续偏好对齐之前,说明SFT常常是训练“会按要求回答”的基础阶段。
可以用学校学习来类比:
- 预训练:像读过大量书,掌握词语、句法和常见表达。
- SFT:像老师拿标准作业示范,教学生如何审题、分步骤作答和按格式交卷。
- 偏好对齐:像在多个合格答案中继续学习哪一种更符合人的偏好。
因此,SFT的主要价值不是凭空制造知识,而是把已有的语言能力组织成更可控的任务行为。
SFT、提示词、RAG和LoRA怎么区分
| 方法 | 主要解决的问题 | 是否修改模型参数 | 适合的判断 |
|---|---|---|---|
| 提示词 | 临时告诉模型任务、角色、格式和限制 | 通常不修改 | 先试提示词,任务规则还在变化或样本不多时更合适 |
| SFT | 让模型稳定执行某类任务、遵守格式或保持风格 | 会修改模型参数,或通过参数高效方法适配 | 任务重复、标准答案清楚、希望行为稳定时考虑 |
| RAG | 让模型回答时参考外部资料或可更新知识 | 通常不靠训练模型来更新知识 | 重点是文档检索、知识更新和回答依据时考虑 |
| LoRA | 降低微调时需要训练的参数规模 | 冻结大部分原模型,训练额外的低秩参数 | 需要做SFT但资源有限时,作为一种参数高效实现方式 |
| RLHF或DPO | 根据人类偏好进一步调整回答倾向 | 会继续训练或优化模型 | 已有合格回答后,还要比较“哪个回答更好”时考虑 |
RAG论文将模型参数中的知识与外部检索到的非参数记忆结合起来,重点处理知识密集型任务。《Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks》说明,检索机制可以为生成过程提供外部资料。因此,“模型不会最新知识”与“模型不会按格式回答”是两类不同问题:前者更接近RAG,后者更接近SFT。
LoRA不是SFT的对立方法,而是实现微调的一种方式。它冻结预训练权重,并在模型层中加入可训练的低秩矩阵,以减少需要更新的参数。LoRA原始论文介绍了这种参数高效适配思路。
什么时候适合做SFT,什么时候不适合
适合做SFT的情况:
- 任务重复出现,并且输入输出边界比较清楚。
- 有一批质量稳定的“指令—理想答案”样本。
- 希望模型稳定输出固定格式,例如JSON、表格字段或分类标签。
- 希望统一语气、写作风格、审核流程或特定任务步骤。
- 已经尝试过提示词,但输出仍然不稳定,且这种不稳定会重复影响工作。
不适合只靠SFT解决的情况:
- 目标是补充每天变化的新闻、库存、政策或业务数据。
- 没有明确标准答案,只有个人偏好或开放式判断。
- 训练样本数量少、质量不稳定,或者样本本身互相矛盾。
- 真正的问题是模型无法访问某份外部文档,而不是不会按格式回答。
- 只是偶尔使用一次,尚未确认任务是否值得长期固化。
一个实用判断顺序是:先用提示词验证任务规则;如果缺的是外部资料,优先考虑检索;如果资料已经具备但模型总是不能稳定执行,再评估SFT;如果重点是“多个答案中哪一个更符合偏好”,再区分偏好优化方法。
常见误区与实际影响
误区一:SFT就是给模型灌输新知识。 SFT样本当然包含内容,但它首先训练的是输入与输出之间的对应关系。它可能让模型更容易按某种方式调用或表达知识,却不能自动保证知识长期准确、完整和实时。
误区二:样本越多,效果一定越好。 如果新增样本质量低、格式冲突或答案错误,训练可能把问题放大。应先统一标注规则,再观察新问题上的表现。
误区三:做完SFT就不会幻觉。 SFT可以改善任务遵循和输出结构,但不能保证每个事实都正确。涉及外部资料时,仍需要来源核验、检索或人工审核。
误区四:LoRA等于另一种训练目标。 LoRA主要描述参数如何高效更新,SFT描述用什么监督数据和目标训练。两者可以组合使用。
误区五:SFT、RLHF和DPO完全相同。 SFT通常学习“标准示范答案”;偏好优化则更关注“答案A和答案B哪个更好”。有关直接偏好优化的研究将其描述为一种利用偏好数据进行模型对齐的方法。相关论文可用于进一步区分这两类训练目标。
常见问题
SFT的中文全称是什么?
SFT是 Supervised Fine-Tuning 的缩写,中文通常译为“监督微调”。它使用带有标准答案的样本继续训练预训练模型。
SFT和微调是一回事吗?
SFT属于微调的一种,强调使用有监督的输入—输出样本训练模型。广义的微调还可能包括其他训练目标或偏好优化方法。
SFT能不能让模型记住最新资料?
不能把它当作实时知识更新方法。SFT可能让模型学习训练数据中的表达和任务行为,但对于经常变化、需要来源核验的内容,应考虑检索增强或其他外部数据机制。
SFT和提示词工程应该先做哪个?
通常先用提示词验证任务是否清楚、标准答案是否明确。如果任务长期重复且输出仍不稳定,再评估SFT;如果缺少的是外部资料,则应优先判断是否需要检索。
LoRA和SFT有什么关系?
SFT说明“用什么监督数据训练”,LoRA说明“怎样用更少的可训练参数完成适配”。LoRA可以作为实现SFT的一种参数高效方法。
SFT训练数据应该是什么样?
核心是清晰的任务要求、输入内容和理想输出。样本应尽量保持答案标准一致,并覆盖真实使用中可能出现的不同问法。
相关阅读
参考资料
- Instruction Tuning for Large Language Models: A Survey
- Training language models to follow instructions with human feedback
- Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks
- LoRA: Low-Rank Adaptation of Large Language Models
- Direct Preference Optimization: Your Language Model is Secretly a Reward Model