预训练 · 监督微调 · 强化学习
「会接话」和「会帮忙」之间有一道鸿沟——ChatGPT 的三个训练阶段
刚训完的模型,只会「接话」
上一课结尾,我们手里有了一台叠了上百层、在 1TB 文字上练过「预测下一个词」的 GPT。 它知识渊博。可你兴冲冲地敲下第一条请求:「帮我写一封向房东投诉漏水的邮件。」它的回答可能是这样:
——这是很多租客都会遇到的烦恼。在动笔之前,你需要先确认几件事……」
它没在帮你,它在续写你这句话——把你的请求当成一篇网文的开头往下接。 因为它在互联网上见过无数这种「提个问题、然后展开议论」的文章。 它脑子里压根没有「替用户完成一件事」的概念,只有「下一个词最可能是什么」。会预测下一个词,离会帮忙,还隔着一条鸿沟。
第一步:预训练——海量文本里「自学成才」
从「裸模型」到 ChatGPT,要走三步。先把整条路摆出来,再逐站细看:
预训练的目标,简单到和第 14 课一模一样:给定前 k 个词,预测第 k+1 个。变的只有规模:
- GPT-3:约 3000 亿 token;Llama-3:约 15 万亿 token(相当于把整个互联网读了好多遍)。
- 一次训练耗费的算力,按今天的价码动辄上千万美元——这是三步里唯一烧钱到这个量级的。
停下来看一眼这条贯穿全书的主线:从第 14 课 N-gram「数频率猜下一个词」,到词向量、RNN、LSTM, 再到今天上百层的 Transformer——目标从头到尾就没变过:预测下一个词。变的只是估计这个概率的工具,一个比一个强。
为什么这么个朴素目标能学出「智能」?因为想把下一个词预测准,你被迫得理解世界。 「太阳从__升起」要填「东」,得懂地球自转;「快速排序的平均复杂度是 O(n__n)」要填「log」,得真懂算法。 预训练就这样把语言、事实、推理、代码,悄悄压进了几千亿个参数里——但它学到的是「续写」,不是「听话」。
第二步:监督微调——教它「该在哪儿开口」
SFT 还是预训练那套「预测下一个词」,只换了教材:雇人写几万到几十万条「指令 → 理想回答」, 再让模型在这些范例上接着训。但有个不起眼却关键的机关——这些对话被套进一个固定模板, 而且损失只算「回答」那一段:
就这点改动,模型从「续写机器」变成了「对话助手」:看到 的请求, 它知道现在该轮到自己、按回答的格式开口,而不是把你的话往下接。
SFT 教会了格式,却没教会好坏。标注员写的范例风格五花八门——有的啰嗦有的简练、有的保守有的大胆, 而「好回答」本就没有唯一标准答案。模型只是模仿了这些范例的样子, 并不知道两个都「格式正确」的回答里,哪个更有帮助、更诚实、更安全。 更别提:你没法给每种刁钻问题都写出范例。光靠模仿,到头了。
第三步上半场:把「人类偏好」炼成一个打分器
既然「好」说不清、写不全,那就换个问法:不让人写标准答案,只让人做选择题。给模型同一个问题、让它生成两个回答 A 和 B,然后问标注员一句谁都答得上来的话——「哪个更好?」
收集几十万条这样的「A 比 B 好」,就能训练出一个奖励模型(Reward Model): 它本质是另一个 Transformer,但顶上换了个「打分头」,输入任意回答、输出一个分数。训练它的目标,就是让被人选中的那个分更高:
第三步下半场:用打分器,反过来拧语言模型
有了能打分的奖励模型,最后一步就顺理成章:让语言模型多说高分的话。这是一个不断转的循环——
但这里埋着一个大坑:如果只是一味追高分,模型会「钻空子」—— 找到一些奖励模型误判为高分、人读起来却是车轱辘废话的套路,疯狂复读。这叫奖励欺骗(reward hacking)。 所以训练时会再拴一根缰绳:在奖励里减去一项「别离原来的 SFT 模型太远」的惩罚(KL 散度):
一边追高分、一边被缰绳拽着别走火入魔——这就是经典的 PPO 方案。它有效,但要同时伺候语言模型、奖励模型、参考模型好几个网络,又笨重又难调。 于是 2023 年出了个聪明的简化版 DPO:跳过单独的奖励模型和这套 RL 循环, 直接在「A 比 B 好」的偏好数据上,用一个巧妙的损失把语言模型一步拧到位。又一次「能简则简」——如今很多开源模型都改用了它。
总结
大模型分三步炼成:预训练(海量文本预测下一词,得才华)→SFT(指令范例 + 只算回答的损失,学礼仪)→RLHF(把人类两两偏好炼成奖励模型,再用它+KL缰绳拧语言模型,立价值观)。 缺一步,模型要么只会续写、要么格式对而内容糟。
这一课你亲手推导了
- 鸿沟:预训练只学到「续写」,看到请求会接话而非帮忙。
- SFT:对话模板 + 损失只算 ⟨assistant⟩ 段,把续写机器变成对话助手。
- 奖励模型:人只做「A/B 哪个好」的选择题,蒸馏出一个能给任意回答打分的模型。
- RL 优化 + KL 缰绳:拉高高分回答的概率,又不许跑离 SFT 太远(防奖励欺骗)。
- PPO → DPO:DPO 跳过奖励模型与 RL 循环,直接在偏好数据上优化,更简单。
学习小测验
做完这一课,来检测一下核心知识点。选出你的答案后点击「提交」,即可看到正确选项与讲解。
KV 缓存、稀疏注意力与 FlashAttention
注意力是 O(n²) 的——处理一本 10 万词的书,这张表大到装不下。工程师用什么手段把它摁下去?