跳至主要内容
课程笔记约 12 分钟

RLHF 由浅入深全面解析

从 SFT、奖励模型与 PPO 三阶段出发,梳理 RLHF 的训练目标、关键公式、常见变体与实践挑战。

#RLHF#SFT#PPO#DPO#大语言模型
本文目录
  1. 一、直观理解:什么是 RLHF?
  2. 1.1 一个通俗的类比
  3. 1.2 为什么大模型需要 RLHF?
  4. 1.3 RLHF 的核心思想
  5. 二、RLHF 的三阶段流程
  6. 2.1 三阶段关系图
  7. 三、第一阶段:监督微调 (SFT)
  8. 3.1 这一步做了什么?
  9. 3.2 训练目标
  10. 3.3 SFT 的作用与局限
  11. 四、第二阶段:奖励模型训练 (RM)
  12. 4.1 核心思路
  13. 4.2 偏好数据的收集
  14. 4.3 Bradley-Terry 偏好模型
  15. 4.4 损失函数
  16. 4.5 奖励模型的局限
  17. 五、第三阶段:PPO 强化学习优化
  18. 5.1 强化学习建模
  19. 5.2 为什么是 PPO?
  20. 5.3 PPO 核心公式:Clipped Surrogate Objective
  21. 5.4 KL 散度约束:防止模型”跑偏”
  22. 5.5 完整的 PPO-RLHF 优化目标
  23. 六、RLHF 的变体与改进
  24. 6.1 DPO:直接偏好优化
  25. 6.2 RLAIF:AI 反馈替代人类
  26. 6.3 其他值得关注的变体
  27. 七、实践中的关键挑战
  28. 7.1 奖励黑客 (Reward Hacking)
  29. 7.2 偏好数据质量
  30. 7.3 训练稳定性
  31. 7.4 计算资源需求
  32. 八、总结
  33. 8.1 核心要点回顾
  34. 8.2 推荐学习路径

一、直观理解:什么是 RLHF?

1.1 一个通俗的类比

想象你在训练一只狗。你希望它学会”坐下”:

  • 它坐下 → 你给它零食(正反馈

  • 它乱跑 → 你不给零食(负反馈

  • 反复多次 → 它学会了你喜欢什么行为

RLHF 就是这个思路,只不过”狗”是大语言模型,“零食”是一个数学奖励信号,“你”是标注人员给出的偏好判断。


1.2 为什么大模型需要 RLHF?

预训练完成后的大语言模型(如 GPT-3),虽然能流畅地续写文本,但存在几个严重问题:

问题表现
不安全可能生成有害、歧视、暴力内容
无帮助答非所问,或输出无意义的长篇大论
不符合意图用户问”怎么做蛋糕”,它给出了一篇论文
偏好不明不知道什么是”好回答”,只会做概率最大的续写

1.3 RLHF 的核心思想

用人类反馈(Human Feedback)作为奖励信号,通过强化学习来微调语言模型,使其输出符合人类偏好

三个关键词:

  • Human:人类标注员提供偏好判断(哪个回答更好)

  • Feedback:将偏好转化为数值奖励信号

  • RL:用强化学习算法(PPO)优化模型策略


二、RLHF 的三阶段流程

RLHF 不是一步到位,而是分三个阶段依次执行

预训练模型 → ① 监督微调 (SFT)② 奖励模型训练 (RM)③ PPO 强化学习优化 → 对齐后的模型

2.1 三阶段关系图

三个阶段是串行依赖的:

  • 阶段①的输出 → 作为阶段③的初始策略

  • 阶段②的输出 → 作为阶段③的奖励函数

  • 阶段③在两者基础上完成最终对齐

阶段名称输入产出
SFT预训练模型 + 高质量示范数据SFT 模型(会按格式回答)
RMSFT 模型 + 人类偏好排序数据奖励模型(能打分)
PPOSFT 模型 + 奖励模型 + 提示词对齐后的模型(又好又安全)

三、第一阶段:监督微调 (SFT)

先看三阶段中的第一步:让模型从”续写文本”学会”按格式回答问题”。

3.1 这一步做了什么?

在预训练模型的基础上,用人工编写的高质量问答对进行微调。

数据格式示例

{“prompt”: “解释什么是光合作用”, “response”: “光合作用是植物利用光能,将二氧化碳和水转化为葡萄糖和氧气的过程。主要发生在叶绿体中,是地球上最重要的生化反应之一…”}

标注人员按照”有帮助、诚实、无害”的标准编写回答,通常包含数万条数据。

3.2 训练目标

SFT 仍然使用标准的交叉熵损失(和预训练一样),只不过训练数据从”任意文本”变成了”高质量的 prompt-response 对”:

LSFT=tlogPθ(ytx,y<t)\mathcal{L}_{\text{SFT}} = -\sum_{t} \log P_\theta(y_t | x, y_{<t})

其中:

  • xx 是用户提示词(prompt)

  • yy 是人工编写的目标回答

  • θ\theta 是模型参数

  • 目标是让模型在给定 prompt 时,生成与人工回答越接近越好

3.3 SFT 的作用与局限

作用

  • 让模型学会”回答问题的格式”

  • 提供”好回答”的 baseline

  • 使模型从”续写模式”切换到”对话模式”

  • 为后续 RM 训练提供初始化

局限

  • 标注成本高(人工写完整回答)

  • 标注人员水平参差不齐

  • 无法覆盖所有可能的问题

  • 模型只会模仿,不理解”为什么好”


四、第二阶段:奖励模型训练 (RM)

SFT 让模型会答题,第二阶段则是训练一个能给回答打分的”裁判”。

4.1 核心思路

直接让人工写高质量回答(SFT)成本太高。能不能换一种更高效的方式?

比较 > 创作。让人判断”A 和 B 哪个更好”,比让人从零写一个完美回答,要快得多、一致得多。

奖励模型(Reward Model)的目标:给定一个 prompt 和一个回答,输出一个标量分数 r(prompt, response),代表这个回答的”质量”。分数越高,回答越好。

4.2 偏好数据的收集

具体流程:

  1. 取一个 prompt(比如”如何学习编程?”)

  2. 用 SFT 模型生成 K 个不同的回答(通常 K=4~9)

  3. 标注人员对这 K 个回答进行排序:最好 → 最差

  4. 从排序中提取两两配对,形成偏好对 (chosen, rejected)

偏好数据格式示例

{“prompt”: “如何学习编程?”, “chosen”: “建议从Python开始,先学基础语法,再通过小项目练习…”, “rejected”: “编程很难的,你还是放弃吧。“}

4.3 Bradley-Terry 偏好模型

RLHF 使用 Bradley-Terry 模型来建模偏好概率。假设回答 y₁ 和 y₂ 分别获得奖励分数 r₁ 和 r₂,那么 y₁ 被偏好的概率为:

P(y1y2x)=exp(r(x,y1))exp(r(x,y1))+exp(r(x,y2))=σ(r1r2)P(y_1 \succ y_2 | x) = \frac{\exp(r(x, y_1))}{\exp(r(x, y_1)) + \exp(r(x, y_2))} = \sigma(r_1 - r_2)

其中 σ\sigma 是 sigmoid 函数。这个公式的直觉是:分差越大,偏好越确定

4.4 损失函数

基于以上模型,奖励模型的训练损失为 Pairwise Ranking Loss

LRM=E(x,yw,yl)D[logσ(rθ(x,yw)rθ(x,yl))]\mathcal{L}_{\text{RM}} = -\mathbb{E}_{(x, y_w, y_l) \sim D} \left[ \log \sigma(r_\theta(x, y_w) - r_\theta(x, y_l)) \right]

其中:

  • ywy_w(winner):更好的回答

  • yly_l(loser):更差的回答

  • rθr_\theta:奖励模型(参数为 θ)

  • 直觉:让 winning answer 的分数越高越好,losing answer 的分数越低越好

奖励模型通常基于 SFT 模型初始化,将最后的输出层替换为一个标量回归头(从 hidden_size → 1)。

4.5 奖励模型的局限

问题说明
分布外RM 只在 SFT 模型生成的回答上训练,PPO 阶段模型可能生成 RM 从未见过的回答,评分不准确
奖励黑客模型学会钻 RM 的漏洞——生成 RM 给高分但实际上不好的回答
标注噪声不同标注人员标准不一致,同一个人前后判断也可能不一致
单一维度把所有”好坏”压缩到一个标量,丢失了很多信息

五、第三阶段:PPO 强化学习优化

有了会答题的 SFT 模型和会打分的奖励模型,最后一步是用强化学习把两者串起来,真正优化模型的回答策略。

5.1 强化学习建模

在 RLHF 的语境下,语言生成被建模为一个马尔可夫决策过程(MDP):

MDP 元素RLHF 对应说明
状态 sₜ已生成的 token 序列(prompt, token₁, token₂, …, tokenₜ)
动作 aₜ选择下一个 token从词表中选一个 token
策略 π语言模型本身给定上文,输出下一个 token 的概率分布
奖励 rRM 给出的分数仅在生成完整回答后获得一次奖励

5.2 为什么是 PPO?

PPO(Proximal Policy Optimization)是当前 LLM RLHF 的主流选择,原因有三:

  • 稳定性:通过 Clipped Objective 限制策略更新幅度,避免训练崩溃

  • 简单性:相比 TRPO,PPO 实现简单,调参友好,计算效率高

  • 效果好:InstructGPT 论文已验证 PPO 在 LLM 对齐上效果最佳

5.3 PPO 核心公式:Clipped Surrogate Objective

PPO 的核心创新是裁剪(Clipping)机制,防止策略更新步幅过大:

LCLIP(θ)=Et[min(rt(θ)A^t,  clip(rt(θ),1ϵ,1+ϵ)A^t)]L^{\text{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]

其中:

  • rt(θ)=πθ(atst)πθold(atst)r_t(\theta) = \frac{\pi_\theta(a_t | s_t)}{\pi_{\theta_{\text{old}}}(a_t | s_t)}:新策略与旧策略的概率比

  • A^t\hat{A}_t:优势函数(Advantage),表示这个动作比平均好多少

  • ϵ\epsilon:裁剪范围,通常 0.1~0.2

  • min 操作:如果优势为正(好动作),限制 r 不能超过 1+ε;如果优势为负(坏动作),限制 r 不能低于 1-ε

5.4 KL 散度约束:防止模型”跑偏”

PPO 只约束了策略更新幅度,但没有约束回答质量。模型可能为了讨好 RM 而生成不自然的语言(称为 reward hacking)。

解决方案:在损失函数中加一个 KL 散度惩罚项,约束当前模型不要离 SFT 模型太远。

KL penalty=βKL(πθRLπSFT)\text{KL penalty} = \beta \cdot \text{KL}(\pi_{\theta}^{\text{RL}} \| \pi^{\text{SFT}})

其中 β 控制惩罚强度(典型值 0.01~0.1)。

5.5 完整的 PPO-RLHF 优化目标

综合奖励最大化 + 策略裁剪 + KL 散度约束,最终优化目标为:

LPPO-RLHF=LCLIP(θ)最大化RM奖励βKL(πθRLπSFT)约束不要偏离SFT+γLPT预训练数据混合\mathcal{L}_{\text{PPO-RLHF}} = \underbrace{L^{\text{CLIP}}(\theta)}_{\text{最大化RM奖励}} - \underbrace{\beta \cdot \text{KL}(\pi_\theta^{\text{RL}} \| \pi^{\text{SFT}})}_{\text{约束不要偏离SFT}} + \underbrace{\gamma \cdot L_{\text{PT}}}_{\text{预训练数据混合}}

第三项 L_PT(Pretraining Mix):在 PPO 训练中混入一小部分预训练数据(如 5%~10%),防止模型在 RL 微调中遗忘通用语言能力。这是 InstructGPT 论文中的关键 trick。


六、RLHF 的变体与改进

标准三阶段流程之外,近年出现了一系列更简洁的对齐方法,最有代表性的是 DPO。

6.1 DPO:直接偏好优化

DPO(Direct Preference Optimization, 2023 年)是 RLHF 最重要的改进。核心洞察:不需要显式训练一个奖励模型,可以直接从偏好数据中优化策略

DPO 的核心公式

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

直觉:提高 winning answer 相对于参考模型的概率,同时降低 losing answer 的相对概率。β 控制偏离参考模型的幅度。

对比维度RLHF (PPO)DPO
奖励模型需要单独训练 RM不需要,直接优化
训练阶段三阶段两阶段(SFT + DPO)
训练稳定性PPO 调参敏感,容易崩溃稳定,类似标准微调
计算开销高(需维护 4 个模型)低(只需 2 个模型)
在线交互需要(RL 采样-评分循环)不需要(纯离线)
代表模型GPT-3.5/4, Claude 1Llama 3, Qwen 2.5, Mistral

6.2 RLAIF:AI 反馈替代人类

RLAIF(RL from AI Feedback)用更强的 AI 模型(如 GPT-4)作为评判者,替代人类标注员来给出偏好判断。

优势

  • 成本极低,可规模化

  • 一致性好(AI 不会疲劳)

  • 可覆盖更多样的 prompt

  • Constitutional AI 的基石

局限

  • AI 判断可能有偏差

  • 可能放大 AI 自身的偏好

  • 某些领域不如人类判断

  • 存在”用 AI 训练 AI”的回声效应

6.3 其他值得关注的变体

方法年份核心思想
KTO2024不需要偏好对,只需要”好/坏”单点标注,更贴近实际产品反馈场景
ORPO2024将 SFT 和偏好对齐合并为一个阶段,同时优化指令跟随和偏好
SimPO2024用回答的平均对数概率作为隐式奖励,完全不需要参考模型
GRPO2024DeepSeek 提出的组相对策略优化,用组内相对奖励替代价值函数,省去 Critic 模型

七、实践中的关键挑战

理解了算法流程,再来看把 RLHF 真正跑起来时会遇到的几类工程问题。

7.1 奖励黑客 (Reward Hacking)

典型表现

  • 生成冗长但无意义的回答(RM 往往偏爱长文本)

  • 大量使用礼貌用语和客套话(“当然,很高兴为您回答…”)

  • 重复 RM 训练数据中高频出现的词或句式

  • 生成极端的、过于自信的回答

缓解策略

  • KL 散度约束(限制偏离 SFT)

  • 预训练数据混合(保留语言能力)

  • 多样化的奖励模型集成

  • 长度归一化的奖励

  • 定期人工抽检

7.2 偏好数据质量

问题说明
标注不一致不同标注员对同一 pair 可能给出相反的判断
位置偏差标注员倾向于选择某个固定位置的回答(如总是选左边)
长度偏差标注员倾向选择更长的回答,即使内容并不更好
文化偏差标注员群体的文化背景影响偏好判断的普适性
难度分布简单的 prompt 标注充分,复杂的命题标注不足

7.3 训练稳定性

PPO 训练大型语言模型时面临独特的稳定性挑战:

  • 模型崩溃:一次过大的梯度更新可能让模型完全失控,输出乱码

  • 奖励坍缩:策略优化一段时间后,RM 分数突然急剧下降

  • 灾难性遗忘:RL 优化中遗忘了 SFT 阶段学到的对话能力

实践建议

  • 学习率设为预训练阶段的 1/10~1/100

  • 小 batch size + 梯度累积

  • 每 N 步在验证集上评估,监控 KL 散度和 RM 分数

  • 保留多个检查点,随时可以回滚

  • 考虑使用 LoRA 降低训练参数量

7.4 计算资源需求

完整的 PPO-RLHF 训练需要同时维护 4 个模型

模型角色用途
Policy Model正在优化的模型生成回答(被优化的对象)
Reference ModelSFT 模型的冻结副本计算 KL 散度(保持不动)
Reward Model评分器给生成回答打分
Value Model (Critic)价值估计估计状态的价值,计算优势函数

对于 8B 模型:4 个模型共约 32B 参数需要加载到显存,加上优化器状态、激活值等,实际需要约 200GB+ 显存。这也是为什么开源社区更倾向于 DPO 等轻量方案。


八、总结

8.1 核心要点回顾

RLHF 的本质:用人类偏好信号,通过强化学习,将语言模型从”预测下一个 token”转变为”生成人类满意的回答”。

  1. RLHF = SFT(学会格式) + RM(学会评分) + PPO(学会优化)

  2. SFT 提供”好回答”的 baseline,成本高但必要

  3. RM 通过比较学习(排序比创作容易),将人类偏好量化为标量信号

  4. PPO 在 RM 的引导下优化策略,同时受 KL 散度约束不让回答变”怪”

  5. DPO 是 RLHF 的简化版,省略 RM 直接优化,速度快但缺少在线探索能力

  6. 实践中最大的挑战是奖励黑客、数据质量和训练稳定性

8.2 推荐学习路径

阶段主题推荐资源
入门理解 RLHF 动机和流程OpenAI InstructGPT 论文 (2022)
进阶掌握 PPO 和奖励模型Anthropic Training a Helpful and Harmless Assistant (2022)
深入学习 DPO 等新方法Stanford DPO 论文 (2023)
实践动手训练HuggingFace TRL 库 (trl.readthedocs.io)

(注:部分内容可能由 AI 生成)