大模型训练范式:预训练、SFT、RLHF 与 DPO
当我们谈论一个大模型的能力从何而来,往往容易把它想象成一个单步骤的「训练」动作。实际上,今天主流的对话模型几乎都遵循一条分阶段演进的路径:先在海量的无标注文本上做预训练,得到具备通用语言能力的基座模型;再用人工或蒸馏得到的指令数据做监督微调,让模型学会遵循格式与指令;最后通过偏好对齐,让模型的回答更符合人类的期待。本文把这条链路拆开,对比每个阶段的数据、目标函数与成本,并重点讲清 SFT、RLHF、DPO 各自解决什么问题。
训练范式总览
可以把完整流程理解为从「语言理解能力」逐步进化为「可用助手」的过程:
预训练 (Pre-training) -> 基座模型 (base model),具备语言与知识
监督微调 (SFT) -> 指令模型 (instruct model),学会格式与遵循
偏好对齐 (RLHF / DPO) -> 对齐模型 (aligned model),更符合人类偏好
注意这里的「进化为」并不是数学上的等价,而是工程实践里能力重心的转移。三个阶段并不互斥,也经常以不同比例、不同顺序组合使用。
预训练 Pre-training
预训练是整个流程的地基。它的目标是自监督学习,最常见的形式是下一 token 预测(next-token prediction):给定一段上文,模型预测下一个最可能的词元(token)。由于互联网上存在几乎无限量的文本,这类任务不需要人工标注,因此可以获得极大的数据规模。
# 预训练阶段的损失函数(因果语言建模,简化示意)
# x 为输入序列,模型对位置 t 的下一个 token 做 softmax 分类
loss = -sum_t log P_theta(x_t | x_{<t})
这一阶段算力高度密集,通常需要数千张 GPU 连续训练数周甚至数月,最终得到一个「什么都知道一点,但未必听你话」的基座模型。Vaswani 等人提出的 Transformer 架构(Attention Is All You Need)是现代预训练模型的共同基础,自 2017 年提出以来,几乎所有大模型都建立在其注意力机制之上。
监督微调 SFT
预训练模型虽然在语言上很强大,却不一定懂得如何按用户指令作答。监督微调(Supervised Fine-Tuning,SFT)用一个相对小得多的、带有「指令-回答」配对的数据集,对模型做有监督训练。数据来源通常是人工撰写,或用强模型蒸馏得到的示范样本。
SFT 的本质是模仿学习:模型学习去贴近这些高质量示范的分布。它主要解决的是「格式与遵循」问题,让模型输出更稳定的结构化回答,而不是自由散漫的续写。
指令微调与上下文学习的区别
这里容易混淆两个概念。指令微调(instruction tuning)是在训练阶段发生的,它修改模型权重,使模型在见到指令时整体行为更贴合预期。上下文学习(in-context learning)则指推理阶段的能力:你在不改动权重的前提下,于提示词里给出若干示例,模型就能据此完成新任务。前者是「训练出来的能力」,后者是「提示出来的能力」。
奖励模型 RM
偏好对齐的第一步,是先定义「什么是好回答」。做法是由标注者对同一指令的多个回答进行排序或二选一,然后用这些数据训练一个奖励模型(Reward Model,RM)。RM 的直觉来自 Bradley-Terry 模型:给定一对回答 y_w(更受偏好)与 y_l(较少受偏好),希望 RM 给前者打出更高的分数。
人类偏好数据格式(成对比较,示意)
prompt: 请用一句话解释什么是过拟合
chosen (y_w): 模型在训练集上表现好但泛化差,就像背题不会变通
rejected (y_l): 过拟合是一种机器学习现象(过于简略、信息量低)
奖励模型本身不直接部署,它只是后续对齐阶段用来打分的裁判。
RLHF 与 PPO
RLHF 意为「基于人类反馈的强化学习」(Reinforcement Learning from Human Feedback)。在 InstructGPT 的工作中(Ouyang et al. 2022),流程是先 SFT,再训练 RM,最后用强化学习算法 PPO 去优化策略模型,使其生成的回答获得更高的奖励分数,同时不偏离原模型太远。
RLHF 三阶段:SFT 模型 -> 训练 RM -> PPO 优化策略
目标:maximize E[ RM(response) ] - beta * KL(策略 || 参考模型)
RLHF 的优势在于能利用比 SFT 更细粒度的偏好信号,进一步把模型对齐到「有用、诚实、无害」。但代价也明显:它需要同时维护策略模型、参考模型、奖励模型和价值模型,训练流程复杂、超参敏感,工程上不够稳定。
DPO
DPO(Direct Preference Optimization,直接偏好优化)由 Rafailov 等人于 2023 年提出,思路非常巧妙。它指出:RLHF 里那个复杂的奖励模型,其实可以被重参数化为策略模型本身的一个闭式解。换句话说,最优策略可以直接用偏好数据表达出来,于是我们不必再显式训练 RM,也不必跑强化学习采样。
# DPO 损失(简化示意)
# pi_theta 为当前策略,pi_ref 为参考(SFT)模型
# y_w 偏好回答,y_l 拒绝回答,beta 为温度系数
loss = -log sigmoid(
beta * (log pi_theta(y_w) / pi_ref(y_w)
- log pi_theta(y_l) / pi_ref(y_l))
)
DPO 把偏好对齐简化成了一个类似二分类的损失,直接在 SFT 模型之上用偏好对优化即可。它稳定、轻量、容易实现,不需要在训练时从模型采样,也不需要繁琐的超参调优。这是它在业界迅速流行的原因。当然,它仍依赖高质量的偏好数据,本质上解决的还是「对齐」而非「知识」问题。
各阶段成本对比
下面用量级描述行业普遍认知的趋势,而非精确数字,仅作推断性参考:
- 数据规模:预训练使用数万亿 token 级别的语料;SFT 通常仅数万至数百万条样本;偏好数据往往比 SFT 更少,且标注单价更高。
- 标注成本:预训练几乎零人工标注;SFT 需要撰写或蒸馏示范,有一定成本;RM 偏好标注需要人工逐一比较,单位成本最高。
- 算力成本:预训练是绝对大头,呈数量级领先;SFT 与 DPO 是相对廉价的小步微调;RLHF 因多模型并行与采样,算力与工程成本介于两者之间且明显更高。
可以推断的是,越靠前的阶段越「重」,越靠后的阶段越「巧」——预训练决定知识上限,后训练决定可用性下限。
常见误区
第一,微调不等于记忆数据。SFT 并不把训练样本原样背下来,而是调整权重分布去贴合其风格与结构。即便只用几千条高质量样本,也能显著改变模型的语气、格式与行为倾向。
第二,小数据 SFT 也能显著改变风格。很多团队不需要重新预训练,仅靠少量指令数据即可让基座模型从「续写机器」变成「对话助手」,这正是后训练阶段的价值所在。
第三,对齐阶段不传授新知识。无论是 RLHF 还是 DPO,主要优化的是回答的偏好分布,而非扩充事实性知识。若模型存在知识盲区,对齐无法替代预训练与检索增强。
小结
大模型的能力是分阶段训练出来的:预训练以自监督的下一 token 预测建立语言与知识地基,SFT 以指令示范让模型学会遵循格式,RLHF 借助奖励模型与 PPO 把模型进一步对齐到人类偏好,而 DPO 则通过重参数化把偏好对齐简化为一个直接的分类损失。理解每条链路解决的是什么问题,有助于在实际项目中判断该投入在数据、算力还是对齐策略上。
参考与延伸阅读
- arXiv:1706.03762 — Attention Is All You Need(Vaswani et al., 2017)【已核验】
- arXiv:2203.02155 — Training language models to follow instructions with human feedback(Ouyang et al., 2022,InstructGPT / RLHF)【已核验】
- arXiv:2305.18290 — Direct Preference Optimization: Your Language Model is Secretly a Reward Model(Rafailov et al., 2023,DPO)【已核验】
- arXiv:2308.09583 — Llama 2: Open Foundation and Fine-Tuned Chat Models(Touvron et al., 2023,含 RLHF 实践细节)【行业公开论文,编号引用以官方页面为准】