wp_title: 用费曼学习法,5分钟学会LLM的监督微调阶段 wp_slug: "" wp_status: publish wp_excerpt: "" wp_categories: [] wp_tags: [] wp_post_id: 192 wp_url: https://an.lovescie.com/archives/192 wp_published_at: 2026-05-26T21:59:02

wp_updated_at: 2026-05-26T21:59:02

简介

在理解了预训练的基础上,SFT(监督微调)阶段会更容易理解。不过,“自己理解”和“讲给别人听”确实不一样——讲出来需要花费更多时间去求证内心的疑惑,但收获也更大。

想学习 LLM 详细内容的朋友可以去 B 站 或 YouTube 搜索:安德烈·卡帕西(Andrej Karpathy)的三小时深度讲解


一、预训练快速回顾

预训练的核心是让模型在互联网所有文本上学习语言规律。可以类比为:一个大脑空白的小婴儿,我们给他灌输互联网上的所有知识。具体分为三步:

  1. 数据收集与清洗:从互联网抓取海量文本,去除广告、垃圾信息,最终得到约 44 TB 的精华数据。
  2. Token 化:将文本转化为 token(词元)。例如,字母 low 在 BPE 算法中因为高频共现而被合并为一个 token low,从而减少序列长度、提高效率。
  3. 训练模型:核心目标就是学会预测下一个 token。模型像一个黑盒,内部是拥有几十亿甚至上百亿参数的数学函数。训练就是不断调整这些参数(如同调节无数旋钮),使输出概率越来越接近真实文本。

二、什么是 SFT 监督微调?

问题:预训练后的模型只会“续写”,不会“回答”

预训练结束后得到的是 Base Model(基础模型),但它有一个大问题:只会接着往下写,不会回答问题。

例如,当用户询问“1+1 等于多少”时,AI 可能回答“1+1=2,2+2=4,3+3=6”——因为它学到的就是在互联网文本中最常见的“续写”模式,而不是回答问题。

我们的真正需求是:当用户问“1+1 等于几”时,AI 直接回答“等于 2”。

解决方案:SFT 监督微调

SFT 本质上和预训练做的是同一件事——预测下一个 token,但有一个关键变化:训练数据变了

  • 预训练阶段:数据是普通文章(如 44 TB 的互联网文本)。
  • SFT 阶段:数据变为对话数据(由人工标注员根据规范标注的高质量问答对)

在训练过程中,模型输入一个对话,经过神经网络得到输出概率,与对话集中的标准答案进行比较,不断微调参数,使模型逐渐学会以“回答”而非“续写”的方式说话。

之所以叫“微调”,是因为 SFT 使用的数据量远小于预训练(预训练用几十 TB 数据,SFT 可能只用到几千到几万条高质量对话),因此只在预训练模型参数基础上做细微调整


三、SFT 阶段的核心症结:模型幻觉

完成 SFT 后,模型常常会出现幻觉——明明不知道答案,还要一本正经地编造。
根本原因在于:训练数据中,几乎所有问题都有标准答案,几乎没有“我不知道”这种回答
模型因此学会了一件事:不管会不会,都要回答

常见缓解方案

方案 做法
数据层面 在训练数据中主动加入“我不知道”类样本,让模型学会有时可以不回答
工具层面 给模型接入外部工具(如搜索引擎、数据库),不知道时去查询,而不是编造

四、常见误区

1. “你是谁”这类问题没有意义

模型没有自我意识,本质上只是一个概率系统。它会根据训练数据生成最可能的答案。
如果互联网上大量文本都说“我是 ChatGPT”,那么即便这个模型不是 ChatGPT,它也很可能这么回答。

2. 模型不擅长数数和拼写

例如问“strawberry 里面有几个 r”,模型可能回答错误。
原因在于:预训练阶段文本已被切分为 token,模型看到的不是字母 s t r a w,而是 strawberry
解决方法:让 AI 调用外部代码完成数数任务。

3. 模型在简单比较时也会出错

例如问“9.9 和 9.11 谁大”,模型有时会回答“9.11 更大”。
原因:模型不是逻辑计算器,而是统计系统。它可能把数字当成“章节编号”模式来处理(如第 9 章第 11 节 > 第 9 章第 9 节),而不是数学比较。


五、流程总结

阶段 核心目标 训练数据 输出表现
预训练 学会语言、学会接话 海量互联网文本 续写
SFT 监督微调 学会对话、学会回答 人工标注的高质量问答 回答

本质:一个从“续写”到“回答”的转化过程。


面试题与参考答案

1. 什么是 SFT(监督微调)?它在 LLM 训练中扮演什么角色?

答: SFT 是在预训练好的 Base Model 基础上,使用人工标注的高质量问答数据对模型进行微调,使其从“习惯续写”转变为“习惯回答问题”。它是将通用语言模型转化为可用对话模型的关键环节。

2. SFT 和预训练在训练方式上有什么相同点和不同点?

答: 相同点:两者本质上都是在做“下一个 token 预测”。不同点:预训练使用海量、低质量的互联网文本数据;SFT 使用少量、高质量的人工标注对话数据。

3. SFT 为什么被称为“微调”?

答: 因为 SFT 使用的数据量远小于预训练(千/万级 vs 万亿级),因此只对预训练好的模型参数做相对小幅的调整,故称微调。

4. 模型产生幻觉的主要原因是什么?

答: 训练数据中几乎所有问题都有标准答案,几乎没有“我不知道”的样本。模型因此学会“不管会不会,都要回答”。

5. 缓解模型幻觉的常见方案有哪些?

答: 两种主流方案:① 在训练数据中加入“我不知道”类样本;② 给模型接入外部工具(如搜索引擎、数据库),让模型在不确定时去查而非去编。

6. 为什么模型不擅长数单词里的字母数量(如“strawberry 里有几个 r”)?

答: 因为模型看到的是 token(词元)而非字母。例如 strawberry 可能被拆分为 strawberry 两个 token,模型没有真正看到每个字母。

7. 为什么模型在比较 9.9 和 9.11 时可能出错?

答: 模型本质是统计系统而非逻辑计算器。它可能按照类似“章节编号”的模式来处理数字(如 9.11 误认为第 9 章第 11 节大于第 9 章第 9 节),而不是严格按照数学大小比较。

8. 用户问“你是谁”这样的问题,对模型来说有意义吗?

答: 没有实质意义。模型没有自我意识,它只是根据训练数据中的统计规律来生成最大概率的回答。如果训练数据中说“我是 ChatGPT”,它就会这样回答,无论它实际是什么模型。