预训练的三个阶段:Pre-training → SFT → Alignment,每个阶段在干什么

我最早以为 ChatGPT 是直接把网上所有文本倒进一个巨大的神经网络,然后它就自己学会了回答问题。后来才发现,这个想法错得离谱。一个能跟你正常对话的模型,其实经历了三轮截然不同的训练,每一轮的目标、数据、甚至“性格”都完全不同。这三轮训练,就是现在常说的预训练(Pre-training)、监督微调(SFT)和对齐(Alignment)。

AI technology illustration

理解这三个阶段,你就理解了为什么 GPT-4 能解数学题却又偶尔胡言乱语,为什么模型会拒绝回答某些问题,以及为什么有些开源模型明明参数量一样大,用起来却像“智障”。

第一阶段:Pre-training——在海量文本里学“接话”

预训练是地基。它的目标非常纯粹:让模型学会根据前文预测下一个词。你没看错,就是这么一个简单的“接话”游戏。给模型看“今天天气真”,它要猜下一个字是“好”还是“热”还是“糟糕”。猜错了就调整参数,猜对了就继续猜下一个。就这么简单,但用了万亿级别的 token,从网页、书籍、代码、论坛帖子里面学。

这个阶段的核心损失函数是标准的交叉熵:模型输出的概率分布和真实下一个 token 之间的差距。训练出来的模型,本质上是一个概率性的文本续写器。它学会了语法、事实知识、推理模式,甚至一些代码能力,但有一个致命缺陷:它只会“接话”,不会“听话”。你问它“请写一首诗”,它可能返回的是“——然后第二天,小明去上学了”,因为它在训练数据里见过太多“请写一首诗”后面跟着这么一段叙事。

这就像你读完了整个图书馆的书,但没人教过你“回答问题”的格式。你知道所有知识,却不知道怎么组织成用户想要的答案。所以预训练模型(比如 GPT-3 的早期版本)用起来更像一个“自动补全”工具,而不是一个助手。

GPT-3 论文 里展示了预训练模型能做 few-shot 学习,但代价是你要精心设计 prompt,像哄小孩一样在上下文里给出几个例子,它才可能输出你想要的格式。这显然不够好用。

第二阶段:SFT——用“标准答案”教模型“听话”

SFT 全称 Supervised Fine-Tuning,监督微调。它的目标只有一个:把“接话模型”变成“指令跟随模型”。数据形式也变了:不再是随机文本,而是人类标注者写的 指令-回答对(prompt-response pairs)。例如:

指令:“解释什么是重力。” 回答:“重力是物体之间相互吸引的力,由质量产生……”

训练方式还是预测下一个 token,但这次输入是“指令:xxx 回答:”,模型只在“回答”部分计算损失,指令部分被 mask 掉。所以它学的是给定指令,如何生成正确的回答。InstructGPT 论文里提到,他们用了大约 13k 条这样的高质量指令-回答对,就让模型的行为发生了质变:它终于知道用户问完问题,它应该直接给答案,而不是续写一段小说。

InstructGPT 论文 里有一个关键发现:SFT 之后的模型就能在大多数评测上超越纯预训练模型,甚至比更大的预训练模型还强。但 SFT 也有天花板:它只是模仿了标注者的回答风格,并不知道什么回答是“好”的,什么回答是“有害”的。标注者可能示范了拒绝回答,但模型仍然可能被越狱 prompt 引诱输出危险内容。而且,SFT 数据很贵,高质量标注成本极高。

我踩过的一个坑:曾经以为 SFT 就是和预训练一样,只是加了一些对话数据。后来发现,SFT 只用了极少量的数据(几万条),就能让模型行为大变,这背后是预训练模型已经内化了强大的语言能力,SFT 只是“唤醒”了它遵循指令的格式。这种“能力涌现”的感觉,让我每次想起来都觉得震撼。

第三阶段:Alignment——用人类偏好给模型“调三观”

SFT 模型会回答,但可能答得有毒、捏造事实、或者过度啰嗦。对齐(Alignment)的目标就是让模型的输出更符合人类价值观:有用、诚实、无害。最经典的方法是 RLHF(从人类反馈中强化学习)

RLHF 分三步:

  1. 收集偏好数据:对同一个 prompt,让 SFT 模型生成多个回答,人类标注者挑出更好的那个(或者排序)。
  2. 训练一个奖励模型(Reward Model):这个模型模仿人类偏好,给任意回答打一个分数。它通常比语言模型小很多。
  3. 用强化学习(PPO 算法)微调 SFT 模型,让它的回答能最大化奖励模型的分数,同时加一个 KL 散度惩罚,防止模型“叛变”成胡言乱语只为刷分。

这个过程就像给模型配了一个“三观矫正器”,不断告诉它:这个回答更好,那个回答更差。经过 RLHF 的模型,不仅更安全,还更愿意承认自己不知道,避免瞎编。ChatGPT 和 GPT-4 背后的对齐就是这样做的。

但是 RLHF 太复杂,要训练奖励模型,还要调 PPO 的众多超参数。于是有了 DPO(直接偏好优化),它把偏好数据直接用来优化语言模型,省掉了奖励模型,数学上等价于有一个隐式奖励模型。DPO 让对齐变得简单很多,很多开源模型(如 Llama 3)都用 DPO 做了对齐。不过 DPO 在复杂任务上的稳定性可能不如 RLHF,目前还在演进中。

一张表说清三个阶段的区别

阶段 数据形式 训练目标 核心目的 典型模型
Pre-training 原始文本(万亿 token) 下一个词预测(交叉熵) 学习语言、知识、推理 GPT-3, Llama base
SFT 指令-回答对(几万条) 下一个词预测(仅回答部分) 学会遵循指令格式 InstructGPT (SFT), Alpaca
Alignment 偏好比较数据(几万条) RLHF (PPO) 或 DPO 对齐人类价值观 ChatGPT, Claude, Llama-2-chat

为什么不能跳过某个阶段?

经常有人问:能不能直接预训练后做 RLHF,跳过 SFT?答案是:几乎不可能。RLHF 需要模型先生成回答,然后才能比较。如果模型连指令都听不懂,它生成的回答可能是一堆随机的续写,比较毫无意义。SFT 是沟通的桥梁,先让模型学会“回答问题”这个行为,然后才能优化回答的质量。

也有人想:能不能把 SFT 数据直接混进预训练?可以,但预训练数据量太大,这点指令数据会被淹没,模型学不到稳定的指令跟随能力。而且,预训练的目标是预测下一个 token,它并不关心这是否是“用户想要的回答”。所以,三个阶段分工明确,缺一不可。

常见的误解,一个一个说清楚

SFT 和对齐是不是一回事?
不是。SFT 是模仿,对齐是偏好优化。SFT 告诉模型“应该这样回答”,对齐告诉模型“这个回答比那个更好”。效果上,SFT 能学格式,对齐能学“口味”。
对齐会让模型变笨吗?
有可能。RLHF 如果奖励模型偏好短回复,模型可能变得敷衍;如果过度惩罚拒绝回答,模型会回避一切风险。这叫做“对齐税”,需要仔细平衡。
开源模型没有对齐阶段吗?
很多开源模型有对齐,比如 Llama-2-chat 就是经过 RLHF 的。只是早期的一些开源模型只做了 SFT,所以用起来像“说话不过脑子”。

当前的能力边界与未来

三个阶段各自有软肋。预训练受限于数据质量和偏见,模型会学到网络上的歧视和错误信息;SFT 受限于标注者的水平,可能教出平庸的回答风格;对齐受限于偏好数据的覆盖度,总有越狱的 prompt 能绕过安全护栏。而且,对齐本身是“平均偏好”,可能磨平模型的创造性。

现在一个趋势是,把对齐阶段变得更轻量,甚至融进预训练——比如 Anthropic 的 Constitutional AI 用规则代替人类偏好,或者 Meta 尝试在预训练中加入合成数据。但不管怎么变,这三个阶段背后的逻辑——“学知识、学格式、学分寸”——应该还会存在很久。

说到底,训练一个让人舒服的 AI 助手,就像培养一个孩子:先要让他读万卷书(预训练),再教他懂礼貌、会沟通(SFT),最后告诉他什么话该说、什么话不该说(对齐)。少了任何一步,都不是我们今天看到的 ChatGPT。

原创文章,作者:guanweilu,如若转载,请注明出处:https://guanweilu.cn/article/67.html

(0)
上一篇 2026年8月14日 上午12:27
下一篇 2026年8月14日 上午12:29

相关推荐