《CS336 Spring 2025 Lecture 15:RLHF 与 SFT》学习笔记

将预训练完成的基础模型(如GPT-3)转化为实用、安全的指令跟随模型(如ChatGPT),重点讲解监督微调(SFT)与基于人类反馈的强化学习(RLHF)两大后训练核心技术。

本节课的结构大致参照 InstructGPT 论文,因为我们今天使用的大部分后训练流程仍然源自这篇论文。

一、课程背景与目标

预训练是将海量通用数据打包进模型参数,赋予模型推理、问答的潜力,而后训练则是通过针对性的数据和算法,引导模型展现我们期望的行为,让预训练模型学会遵循指令,提高安全性和产品化价值低。从 GPT-3(仅预训练)到 ChatGPT(预训练+后训练),后者彻底改变了大模型的落地形态。

本节课的核心问题是,

  1. 我们需要什么样的后训练数据?
  2. 如何高效利用这些数据调整模型行为?
  3. 如何规模化后训练过程,同时保证安全性?

标准后训练三阶段流程(InstructGPT范式)

这个图大致描述了构建指令跟随模型的标准方法:先模仿(SFT),再进行强化(RLHF)。

  1. 监督微调(SFT):用专家演示数据训练模型模仿人类行为
  2. 奖励模型(RM)训练:用人类成对偏好数据训练评分模型
  3. 强化学习(RL):用奖励模型作为监督信号,通过PPO算法优化模型策略

下面我们就分SFT、RLHF两部分展开。

第一部分:监督微调(SFT)

SFT的本质是行为克隆:让模型模仿人类专家的输出,学习"应该怎么回答问题"。其效果取决于两个要素:训练数据质量微调方法

我们都知道数据非常重要,在后训练阶段更是如此。因为你只用非常少量的数据,就能让模型表现出你想要的精确行为。所以如果你的指令微调数据有噪声,模型就会产生一些非常奇怪的行为。

下面是三种不同构建方式的指令微调数据集的对比:

数据集 构建方式 核心特点 优缺点
FLAN(谷歌) 聚合69个现有NLP任务数据集(问答、分类、摘要等) 数据量大、任务覆盖广、获取成本低 格式人工改造痕迹明显,与真实聊天交互差异大,回答普遍简短
Alpaca(斯坦福) 用175条人类种子指令+GPT-3生成更多指令+InstructGPT生成回答 格式接近真实用户输入,回答为长文本自然语言 指令多样性不足,存在生成式数据的固有偏差
OpenAssistant 全球线上爱好者众包编写 回答质量高、细节丰富,部分包含引用来源 收集成本极高,规模有限

人类和AI评判者都存在强烈的长回答偏好(约60%-70%的概率选择更长的回答)和列表格式偏好。这种偏好与事实正确性无关:即使长回答包含更多幻觉,也更容易被评为"更好"。 不能仅依赖开放式偏好评估,必须结合MMLU、GSM8K等客观基准测试。

在模型不知道的事实上进行SFT,会严重加剧幻觉。比如,训练模型输出引用格式时,如果模型本身不知道对应的文献,它会学会"只要遇到复杂问题,就在结尾编造一个引用"。对于模型的损失来说,编造一个引用比完全不写引用的错误要小。回答的结构必须被完整填充,因为你必须在正确的位置填上 token。约翰・舒尔曼(John Schulman)观点是,SFT只能"提取"模型预训练中已经存在的知识,不能可靠地注入新知识。强行注入会导致模型学习"格式捷径"而非真实知识。

这也是为什么基于策略的强化学习方法很重要的原因之一,因为你想知道模型已经知道什么,只教它那些它能做到的事情,以避免它产生幻觉。当它遇到不知道的事实时,也许你应该修改你的微调数据,让它说 "哦,我不知道这个事实",而不是强迫模型去回答。

指令微调有一个非常反直觉的现象,那就是一个完全正确、内容非常丰富的指令微调数据集,实际上可能对语言模型不是一件好事,因为它会教你的语言模型试图编造事实来匹配那种知识深度。

这就是我们要非常小心处理蒸馏数据(当教师模型比学生模型更强时)以及人类标注数据(当人类可能比模型知识渊博得多时)的原因之一。要让模型在不知道的时候能够得体地表示不知道。强化学习式的正确性优化可能会有所帮助,而在指令微调层面优化这个问题非常混乱和困难,至少在公开的研究文献中,人们还没有完全解决这个问题。

另外一个作用方面是安全性。少量安全数据即可大幅提升模型安全性。大概500条安全指令样本,就能让模型学会拒绝恶意请求,达到一个合理的水平。挑战在于如何平衡"拒绝有害请求"和"避免过度拒绝"。例如模型可能将"如何杀死一个Python进程"误判为有害请求而拒绝回答。

4. SFT的方法演进

(1) 基础方法:梯度下降

学术场景的标准做法:将指令和回答拼接成序列,用普通的自回归损失进行微调。这个方法代码很简单,本质上与预训练的训练循环完全一致。

(2) 中期训练(两阶段训练)

工业界预训练与后训练的边界逐渐模糊,有一个概念是mid-training(中期训练),它将原本SFT使用的数据混合到了预训练的最后阶段(学习率衰减阶段)。典型流程如下(miniCPM为例):

  1. 第一阶段(稳定阶段):纯预训练数据(Common Crawl、代码、书籍等)
  2. 第二阶段(衰减阶段):混合高质量预训练数据(维基百科)+ 指令微调数据(UltraChat、Stack Exchange、Evol-Instruct等)
  3. 最后进行一轮简短的纯SFT

这样做的优势是可以避免灾难性遗忘,更好地利用指令数据,大幅提升最终效果;但是副作用是"基础模型"的定义越来越模糊——现在公开的所谓"基础模型",大多已经经过了隐式的指令调优。

第二部分:基于人类反馈的强化学习(RLHF)

1. 从模仿到优化:为什么需要RLHF?

SFT需要人类专家生成完整回答,对于7B模型,SFT的标注成本约2.5万美元,而成对反馈(Pairwise Feedback)的标注成本仅约4000美元。成对反馈即给同一个问题的两个或者多个回答,让人挑哪个更好,是 RLHF 里专门用来训练 "裁判模型(奖励模型 RM)" 的数据。就像我们偶尔会在使用AI的时候被问到 "这个回答更好还是那个回答更好?",成对反馈就是在模拟这种评判过程。而且人类往往更擅长"判断哪个回答更好",而不是"写出最好的回答"。

2. RLHF的数据:成对偏好反馈

标准收集流程是用SFT模型对同一提示生成多个回答,然后让标注员对回答进行排序(通常是二选一的成对比较),用这些排序数据训练奖励模型,为任意(提示, 回答)对输出一个标量奖励值。主流评估维度是InstructGPT提出的三大支柱——有用性、真实性、无害性

但在实际数据生产中,获得高质量、可验证的标注员非常困难。众包标注质量低、易受 AI 污染而且存在伦理与人口统计学偏差(比如标注员大多数是菲律宾人和孟加拉国人,用这些标注出来的模型不知何故比以前更与东南亚宗教对齐了)。后来人们就发现,GPT-4作为评判者的与人类的一致性,已经接近人类标注员之间的一致性,且成本低得多。主流应用有:

  • UltraFeedback:开源的大规模AI反馈数据集
  • 宪法AI(Anthropic):让模型根据一套"宪法"原则自我批判和改进
  • Tulu3、Zephyr等开源模型:完全基于AI反馈完成RLHF,效果超过早期人类反馈模型

3. PPO:RLHF的原始算法

InstructGPT使用的原始算法,核心目标函数是:

objective(ϕ)=E(x,y)DπϕRL[rθ(x,y)βlog(πϕRL(yx)πSFT(yx))]+γExDpretrain[log(πϕRL(x))]objective(\phi) = E_{(x,y)\sim D_{\pi_{\phi}^{RL}}}\left[ r_{\theta}(x,y) - \beta log\left( \frac{\pi_{\phi}^{RL}(y|x)}{\pi^{SFT}(y|x)} \right) \right] + \gamma E_{x\sim D_{pretrain}}\left[ log\left( \pi_{\phi}^{RL}(x) \right) \right]

  • KL惩罚项:防止RL策略与原始SFT模型偏离过远,避免奖励过拟合
  • 预训练损失项:缓解灾难性遗忘

PPO的缺点是实现极其复杂,调参困难,稳定性差。

DPO:彻底简化RLHF的革命

DPO(Direct Preference Optimization,直接偏好优化)在2023年提出,彻底简化了RLHF流程,目前几乎所有开源RLHF模型都使用DPO。

DPO的核心目标是彻底简化PPO的复杂实现。它去掉了PPO必需的奖励模型在线rollout循环,本质是在成对偏好数据上做加权监督学习:对好的回答做正梯度更新,对坏的回答做负梯度更新。

  1. RLHF原始目标:最大化期望奖励,同时用KL散度约束策略不偏离参考模型

    maxπθExD,yπθ(yx)[rϕ(x,y)]βDKL[πθ(yx)πref(yx)]\max _{\pi_{\theta}} \mathbb{E}_{x \sim \mathcal{D}, y \sim \pi_{\theta}(y | x)}\left[r_{\phi}(x, y)\right]-\beta \mathbb{D}_{KL}\left[\pi_{\theta}(y | x) \| \pi_{ref }(y | x)\right]

  2. 非参数假设:假设策略类包含所有可能函数,则最优策略可表示为

    πr(yx)=1Z(x)πref(yx)exp(1βr(x,y))\pi_{r}(y | x)=\frac{1}{Z(x)} \pi_{ref }(y | x) exp \left(\frac{1}{\beta} r(x, y)\right)

    由此可反解出隐含奖励r(x,y)=βlogπr(yx)πref(yx)+βlogZ(x)r(x, y)=\beta log \frac{\pi_{r}(y | x)}{\pi_{ref }(y | x)}+\beta log Z(x)

  3. 代入Bradley-Terry偏好目标,得到最终DPO损失

    LDPO(πθ;πref)=E(x,yw,yl)D[logσ(βlogπθ(ywx)πref(ywx)βlogπθ(ylx)πref(ylx))]\mathcal{L}_{DPO}\left(\pi_{\theta} ; \pi_{ref }\right)=-\mathbb{E}_{\left(x, y_{w}, y_{l}\right) \sim \mathcal{D}}\left[log \sigma\left(\beta log \frac{\pi_{\theta}\left(y_{w} | x\right)}{\pi_{ref }\left(y_{w} | x\right)}-\beta log \frac{\pi_{\theta}\left(y_{l} | x\right)}{\pi_{ref }\left(y_{l} | x\right)}\right)\right]

DPO梯度的直观解释

θLDPO=βE[σ(r^θ(x,yl)r^θ(x,yw))奖励估计错误时权重更高(θlogπ(ywx)θlogπ(ylx))]\nabla_{\theta} \mathcal{L}_{DPO}=-\beta \mathbb{E}\left[\underbrace{\sigma\left(\hat{r}_{\theta}\left(x, y_{l}\right)-\hat{r}_{\theta}\left(x, y_{w}\right)\right)}_{\text{奖励估计错误时权重更高}} \left(\nabla_{\theta} log \pi\left(y_{w} | x\right)-\nabla_{\theta} log \pi\left(y_{l} | x\right)\right)\right]

  • 当隐含奖励模型预测错误时,梯度更新幅度更大
  • 本质就是"给好的东西加权,给坏的东西降权"

DPO的主流变体

DPO催生了数十种"*PO"变体,其中两个在工业界被广泛验证:

  1. SimPO

    • 去掉了参考模型,失去了原有的数学严谨性,但保留了核心思想。同时加入了长度归一化:按回答长度缩放梯度幅度

    LSimPO(πθ)=E[logσ(βywlogπθ(ywx)βyllogπθ(ylx)γ)]\mathcal{L}_{SimPO}\left(\pi_{\theta}\right)=-\mathbb{E}\left[log \sigma\left(\frac{\beta}{\left|y_{w}\right|} log \pi_{\theta}\left(y_{w} | x\right)-\frac{\beta}{\left|y_{l}\right|} log \pi_{\theta}\left(y_{l} | x\right)-\gamma\right)\right]

  2. 长度归一化DPO:保留参考模型,仅在DPO目标中加入长度归一化项,解决了原始DPO偏向短回答的问题

RL研究的重要警示:结果高度依赖实验设定

强化学习中几乎没有通用结论,所有结果都高度依赖具体实验条件。AI2团队早期研究发现PPO优于DPO,但在后续Tulu 3工作中发现:高质量的SFT可以吃掉PPO和DPO的所有收益,只有带长度归一化的DPO能在SFT基础上获得小幅提升。不要把任何单一论文的实验结果当作绝对真理

RLHF的两大致命问题

RLHF存在两大致命问题,这也是催生RLVR(基于可验证奖励的强化学习)的核心动机:

  1. 过度优化(Overoptimization):本质是奖励模型的过拟合:随着RL训练步数增加,代理奖励持续上升,但真实人类偏好胜率先升后降。普遍存在于人类偏好和带噪声的AI反馈中,但不存在于无噪声的可验证奖励中。根本原因是人类偏好的噪声性和复杂性

  2. 校准性丧失:RLHF将模型从"概率分布建模"转变为"策略优化",不再是校准的概率模型。表现为:温度=1时模型严重过度自信,输出结果的置信度与实际准确率不匹配。这是设计使然,因为校准性从未被加入奖励函数

四、课程总结

  1. 指令微调(SFT)的威力远超预期:仅用少量高质量数据,就能让基础模型表现出类似ChatGPT的行为。
  2. 数据是后训练的核心:"高质量数据"的定义非常复杂,需要综合考虑风格、知识、安全性等多个维度。
  3. SFT只能"提取"预训练知识,不能可靠注入新知识,强行注入会导致幻觉。
  4. DPO彻底简化了RLHF,但本质上仍是加权监督学习,核心是"给好的加权,给坏的降权"。
  5. RLHF存在过度优化和校准丧失两大致命问题,这些问题催生了基于可验证奖励的RLVR方法。
  6. 预训练与后训练的边界正在消失:中期训练已成为工业界标准做法,重新定义了"基础模型"的概念。