一、直观理解:什么是 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 模型(会按格式回答) |
| ② | RM | SFT 模型 + 人类偏好排序数据 | 奖励模型(能打分) |
| ③ | PPO | SFT 模型 + 奖励模型 + 提示词 | 对齐后的模型(又好又安全) |
三、第一阶段:监督微调 (SFT)
先看三阶段中的第一步:让模型从”续写文本”学会”按格式回答问题”。
3.1 这一步做了什么?
在预训练模型的基础上,用人工编写的高质量问答对进行微调。
数据格式示例:
{“prompt”: “解释什么是光合作用”, “response”: “光合作用是植物利用光能,将二氧化碳和水转化为葡萄糖和氧气的过程。主要发生在叶绿体中,是地球上最重要的生化反应之一…”}
标注人员按照”有帮助、诚实、无害”的标准编写回答,通常包含数万条数据。
3.2 训练目标
SFT 仍然使用标准的交叉熵损失(和预训练一样),只不过训练数据从”任意文本”变成了”高质量的 prompt-response 对”:
其中:
-
是用户提示词(prompt)
-
是人工编写的目标回答
-
是模型参数
-
目标是让模型在给定 prompt 时,生成与人工回答越接近越好
3.3 SFT 的作用与局限
作用:
-
让模型学会”回答问题的格式”
-
提供”好回答”的 baseline
-
使模型从”续写模式”切换到”对话模式”
-
为后续 RM 训练提供初始化
局限:
-
标注成本高(人工写完整回答)
-
标注人员水平参差不齐
-
无法覆盖所有可能的问题
-
模型只会模仿,不理解”为什么好”
四、第二阶段:奖励模型训练 (RM)
SFT 让模型会答题,第二阶段则是训练一个能给回答打分的”裁判”。
4.1 核心思路
直接让人工写高质量回答(SFT)成本太高。能不能换一种更高效的方式?
比较 > 创作。让人判断”A 和 B 哪个更好”,比让人从零写一个完美回答,要快得多、一致得多。
奖励模型(Reward Model)的目标:给定一个 prompt 和一个回答,输出一个标量分数 r(prompt, response),代表这个回答的”质量”。分数越高,回答越好。
4.2 偏好数据的收集
具体流程:
-
取一个 prompt(比如”如何学习编程?”)
-
用 SFT 模型生成 K 个不同的回答(通常 K=4~9)
-
标注人员对这 K 个回答进行排序:最好 → 最差
-
从排序中提取两两配对,形成偏好对 (chosen, rejected)
偏好数据格式示例:
{“prompt”: “如何学习编程?”, “chosen”: “建议从Python开始,先学基础语法,再通过小项目练习…”, “rejected”: “编程很难的,你还是放弃吧。“}
4.3 Bradley-Terry 偏好模型
RLHF 使用 Bradley-Terry 模型来建模偏好概率。假设回答 y₁ 和 y₂ 分别获得奖励分数 r₁ 和 r₂,那么 y₁ 被偏好的概率为:
其中 是 sigmoid 函数。这个公式的直觉是:分差越大,偏好越确定。
4.4 损失函数
基于以上模型,奖励模型的训练损失为 Pairwise Ranking Loss:
其中:
-
(winner):更好的回答
-
(loser):更差的回答
-
:奖励模型(参数为 θ)
-
直觉:让 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 的概率分布 |
| 奖励 r | RM 给出的分数 | 仅在生成完整回答后获得一次奖励 |
5.2 为什么是 PPO?
PPO(Proximal Policy Optimization)是当前 LLM RLHF 的主流选择,原因有三:
-
稳定性:通过 Clipped Objective 限制策略更新幅度,避免训练崩溃
-
简单性:相比 TRPO,PPO 实现简单,调参友好,计算效率高
-
效果好:InstructGPT 论文已验证 PPO 在 LLM 对齐上效果最佳
5.3 PPO 核心公式:Clipped Surrogate Objective
PPO 的核心创新是裁剪(Clipping)机制,防止策略更新步幅过大:
其中:
-
:新策略与旧策略的概率比
-
:优势函数(Advantage),表示这个动作比平均好多少
-
:裁剪范围,通常 0.1~0.2
-
min 操作:如果优势为正(好动作),限制 r 不能超过 1+ε;如果优势为负(坏动作),限制 r 不能低于 1-ε
5.4 KL 散度约束:防止模型”跑偏”
PPO 只约束了策略更新幅度,但没有约束回答质量。模型可能为了讨好 RM 而生成不自然的语言(称为 reward hacking)。
解决方案:在损失函数中加一个 KL 散度惩罚项,约束当前模型不要离 SFT 模型太远。
其中 β 控制惩罚强度(典型值 0.01~0.1)。
5.5 完整的 PPO-RLHF 优化目标
综合奖励最大化 + 策略裁剪 + KL 散度约束,最终优化目标为:
第三项 L_PT(Pretraining Mix):在 PPO 训练中混入一小部分预训练数据(如 5%~10%),防止模型在 RL 微调中遗忘通用语言能力。这是 InstructGPT 论文中的关键 trick。
六、RLHF 的变体与改进
标准三阶段流程之外,近年出现了一系列更简洁的对齐方法,最有代表性的是 DPO。
6.1 DPO:直接偏好优化
DPO(Direct Preference Optimization, 2023 年)是 RLHF 最重要的改进。核心洞察:不需要显式训练一个奖励模型,可以直接从偏好数据中优化策略。
DPO 的核心公式:
直觉:提高 winning answer 相对于参考模型的概率,同时降低 losing answer 的相对概率。β 控制偏离参考模型的幅度。
| 对比维度 | RLHF (PPO) | DPO |
|---|---|---|
| 奖励模型 | 需要单独训练 RM | 不需要,直接优化 |
| 训练阶段 | 三阶段 | 两阶段(SFT + DPO) |
| 训练稳定性 | PPO 调参敏感,容易崩溃 | 稳定,类似标准微调 |
| 计算开销 | 高(需维护 4 个模型) | 低(只需 2 个模型) |
| 在线交互 | 需要(RL 采样-评分循环) | 不需要(纯离线) |
| 代表模型 | GPT-3.5/4, Claude 1 | Llama 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 其他值得关注的变体
| 方法 | 年份 | 核心思想 |
|---|---|---|
| KTO | 2024 | 不需要偏好对,只需要”好/坏”单点标注,更贴近实际产品反馈场景 |
| ORPO | 2024 | 将 SFT 和偏好对齐合并为一个阶段,同时优化指令跟随和偏好 |
| SimPO | 2024 | 用回答的平均对数概率作为隐式奖励,完全不需要参考模型 |
| GRPO | 2024 | DeepSeek 提出的组相对策略优化,用组内相对奖励替代价值函数,省去 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 Model | SFT 模型的冻结副本 | 计算 KL 散度(保持不动) |
| Reward Model | 评分器 | 给生成回答打分 |
| Value Model (Critic) | 价值估计 | 估计状态的价值,计算优势函数 |
对于 8B 模型:4 个模型共约 32B 参数需要加载到显存,加上优化器状态、激活值等,实际需要约 200GB+ 显存。这也是为什么开源社区更倾向于 DPO 等轻量方案。
八、总结
8.1 核心要点回顾
RLHF 的本质:用人类偏好信号,通过强化学习,将语言模型从”预测下一个 token”转变为”生成人类满意的回答”。
-
RLHF = SFT(学会格式) + RM(学会评分) + PPO(学会优化)
-
SFT 提供”好回答”的 baseline,成本高但必要
-
RM 通过比较学习(排序比创作容易),将人类偏好量化为标量信号
-
PPO 在 RM 的引导下优化策略,同时受 KL 散度约束不让回答变”怪”
-
DPO 是 RLHF 的简化版,省略 RM 直接优化,速度快但缺少在线探索能力
-
实践中最大的挑战是奖励黑客、数据质量和训练稳定性
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 生成)