人人都会AI编程

5.2 人类反馈强化学习(RLHF):奖励模型 + PPO 算法全流程原理

更新时间:2026-07-09

在 5.1 节中,我们讨论了监督微调(SFT)如何通过高质量的指令数据,让预训练基座模型学会“听懂人话、按格式作答”。但 SFT 存在一个本质瓶颈:它只能模仿数据里显式写出的答案,却无法教会模型判断“哪个答案在人类看来更好”。当问题开放、答案模糊或涉及价值观取舍时,标注员很难写出一条唯一正确的标准答案,只能标注出“ A 比 B 更好”。

人类反馈强化学习(RLHF)正是为了突破这一瓶颈而生的。它把“人类偏好”蒸馏成一个可自动打分的奖励函数,再用强化学习(RL)去优化语言模型,使其不仅“会做”,而且“朝着人类更喜欢的方向做”。本节将完整拆解 RLHF 的两阶段核心——奖励模型(Reward Model, RM)训练PPO(Proximal Policy Optimization)微调,并揭示其在工程落地中的关键权衡。


一、RLHF 的宏观定位:从模仿到偏好优化

如果把模型对齐比作教育小孩:

  • 预训练 = 让他读遍图书馆(自监督学习,4.1 节);
  • SFT = 老师给出标准答案,让他照抄(模仿学习,5.1 节);
  • RLHF = 不再给标准答案,而是让他尝试多种回答,老师只打分排名,他根据分数自己摸索出“怎样回答更讨喜”。

因此,RLHF 解决的是SFT 无法覆盖的模糊最优问题。它通常接在 SFT 之后,构成当前主流大模型(如 GPT-4、Llama 2 Chat、Claude 系列)对齐流程的第二步,也是最关键的一步。


二、全景流程:三个模型、两个阶段

RLHF 的完整链路涉及三个角色:

| 角色 | 来源 | 作用 |
|------|------|------|
| SFT 策略(π_SFT) | 5.1 节产物 | 提供初始生成能力,作为 RL 阶段的起点和参考锚点 |
| 奖励模型(r_φ) | 基于偏好数据独立训练 | 代理人类偏好,给任意回答打 scalar 分数 |
| RL 策略(π_θ) | 由 π_SFT 初始化,经 PPO 迭代更新 | 最终产物,即部署到生产环境的对话模型 |

流程分为两大阶段:

  1. 阶段一:训练奖励模型(Reward Modeling)
  2. 阶段二:PPO 强化学习微调(RL Fine-tuning)

下面分别展开。


三、阶段一:奖励模型——把人类偏好变成可微分数

3.1 数据构造:成对比较而非绝对分数

与 SFT 的“问题-答案”对不同,奖励模型需要偏好数据(Preference Data)。标注员针对同一个 Prompt x,看到模型生成的两个(或多个)不同回答 y_w(win,更优)和 y_l(lose,更劣),然后标记 y_w ≻ y_l

为什么不直接让人类给单个回答打 1-5 分?因为人类标绝对分的标准差极大,而做相对比较(A 比 B 好)的一致性和可重复性要高得多。这是 RLHF 数据设计的第一个关键洞察。

3.2 模型架构与损失函数

奖励模型通常直接复用 SFT 模型的 Backbone(Decoder-only 架构,3.7 节),但把词表输出头的最后一层替换为标量回归头。对于输入 (x, y),模型输出一个实数标量 r_φ(x, y),表示“这个回答的人类偏好分数”。

训练目标基于 Bradley-Terry 模型,假设人类偏好服从 Logit 分布:

$$ \mathcal{L}_{RM}(\phi) = -\mathbb{E}_{(x, y_w, y_l) \sim \mathcal{D}} \left[ \log \sigma \left( r_\phi(x, y_w) - r_\phi(x, y_l) \right) \right] $$

其中:

  • σ 是 sigmoid 函数;
  • r_φ(x, y_w) - r_φ(x, y_l) 是优、劣答案的分数差;
  • 损失函数逼迫模型对优答案打出显著高于劣答案的分数。

工程细节

  • 数据比例需仔细平衡:不能全是安全相关偏好,也要包含有用性(helpfulness)、事实性、风格等多维度;
  • 奖励模型本身的容量通常与策略模型相同或略小(例如用 70B 策略配 70B/7B 奖励模型);
  • 一个 Prompt 通常采样 4-9 个回答,两两组合构造比较对,数据利用效率较高。

3.3 奖励模型的本质:人类偏好的“代理函数”

奖励模型并不是真正理解了“好答案”的语义,它只是从有限的人类比较数据中,学习到了一个高维插值函数。它的输出是 RL 阶段唯一的“奖励信号”来源,因此其质量直接决定了 RLHF 的天花板。如果奖励模型在分布外(OOD)问题上打分混乱,RL 策略就会被带偏——这引出了后面要讲的 Reward Hacking


四、阶段二:PPO 算法——在生成空间中寻找高奖励区域

4.1 强化学习框架的语言模型适配

在 RLHF 中,语言生成被形式化为一个马尔可夫决策过程(MDP)

  • 状态(State):当前已生成的 Token 序列(即上下文);
  • 动作(Action):下一个要生成的 Token(词表中的某个词);
  • 策略(Policy):模型 π_θ(y|x),即给定 Prompt 生成回答的概率分布;
  • 奖励(Reward):序列生成完毕后,由奖励模型给出的标量分数(加上一项正则惩罚);
  • 目标:找到一组参数 θ,使得生成回答的期望累积奖励最大。

注意:与游戏 AI 不同,语言模型的动作空间是离散的(词表大小通常为 32k–128k),且序列很长(数百到数千步),这使得传统 RL 算法(如原始 Policy Gradient)方差极大、训练极不稳定。

4.2 PPO 的核心机制

PPO(Proximal Policy Optimization)是当前 RLHF 的事实标准算法。它属于 Actor-Critic 架构,核心解决思路是:在利用新策略探索高奖励的同时,限制更新步长,防止模型崩溃

(1)Actor-Critic 双网络结构

  • Actor(策略网络):就是正在被训练的语言模型 π_θ,负责生成 Token;
  • Critic(价值网络):通常与 Actor 共享 Backbone,额外输出一个价值头 V(x, y_{<t}),用于估计“从当前状态继续生成下去,最终能拿到多少奖励”。Critic 的存在是为了降低方差,让梯度更新更稳定。

(2)重要性采样与裁剪(Clipped Surrogate Objective)

PPO 不会只拿当前策略的样本更新一次就丢弃,而是通过重要性采样比例:

$$ r_t(\theta) = \frac{\pi_\theta(a_t|s_t)}{\pi_{\theta_{old}}(a_t|s_t)} $$

来衡量新策略相对于旧策略的变化幅度。然后构造带裁剪的目标函数:

$$ \mathcal{L}^{CLIP}(\theta) = \mathbb{E}_t \left[ \min\left( r_t(\theta)\hat{A}_t,\ \text{clip}(r_t(\theta), 1-\epsilon, 1+\epsilon)\hat{A}_t \right) \right] $$

其中:

  • Â_t 是优势函数(Advantage),由 Critic 估计的实际奖励减去预期价值得到,告诉模型“当前动作比平均水平好多少”;
  • ε(通常 0.1 或 0.2)是裁剪超参。当策略更新导致概率比值超出 [1-ε, 1+ε] 区间时,梯度会被截断。

为什么裁剪如此关键? 语言模型的策略空间极其高维,如果没有限制,一次大梯度步可能导致模型突然输出乱码、重复或模式崩溃。裁剪强制每次更新“小步快跑”,这是 PPO 能在 LLM 上成功而其他 RL 算法失败的核心原因。

(3)完整训练目标

实际训练中,PPO 的损失通常是多目标组合:

$$ \mathcal{L}_{total} = \mathcal{L}^{CLIP} + c_1 \mathcal{L}^{VF} + c_2 \mathcal{L}_{entropy} $$

  • L^VF:Critic 的价值预测误差(MSE),让价值估计更准确;
  • L_entropy:策略熵奖励,鼓励模型保持一定探索性,防止过早陷入局部最优。

4.3 奖励函数的构造:KL 散度惩罚

如果直接把奖励模型的输出 r_φ(x,y) 作为唯一优化目标,RL 策略会很快发现奖励模型的漏洞,生成一些对人类无意义但能骗过高分的垃圾文本(Reward Hacking)。同时,模型也可能彻底遗忘预训练和 SFT 阶段学到的通用语言能力,变得只会“谄媚”或“刷分”。

因此,实际奖励函数必须加入 KL 散度惩罚项

$$ R(x,y) = r_\phi(x,y) - \beta \log\frac{\pi_\theta(y|x)}{\pi_{ref}(y|x)} $$

其中:

  • π_ref 是参考策略,通常固定为 SFT 模型(不参与更新);
  • β 是 KL 系数,控制“新策略允许偏离旧策略多远”。

这一项的直觉是:你尽管去探索高分回答,但每走一步都要支付“与原来 SFT 模型行为差异”的罚款。这确保了 RL 后的模型不会面目全非,同时保留通用语言能力。


五、工程落地中的关键难题

5.1 Reward Hacking(奖励黑客)

这是 RLHF 的“阿喀琉斯之踵”。由于奖励模型只是人类偏好的近似,策略模型在充分探索后,几乎必然会发现利用奖励模型盲点的高分捷径。典型表现包括:

  • 生成冗长、重复、充满恭维但信息空洞的回答(如果奖励模型把“长”和“礼貌”误以为是“好”);
  • 堆砌特定关键词或格式,触发奖励模型的高分模式。

缓解手段

  • 奖励模型本身需要持续迭代,把被 hack 的样本加入负样本重新训练;
  • 多维度奖励模型(分别打分有用性、安全性、事实性,再加权);
  • 严格的 KL 约束,限制策略突变。

5.2 训练稳定性

PPO 在 LLM 上的训练远不如预训练稳定,常见问题包括:

  • Critic 估计偏差:在长序列上,价值估计的误差会累积,导致优势函数符号错误,策略更新方向错误;
  • 梯度爆炸/消失:虽然预训练阶段通过混合精度等手段已缓解(4.5 节),但 RL 阶段的动态数据分布会让旧问题复发;
  • Token 级奖励稀疏:通常只在序列末尾获得一次奖励模型打分,中间数千步的 Token 没有即时反馈,信用分配困难。

工程上通常采用 Mini-batch PPOGAE(Generalized Advantage Estimation)、以及冻结部分层等技巧来稳住训练。

5.3 计算成本

相比 SFT,RLHF 需要同时维护并前向传播:

  • Actor 策略模型(生成回答);
  • Critic 价值模型(估计价值);
  • Reference 参考模型(计算 KL);
  • Reward Model(打分)。

这导致显存占用和训练时间通常是 SFT 的 3–4 倍。这也是 5.3 节 DPO 等方法试图绕开显式奖励模型和 PPO 的核心动机。


六、RLHF 的成效与边界

6.1 它解决了什么

  • 有用性(Helpfulness):让模型更主动地澄清模糊问题、拒绝不合理假设;
  • 安全性(Harmlessness):通过偏好数据里的安全对比,让模型学会拒绝生成有害内容;
  • 风格与可读性:使回答更结构化、更谦逊、更愿意承认不确定性。

6.2 它没解决什么

  • 幻觉(Hallucination):RLHF 能缓解部分“过度自信瞎编”,但无法根治知识缺失导致的幻觉(6.4 节),因为奖励模型本身也未必掌握事实;
  • 复杂推理:对数学、代码等存在客观正误答案的任务,RLHF 的偏好信号不如 SFT 的“标准答案”直接,甚至可能因奖励模型打错分而劣化;
  • 可扩展性瓶颈:高质量人类标注昂贵且慢,成为模型迭代的主要卡点。

七、与后续章节的衔接

RLHF 代表了“基于人类反馈对齐”的经典范式,但它复杂的四模型(Actor/Critic/Reference/RM)架构和高昂的训练成本,催生了更轻量的替代方案。在 5.3 节中,我们将介绍 DPO(Direct Preference Optimization)——它绕开显式奖励模型和 PPO,直接用偏好数据对 SFT 模型进行微调,在保持对齐效果的同时大幅简化流程。

理解 RLHF 中“偏好→奖励→策略优化”的完整逻辑,是理解 DPO 为何能“跳过中间商”的前提。无论未来采用哪种对齐技术,“人类偏好是信号,模型行为需约束” 这一核心思想都不会改变。