对应:Stanford CS234 Lecture 9–10(Reinforcement Learning from Human Feedback, Direct Preference Optimization) 配套代码:
code/lecture09/(只需 numpy) 预计阅读时间:4 小时
0. 本讲导航
0.1 本讲要回答的问题
有些事情人类很难写成奖励函数、也很难示范,却很容易评判好坏。能不能从人类的”比较”中学习?
写一首好诗很难,但读两首诗说出”哪首更好”很容易;写出一段完美的回答很难,但比较两段回答哪个更有帮助很容易。**从人类偏好中学习(learning from human preferences)**正是利用了这一点。
它是今天大语言模型”对齐”的核心技术。2022 年的 InstructGPT 论文显示:经过 RLHF 的 13 亿参数模型,其回答比没有经过 RLHF 的 1750 亿参数 GPT-3 更受人类标注者欢迎。ChatGPT 正是在此基础上发布的。
0.2 学完本讲,你应该能够
- 解释为什么收集成对比较而不是绝对打分。
- 写出 Bradley–Terry 模型,说明它的极大似然估计就是逻辑回归,以及”偏好噪声”带来的准确率上限。
- 描述 RLHF 的三个阶段:监督微调、奖励模型、带 KL 惩罚的 RL。
- 推导 KL 正则 RL 目标的闭式最优解 。
- 解释奖励过度优化:为什么奖励模型的分数越来越高,真实质量反而下降;KL 惩罚的作用是什么。
- 完整推导 DPO 的损失函数,解释它与 RLHF 的等价关系。
- 说出 DPO 的优点与局限(离线、确定性偏好下的过拟合等)。
0.3 先修知识
| 知识点 | 用在哪里 | 最低要求 |
|---|---|---|
| 第 6、7 讲:策略梯度、PPO | 第 3 节 | 必须 |
| 第 8 讲:行为克隆、分布偏移 | 第 3、4 节 | 必须 |
| 逻辑回归、sigmoid 函数 | 第 2、5 节 | 知道它把实数映射到 (0, 1) |
| KL 散度 | 第 3–5 节 | 第 7 讲已介绍 |
| 对数的运算:, | 第 3、5 节 | 必须 |
0.4 本讲地图
第1节 为什么从偏好中学习?为什么是比较而不是打分?
│
第2节 Bradley–Terry 模型:从"A 比 B 好"中学出分数
│
第3节 RLHF:SFT → 奖励模型 → 带 KL 惩罚的 PPO;KL 正则目标的闭式解
│
第4节 奖励过度优化:奖励模型在分布外不可信
│
第5节 DPO:把闭式解代回 Bradley–Terry,绕过奖励模型和 RL
│
第6节 DPO 的优点与局限
│
第7节 更广的视角:AI 反馈、可验证奖励
0.5 本讲的实验平台:一个”玩具语言模型”
真正的 RLHF 需要训练几十亿参数的模型。代码 toy_llm.py 把问题简化为:只有一个提示词,模型从 400 个候选回答中选一个。于是”语言模型”就是这 400 个回答上的一个概率分布 。
- 每个回答有两个特征:质量(标准正态分布)和长度(0~10)。
- 真实奖励(代表人类真正的偏好,学习算法看不到它的公式): 长度的贡献先增后减:长度 5 左右最好,太短没说清楚、太长啰嗦。
- 参考策略 (相当于监督微调后的模型):主要生成长度 1~4 的回答,平均长度 2.58。
这个简化保留了 RLHF 的全部数学结构,而且每个量都能精确计算。
1. 为什么从偏好中学习?
1.1 三种反馈方式
| 反馈方式 | 例子 | 人类的难度 | 对应方法 |
|---|---|---|---|
| 写出奖励函数 | “回答有帮助 +1,有害 −10” | 极难(什么叫”有帮助”?) | 标准 RL |
| 示范 | 人类亲自写一段理想的回答 | 难、慢、贵 | 模仿学习(第 8 讲) |
| 比较 | “回答 A 比回答 B 好” | 容易、快 | 从偏好中学习 |
示范还有一个根本局限:模型最多只能学到和示范者一样好。而比较不同:人类可能写不出完美的诗,但能分辨两首诗的高下——从比较中学习,模型有可能超越示范者的水平。
从偏好中学习最早在机器人和游戏上取得成功:Christiano et al.(2017)只用人类对两段短视频的比较(约 900 次比较),就教会了模拟机器人做后空翻——而这个动作的奖励函数几乎无法手写。
1.2 为什么是比较,而不是打分?
一个自然的问题:为什么不直接让人类给每个回答打一个 1~10 分?
因为不同的人打分的”尺度”不同:有人习惯打高分,有人习惯打低分;有人打分分散,有人打分集中。同一个人在不同时间、看过不同的例子之后,打分标准也会漂移。绝对分数很难校准。
但比较不受这些影响:同一个人比较两个回答时,他的”习惯偏移”对两个回答是一样的,相减就抵消了。
代码验证:
01_bradley_terry.py演示 3 模拟了 20 个打分尺度各不相同的标注者(每人的分数 = 真实效用 + 噪声,、 因人而异)。同样的标签数量下,恢复出的排名与真实排名的相关系数:
标签数 打分取平均 比较 + Bradley–Terry 100 0.621 0.860 300 0.888 0.959 1000 0.963 0.984
2. Bradley–Terry 模型
2.1 模型
Bradley–Terry 模型(1952)假设每个选项 有一个潜在的效用(奖励),并且
- 效用相同时,;
- 效用差 1 时,;差 2 时约 0.88;差 4 时约 0.98。
人类偏好是有噪声的:更好的选项并不总被选中。国际象棋的 Elo 等级分背后就是这个模型(Elo 分差 400 分对应约 10 倍的”胜率比”)。
2.2 极大似然估计 = 逻辑回归
给定比较数据 ( 表示 被偏好),对数似然为
这正是逻辑回归:输入是” 的独热向量减去 的独热向量”,标签是 。梯度的直觉:“实际赢的次数”减去”模型预测会赢的次数”,赢得比预测多,就提高它的效用。
不可辨识性:给所有 加同一个常数,所有概率都不变——效用只能确定到”差一个常数”(和第 8 讲 IRL 中”常数奖励不可辨识”是同一件事)。
2.3 准确率的上限
代码 01 演示 2:10 个选项,用不同数量的比较恢复效用:
| 比较数 | 排名相关 | 预测新比较的准确率 |
|---|---|---|
| 30 | 0.879 | 67.8% |
| 300 | 0.988 | 70.3% |
| 1000 | 1.000 | 70.4% |
| 5000 | 0.988 | 70.3% |
即使知道真实效用,预测新比较的准确率上限也只有 70.4%——这是偏好本身的噪声。在真实的 RLHF 中,奖励模型的准确率通常也只有 65%~75%,人类标注者之间的一致率本身也就在这个水平(InstructGPT 报告的标注者一致率约为 73%)。这并不一定说明模型很差。
2.4 从”选项”到”回答”:奖励模型
在 RLHF 中,“选项”是模型对某个提示词 的回答 。回答有无穷多种,不可能给每个回答单独存一个效用。所以用一个参数化的奖励模型 (通常是在 SFT 语言模型上加一个输出标量的”头”)来预测效用,用 Bradley–Terry 损失训练:
(:被偏好的回答, = win;:未被偏好的回答, = lose。)
3. RLHF:从人类反馈中强化学习
3.1 三个阶段
阶段 1:监督微调(SFT) 阶段 2:训练奖励模型 阶段 3:强化学习
┌──────────────────┐ ┌──────────────────────┐ ┌───────────────────────────┐
│ 人类写的示范回答 │ │ 对每个提示,SFT 模型 │ │ max E[r_φ(x,y)] │
│ → 行为克隆 │ ───► │ 生成几个回答, │ ───► │ - β KL(π ‖ π_SFT) │
│ (第 8 讲) │ │ 人类比较哪个更好 │ │ 用 PPO 优化(第 7 讲) │
│ 得到 π_SFT │ │ → 训练 r_φ(第 2 节) │ │ π_ref = π_SFT │
└──────────────────┘ └──────────────────────┘ └───────────────────────────┘
- 监督微调(SFT):在人类写的高质量示范上做行为克隆,得到 。它让模型学会”像样的回答长什么样”,为后面的 RL 提供一个好的起点(第 8 讲 7.1 节:“用模仿学习初始化,再用 RL 微调”)。
- 奖励模型:对每个提示,让 SFT 模型生成几个回答,请人类比较,用 Bradley–Terry 损失训练 。
- 强化学习:用 PPO 优化
其中 。
RL 视角下的 RLHF:提示词是”状态”,模型生成的整段回答是”动作”,奖励只在回答结束时给出——这是一个上下文老虎机(第 1 讲 3.7 节)。如果把每个 token 看成一个动作,就是一个每步奖励为 0(除了最后一步)的 MDP,PPO 在 token 层面上计算优势(第 7 讲 GAE)。
KL 惩罚在实践中怎么算? 通常把它放进每个 token 的奖励里:第 个 token 的奖励为 ,最后一个 token 再加上 。所有 token 的 KL 项加起来,恰好是整段回答的 KL 散度的一个无偏估计。
3.2 为什么需要 KL 惩罚?
三个原因:
- 奖励模型只在参考模型的分布附近可信。它是在 生成的回答上训练的;RL 把模型推得越远,奖励模型越不准,模型越可能利用它的漏洞(第 4 节)。这又是分布偏移(第 8 讲 7.2 节)。
- 保持语言能力:不加约束的 RL 可能让模型输出”奖励模型喜欢但不像人话”的文本。
- 保持多样性:没有 KL 项时,最优策略会塌缩到”奖励最高的那一个回答”上(确定性策略)。KL 项让最优解保持随机性。
3.3 KL 正则目标的闭式最优解
对一个固定的提示词(省略 ),目标是
定义 , 是归一化常数。那么 。代入:
与 无关,而 KL 散度 、当且仅当 时为 0。所以
直觉:在参考模型的基础上,按奖励的高低”指数地重新加权”。 大(约束强), 接近 1,策略几乎不变; 小(约束弱),高奖励的回答被急剧放大。
代码验证:
03_rlhf_kl.py演示 1 对闭式解随机扰动 1000 次,目标值全部变差;演示 3 用策略梯度(把 KL 惩罚放进每个样本的奖励里,第 3.1 节的做法)从 出发优化,2 万步后与闭式解的 KL 降到 0.048,目标值 2.2427(闭式解 2.2492)。
那为什么还要用 PPO? 因为真实的语言模型中,回答有天文数字那么多,无法计算 ,也无法写出 的每个概率——只能用 RL 去逼近它。
4. 奖励过度优化
4.1 奖励模型在分布外不可信
在玩具模型中,参考策略几乎只生成长度 1~4 的回答。在这个区间里,更长的回答通常更好(真实奖励随长度上升,峰值在长度 5 左右)。
用 3000 对人类比较(从参考策略中抽取回答)训练一个线性奖励模型 ,得到 ——它学到了”质量越高越好”(正确)和”越长越好”(只在短回答的范围内正确)。
它的准确率(代码 02_reward_model.py 演示 3,与真实奖励的判断比较):
| 回答对的来源 | 准确率 |
|---|---|
| 从 SFT 模型中抽取(训练分布内) | 96.8% |
| 两个回答都长于 6(训练分布外) | 70.6% |
| 长回答(> 6)vs 适中回答(4~5.5) | 43.8%(比随机猜还差) |
沿着长度看(质量固定为 0,在长度 2.5 处对齐):
| 长度 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
|---|---|---|---|---|---|---|---|---|---|---|
| 真实奖励 | 0.72 | 1.28 | 1.68 | 1.92 | 2.00 | 1.92 | 1.68 | 1.28 | 0.72 | 0.00 |
| 奖励模型 | 0.92 | 1.31 | 1.69 | 2.08 | 2.47 | 2.85 | 3.24 | 3.63 | 4.01 | 4.40 |
在数据最多的地方两者几乎重合;长度越大,奖励模型高估得越厉害。
4.2 过度优化
现在用 3.3 节的闭式解,在不同的 下”优化”这个奖励模型(代码 03 演示 2;奖励模型分数和真实奖励都表示为相对于参考策略的提升):
| 平均长度 | 奖励模型分数 | 真实奖励 | 若直接优化真实奖励 | ||
|---|---|---|---|---|---|
| 10 | 0.01 | 2.63 | +0.11 | +0.11 | +0.12 |
| 1 | 0.48 | 3.12 | +1.00 | +1.02 | +1.06 |
| 0.5 | 1.60 | 3.65 | +1.75 | +1.75 | +1.74 |
| 0.3 | 3.29 | 4.31 | +2.40 | +2.30 | +2.24 |
| 0.2 | 4.95 | 4.90 | +2.81 | +2.52 | +2.53 |
| 0.1 | 11.89 | 7.34 | +3.79 | +2.19 | +2.70 |
| 0.05 | 13.35 | 7.78 | +3.90 | +1.93 | +2.73 |
| 0.02 | 20.33 | 9.34 | +4.16 | +0.71 | +2.73 |
- 奖励模型的分数随 减小单调上升——从它的角度看,优化越激进越好。
- 真实奖励却先升后降:在 (KL ≈ 5)时最高,之后模型开始利用奖励模型的缺陷——回答越写越长(平均长度从 2.6 涨到 9.3),奖励模型给高分,真实质量却在下降。
- 最右一列是”如果能直接优化真实奖励”:它单调上升。两者的差距完全来自奖励模型在分布外的错误。
这就是奖励过度优化(reward over-optimization),也叫 Goodhart 定律:“当一个指标变成了优化目标,它就不再是一个好指标。” Gao et al.(2022)在真实的语言模型上系统地测量了这个现象,发现”真实奖励先升后降”的曲线非常普遍,而且奖励模型越大、数据越多,拐点来得越晚。
这不是玩具例子才有的问题。真实 RLHF 中广泛观察到的”长度偏差”(RLHF 后的模型回答越来越长、越来越啰嗦)、“谄媚”(模型倾向于附和用户的观点,因为标注者更喜欢被认同)都是这种现象的实例。
4.3 缓解方法
- KL 惩罚(选择合适的 ):把模型限制在奖励模型”还可信”的范围内。
- 提前停止:监控 KL 或在留出的人类评估上的表现,在拐点之前停下。
- 奖励模型集成:用多个奖励模型,取保守的估计(比如最小值),它们意见不一的地方就是”不可信”的地方——这和第 10 讲离线 RL 中的”悲观原则”是同一个思想。
- 迭代 / 在线 RLHF:用当前模型生成新的回答,请人类重新比较,更新奖励模型——让奖励模型的训练分布跟上策略的变化。这和第 8 讲的 DAgger 思想一致:在学习者自己的分布上收集反馈。
- 长度惩罚等针对已知漏洞的修补。
5. DPO:直接偏好优化
5.1 核心推导
RLHF 需要两个阶段(奖励模型 + RL),还有 PPO 的全部复杂性(第 7 讲:价值网络、GAE、裁剪、一堆超参数)。Rafailov et al.(2023)提出的 **DPO(Direct Preference Optimization)**问:既然知道了最优策略的闭式解,能不能直接从偏好数据学策略?
第 1 步:把闭式解反过来写。由 3.3 节,,两边取对数、整理:
奖励可以用最优策略来表示。 叫策略 的隐式奖励(implicit reward)。
代码验证:
04_dpo.py演示 1,取 ,计算 :对全部 400 个回答都等于 2.720663——一个常数()。
第 2 步:代入 Bradley–Terry 模型。偏好概率只依赖奖励之差, 在相减时抵消了:
这一步是 DPO 的关键:那个无法计算的配分函数 消失了,剩下的全是可以计算的量(策略对某个回答的对数概率)。
第 3 步:直接对策略做极大似然。把 换成要学的参数化策略 ,在偏好数据上最大化似然:
没有奖励模型,没有 RL,没有采样——只是在偏好数据上做一个监督学习。
5.2 梯度的直觉
记隐式奖励 。DPO 损失的梯度为
- 提高被偏好回答的概率,降低未被偏好回答的概率;
- 权重 :隐式奖励模型判断错得越多(认为差回答更好),这个样本的梯度越大;已经判断对的样本几乎不贡献梯度。这和逻辑回归完全一样。
5.3 DPO 与 RLHF 是同一个问题
DPO 并不是一个”新的目标”。如果策略的参数化足够灵活,DPO 的最优解就是”用同样的数据训练 Bradley–Terry 奖励模型,再求 KL 正则最优解”。
代码验证:代码 04 演示 2 用表格型策略(每个回答一个 logit)训练 DPO,同时用同样的数据、同样的 L2 正则训练表格型奖励模型并求闭式解。两个策略之间的 KL 散度为 (浮点误差),平均长度都是 3.120,真实奖励都是 3.1002——完全相同。
DPO 把”训练奖励模型”和”求最优策略”合并成了一步监督学习。这就是 DPO 论文标题的含义:Your Language Model is Secretly a Reward Model。
6. DPO 的优点与局限
6.1 优点
- 简单:只需要一个监督学习的损失函数,几十行代码;不需要奖励模型、价值网络、GAE、裁剪。
- 稳定:没有 RL 训练的种种不稳定(第 7 讲)。
- 高效:不需要在训练中从策略采样生成回答(生成是 RLHF 中最耗时的部分)。
因此 DPO 及其变体在开源社区被广泛采用。
6.2 局限一:它没有消除过度优化
DPO 优化的依然是”KL 正则的偏好似然”,只是换了一种求解方式。代码 04 演示 3:
| DPO:KL | DPO:平均长度 | DPO:真实奖励 | RLHF(线性 RM):KL | 平均长度 | 真实奖励 | |
|---|---|---|---|---|---|---|
| 2.0 | 0.11 | 2.79 | 2.198 | 0.13 | 2.86 | 2.272 |
| 0.5 | 1.10 | 3.12 | 3.100 | 1.60 | 3.65 | 3.477 |
| 0.2 | 2.61 | 3.35 | 3.482 | 4.95 | 4.90 | 4.249 |
| 0.1 | 3.48 | 3.47 | 3.425 | 11.89 | 7.34 | 3.917 |
| 0.05 | 4.01 | 3.62 | 3.276 | 13.35 | 7.78 | 3.657 |
(参考策略的真实奖励为 1.730。)
两者都在 适中时最好, 太小都会变差。它们出错的方式不同:线性奖励模型把”越长越好”外推到从没见过的长回答上;表格型的 DPO 只能调整出现在偏好数据里的回答(400 个中出现过 224 个),但会过度相信那些只被比较过一两次的回答(见 6.3 节)。真实的 DPO 用神经网络参数化策略,会像奖励模型一样泛化——包括泛化出错。
6.3 局限二:确定性偏好下的过拟合
Azar et al.(2023)指出 DPO 的一个问题。假设数据中只有一条偏好:回答 比回答 好(只比较过一次,所以从数据的角度看, 是”100% 赢”的)。
(代码 04 演示 4;两种 下学习率都按 缩放,使隐式奖励的变化速度相同。这条标签恰好是”错”的: 的真实奖励 −0.101 高于 的 −0.237,人类偏好有噪声。)
| 训练步数 | 隐式奖励之差 | , | , |
|---|---|---|---|
| 10 | 3.02 | 0.22 | |
| 1,000 | 7.60 | 0.022 | |
| 100,000 | 12.21 | 0.0022 |
隐式奖励之差随训练不断增长(大约按训练步数的对数增长),没有上限;回答 的概率被压向 0——无论 取多少。
原因:只要数据中 总是赢,,损失就还能继续下降;而 DPO 的损失里没有一个把策略拉回 的项—— 只改变了尺度,不能阻止 。对比 RLHF:奖励模型通常有正则化和提前停止,RL 阶段的 KL 惩罚会显式地把策略拉回 。
实践中,同一对回答通常只被标注一次,每一条偏好在数据中都是”确定性”的,所以这个问题真实存在。IPO 等变体就是为此提出的;实践中也常用提前停止、较少的训练轮数来缓解。
6.4 局限三:离线
DPO 只在一个固定的偏好数据集上训练,数据来自某个旧模型。随着训练,策略的分布离数据分布越来越远,而 DPO 无法获得新分布上的反馈——又是分布偏移。在线 / 迭代 DPO(用当前模型生成新回答、重新标注)是常见的改进。
6.5 其他变体
DPO 之后出现了大量变体:IPO(修正确定性偏好下的过拟合)、KTO(只需要”好 / 不好”的单点标注,不需要成对比较)、ORPO、SimPO(不需要参考模型)等。它们的共同出发点都是 5.1 节的推导。
7. 更广的视角
7.1 反馈从哪里来?
- 人类反馈(RLHF):昂贵,但代表真实的人类偏好。
- AI 反馈(RLAIF):用另一个大模型按照一套原则(“宪法”)来比较回答,例如 Anthropic 的 Constitutional AI。便宜、可扩展,但继承了评判模型的偏差。
- 可验证的奖励:对于数学、编程等问题,答案是否正确可以自动检验(比对标准答案、运行单元测试),不需要奖励模型——也就没有奖励模型被”投机”的问题。2024~2025 年的推理模型(如 OpenAI o1、DeepSeek-R1)正是用这种奖励进行大规模 RL 训练的。第 16 讲会讨论其中的 GRPO 算法。
7.2 回顾:本讲在全课中的位置
| 讲次 | 学习信号 | 核心困难 |
|---|---|---|
| 第 3–7 讲 | 环境给出的奖励 | 探索、信用分配、方差 |
| 第 8 讲 | 专家的示范 | 分布偏移(复合误差) |
| 第 9 讲 | 人类的比较 | 分布偏移(奖励模型在分布外不可信) |
| 第 10 讲 | 固定的历史数据 | 分布偏移(价值估计在分布外不可信) |
8. 本讲总结
8.1 核心概念清单
- 从偏好中学习:比较比示范容易,比打分一致;有可能超越示范者。
- Bradley–Terry:;极大似然 = 逻辑回归;效用只能确定到一个常数;偏好噪声决定了准确率上限。
- RLHF 三阶段:SFT(行为克隆)→ 奖励模型(BT 损失)→ PPO 优化 。
- 闭式解:;证明:。
- 奖励过度优化:奖励模型分数一路上升,真实奖励先升后降;根源是奖励模型在分布外的错误;KL 惩罚把模型限制在可信范围内。
- DPO: 代入 BT, 抵消,得到只依赖策略的损失。
- DPO ≡ RLHF 的同一问题(参数化足够灵活时);简单稳定,但离线、没有消除过度优化、在确定性偏好下过拟合。
- 分布偏移贯穿模仿学习、RLHF、离线 RL。
8.2 公式速查表
| 名称 | 公式 |
|---|---|
| Bradley–Terry | |
| 奖励模型损失 | |
| RLHF 目标 | |
| 每 token KL 奖励 | (最后一个 token 再加 ) |
| 闭式最优解 | |
| 目标的分解 | |
| 奖励的策略表示 | |
| DPO 损失 | |
| DPO 梯度权重 |
8.3 中英术语对照表
| 中文 | 英文 | 中文 | 英文 |
|---|---|---|---|
| 从人类反馈中强化学习 | Reinforcement Learning from Human Feedback (RLHF) | 人类偏好 | Human preferences |
| 成对比较 | Pairwise comparison | Bradley–Terry 模型 | Bradley–Terry model |
| 效用 | Utility | Elo 等级分 | Elo rating |
| 监督微调 | Supervised fine-tuning (SFT) | 奖励模型 | Reward model (RM) |
| 参考模型 | Reference model | KL 惩罚 | KL penalty |
| 配分函数 | Partition function | 闭式解 | Closed-form solution |
| 奖励过度优化 | Reward over-optimization | Goodhart 定律 | Goodhart’s law |
| 奖励投机 | Reward hacking | 谄媚 | Sycophancy |
| 直接偏好优化 | Direct Preference Optimization (DPO) | 隐式奖励 | Implicit reward |
| AI 反馈强化学习 | RL from AI Feedback (RLAIF) | 宪法 AI | Constitutional AI |
| 可验证奖励 | Verifiable rewards | 上下文老虎机 | Contextual bandit |
9. 练习题
练习 1(Bradley–Terry):两个回答的奖励模型分数分别为 2.0 和 0.5。按 Bradley–Terry 模型,人类更喜欢第一个的概率是多少?如果两个分数都加 10 呢?
参考答案
。都加 10 后差不变,概率仍是 0.818——这就是”效用只能确定到一个常数”。
练习 2(闭式解):三个回答,,奖励 。求 和 时的最优策略 。
参考答案
:未归一化权重 ,和为 2.793,。 :权重 ,和为 13.637,。 越小,越集中在高奖励的回答上。
练习 3(推导):证明 在 处的值等于 。
参考答案
由 3.3 节,。在 处 KL 为 0,所以 。(这也说明 是”软最大值”: 时 ,与第 8 讲软价值迭代中的 log-sum-exp 是同一个量。)
练习 4(DPO 推导):在 DPO 的推导中,为什么 能够被消去?如果把 Bradley–Terry 模型换成""(只依赖被偏好回答的奖励),推导还成立吗?
参考答案
因为 Bradley–Terry 只依赖奖励之差, 在两个回答中相同(同一个提示词),相减抵消。如果偏好概率只依赖单个回答的奖励, 就不会消掉,而 无法计算,推导失效。(KTO 等方法用其他方式处理了单点反馈。)
练习 5(DPO 梯度):某条偏好数据中,当前策略的隐式奖励 ,。这条数据的梯度权重是多少?如果 , 呢?
参考答案
权重 。第一种:(模型判断错了,大梯度)。第二种:(已经判断对了,几乎不再更新)。
练习 6(过度优化):在 4.2 节的表格中,为什么”直接优化真实奖励”那一列在 很小时停在 +2.73 不再增加?
参考答案
时,最优策略集中在真实奖励最高的那个回答上(真实奖励 4.46,参考策略的平均为 1.73,差 +2.73)。已经不能再高了。
练习 7(动手)★:修改 toy_llm.py 中的 reference_policy,把长度中心从 2.5 改成 5(参考模型本来就写”长度合适”的回答)。重新运行 02_reward_model.py 和 03_rlhf_kl.py。奖励模型学到的长度权重如何变化?过度优化的程度如何变化?
提示
数据覆盖了真实奖励的峰值两侧,“越长越好”不再成立。
参考结果:奖励模型学到的权重约为 [1.00, −0.03]——长度权重几乎为 0(线性模型无法表示”先升后降”,但至少不再一边倒地偏好长回答)。 从 1 降到 0.02,真实奖励的提升为 +0.86、+1.49、+2.14、+2.26、+2.30、+2.30,单调上升,过度优化消失了,平均长度始终保持在 4.6~4.9。
这说明参考模型(数据分布)的覆盖范围对 RLHF 至关重要:奖励模型只在它见过的地方可信。
练习 8(思考题):DAgger(第 8 讲)和”迭代 / 在线 RLHF”有什么共同之处?为什么它们都能缓解分布偏移?
参考答案
两者都是”在学习者当前的分布上收集新的反馈”:DAgger 让专家标注学习者自己访问的状态;在线 RLHF 让人类比较当前模型自己生成的回答,再更新奖励模型。这样,训练数据的分布就能跟上策略分布的变化,模型不会在”没有反馈的地方”越走越远。
10. 延伸阅读
- CS234 Spring 2024 Lecture 9–10 录像与课件。
- Christiano et al. (2017),Deep Reinforcement Learning from Human Preferences:从人类偏好中学习的开创性工作。
- Ouyang et al. (2022),Training Language Models to Follow Instructions with Human Feedback(InstructGPT):RLHF 三阶段流程。
- Gao, Schulman & Hilton (2022),Scaling Laws for Reward Model Overoptimization:奖励过度优化的系统测量。
- Rafailov et al. (2023),Direct Preference Optimization: Your Language Model is Secretly a Reward Model:DPO。
- Azar et al. (2023),A General Theoretical Paradigm to Understand Learning from Human Preferences:IPO,以及 DPO 过拟合的分析。
- Bai et al. (2022),Constitutional AI: Harmlessness from AI Feedback:AI 反馈。
11. 下一讲预告
模仿学习、RLHF 都在”用已有的数据学习”。下一讲把这个问题推到极致:完全不与环境交互,只用一批历史数据学习策略——这就是离线强化学习。
在医疗、教育等场景中,这是唯一可行的方式:不能拿病人做试验,但医院有几十年的治疗记录。你会看到:
- 离策略评估:只用旧策略收集的数据,怎么估计一个新策略有多好?重要性采样、加权重要性采样、双重稳健估计;
- 外推误差:为什么直接在历史数据上跑 Q-learning 会严重高估那些”数据里没有的动作”;
- 悲观原则:对数据覆盖不到的地方保持怀疑——保守 Q 学习(CQL)等方法。
下一讲之前,建议你:跑通 code/lecture09/ 下的 4 个脚本,完成练习 2、3、5,并尝试练习 7。