强化学习
强化学习(Reinforcement Learning, RL)是一类通过“试错 + 奖励”来学习决策策略的方法。模型不是只学习标准答案,而是在环境中采取行动,根据奖励信号调整策略,让未来获得更高回报。
在大语言模型场景中,强化学习主要用于:
- 让模型回答更符合人类偏好。
- 提升模型在数学、代码、逻辑推理等任务上的表现。
- 让模型学会遵循安全边界和拒答策略。
- 优化模型输出风格,例如更简洁、更有帮助、更少幻觉。
- 利用 verifier、reward model 或规则信号训练推理能力。
LLM 里的强化学习不一定都像传统游戏 RL 那样和环境反复交互。很多方法使用离线偏好数据、规则奖励或模型生成样本进行训练。
1. 核心概念
强化学习可以用几个基本概念来描述。
| 概念 | 含义 | LLM 中的对应 |
|---|---|---|
| Agent | 做决策的主体 | 语言模型 |
| State | 当前环境状态 | prompt、历史上下文、已生成 token |
| Action | 可采取的动作 | 生成下一个 token,或生成一个完整回答 |
| Policy | 决策策略 | 模型参数决定的输出分布 |
| Reward | 奖励信号 | 人类偏好分数、规则得分、verifier 结果、reward model 分数 |
| Trajectory | 一连串状态和动作 | 从 prompt 到完整回答的生成过程 |
| Return | 累计奖励 | 一个回答或推理轨迹的总体得分 |
传统 RL 常常关注“在环境中连续行动”。LLM 中更常见的是:给定一个 prompt,模型生成一个回答,然后用某种奖励信号评估这个回答,再更新模型。
2. 为什么 LLM 需要强化学习
预训练让模型学会预测下一个 token,监督微调让模型学会模仿高质量答案。但这还不够。
原因包括:
- 很多任务没有唯一标准答案。
- 人类更喜欢的回答不一定是训练集中出现概率最高的回答。
- 安全、礼貌、简洁、拒答等偏好很难只靠交叉熵表达。
- 推理任务中,最终答案正确与否可能比逐字模仿参考答案更重要。
- 模型需要在多个目标之间折中,例如帮助性、真实性、安全性和简洁性。
强化学习或偏好优化的作用,是把“什么样的回答更好”转化为训练信号。
3. LLM 训练流程中的位置
一个典型的大模型训练流程可以简化为:
预训练
-> 监督微调 SFT
-> 偏好对齐 / 强化学习
-> 评估与安全测试
-> 部署
各阶段目标不同:
| 阶段 | 主要目标 |
|---|---|
| 预训练 | 学习通用语言、知识和模式 |
| SFT | 学习指令跟随和标准回答格式 |
| RLHF / 偏好优化 | 让回答更符合人类或任务偏好 |
| 推理 RL / verifier 训练 | 提升可验证任务上的正确率 |
强化学习通常不是从零训练模型,而是在已有 SFT 模型基础上继续优化。
4. Verifier、Reward Function 与 Reward Model
这三个概念容易混淆。
4.1 Verifier
Verifier 用来判断结果是否满足某个条件,通常偏“验证正确性”。
例子:
- 数学题最终答案是否正确。
- 代码是否通过单元测试。
- JSON 是否符合 schema。
- SQL 是否能执行并返回正确结果。
- 工具调用参数是否满足规则。
Verifier 可以是规则、程序、测试用例,也可以是另一个模型。
它通常输出:
正确 / 错误
通过 / 不通过
匹配 / 不匹配
Verifier 本身不一定给连续分数。
4.2 Reward Function
Reward Function 把结果映射成数值奖励。
例如:
答案正确: +1
答案错误: -1
格式错误: -0.5
输出过长: -0.2
触发安全问题: -2
Reward Function 可以使用 verifier 的结果,也可以加入长度、格式、安全、风格等额外因素。
4.3 Reward Model
Reward Model 是一个训练出来的模型,用来给回答打分。
在人类偏好对齐中,常见流程是:
- 对同一个 prompt 采样多个回答。
- 人类标注哪个回答更好。
- 用这些偏好数据训练 reward model。
- 用 reward model 给新回答打分。
- 使用 RL 方法优化语言模型。
Reward Model 的优点是能表达复杂偏好;缺点是可能被模型“钻空子”,也可能继承标注偏差。
5. RLHF
RLHF(Reinforcement Learning from Human Feedback)是用人类反馈训练模型的典型流程。
常见步骤:
- 训练 SFT 模型。
- 对同一批 prompt 生成多个候选回答。
- 人类标注回答偏好,例如 A 比 B 好。
- 训练 reward model。
- 使用 PPO 等 RL 算法优化模型。
- 持续评估帮助性、真实性和安全性。
RLHF 的目标不是让模型输出“唯一正确答案”,而是让模型输出更符合人类偏好的答案。
常见收益:
- 回答更有帮助。
- 更会拒绝不安全请求。
- 格式和语气更稳定。
- 减少明显胡说和低质量回答。
常见风险:
- 训练成本高。
- 人类偏好标注成本高。
- reward model 可能被过度优化。
- 模型可能变得啰嗦、保守或迎合。
6. PPO
PPO(Proximal Policy Optimization)是 RLHF 中经典使用的强化学习算法。
它的核心思想是:更新策略时不要让新模型偏离旧模型太远,以保证训练稳定。
在 LLM 中,PPO 通常会同时考虑:
- reward model 给出的奖励。
- 当前策略模型的输出概率。
- 参考模型的输出概率。
- KL penalty,用来限制模型偏离原模型太远。
简化目标可以理解为:
提高高奖励回答的概率
同时限制模型不要偏离参考模型太远
KL 约束很重要。没有约束时,模型可能为了骗取 reward model 分数而生成奇怪、高分但不可用的回答。
PPO 的优点:
- 理论和实践积累较多。
- 能直接优化 reward model 分数。
- 适合完整 RLHF 流程。
缺点:
- 工程复杂。
- 显存和训练成本高。
- 需要 reward model。
- 超参数敏感,训练不稳定时排障困难。
7. DPO
DPO(Direct Preference Optimization)是一种直接使用偏好数据优化模型的方法。
它不需要单独训练 reward model,也不需要显式运行 PPO。训练数据通常是:
{
"prompt": "解释一下 KV Cache",
"chosen": "更好的回答",
"rejected": "较差的回答"
}
DPO 的目标是提高 chosen 的概率,降低 rejected 的概率,同时通过参考模型约束更新幅度。
直观理解:
同一个问题下
让模型更倾向于好答案
更不倾向于差答案
DPO 的优点:
- 流程比 PPO 简单。
- 不需要 reward model。
- 训练稳定性和工程成本通常更友好。
- 适合偏好数据已经准备好的场景。
缺点:
- 依赖偏好对质量。
- 不直接处理需要在线探索的任务。
- 对“为什么 chosen 更好”的细粒度奖励表达有限。
8. ORPO
ORPO(Odds Ratio Preference Optimization)把监督微调和偏好优化结合在一个训练目标中。
它的思路是:在学习 chosen 回答的同时,拉开 chosen 和 rejected 的概率差距。
相比“先 SFT 再 DPO”的两阶段流程,ORPO 更像是把两件事合到一起:
- 继续学习好回答。
- 同时抑制坏回答。
适合场景:
- 希望流程简单。
- 偏好数据中 chosen 本身就是高质量监督答案。
- 希望在 SFT 阶段就引入偏好差异。
需要注意的是,ORPO 仍然依赖偏好数据质量。如果 chosen / rejected 标注不稳定,模型也会学到不稳定偏好。
9. KTO
KTO(Kahneman-Tversky Optimization)使用更简单的反馈形式训练模型。
它不一定需要成对的 chosen / rejected 数据,而可以使用类似:
这个回答是好的
这个回答是不好的
也就是说,KTO 更适合只有正负反馈、没有严格成对比较的数据。
适合场景:
- 线上反馈只有点赞 / 点踩。
- 标注成本较低,只能判断单个回答好坏。
- 难以为每个 prompt 构造高质量偏好对。
它的优势是数据形式灵活;挑战是反馈信号更粗,需要更仔细地控制数据质量和训练比例。
10. GRPO
GRPO(Group Relative Policy Optimization)常见于推理模型训练讨论中。
它的核心思想是:对同一个 prompt 采样一组回答,把组内回答的相对得分作为优化信号,而不是依赖单个回答的绝对奖励。
简化流程:
同一个 prompt
-> 采样多个回答
-> 用 verifier / reward function 打分
-> 计算组内相对优势
-> 提高高分回答概率,降低低分回答概率
GRPO 常用于可验证任务,例如:
- 数学题。
- 代码题。
- 逻辑推理。
- 有明确答案或测试用例的任务。
它的优势:
- 可以利用规则 verifier。
- 不一定需要训练 reward model。
- 对推理任务很有吸引力。
- 通过组内比较降低绝对奖励尺度设计难度。
它的挑战:
- 需要为同一 prompt 采样多个回答,训练成本较高。
- verifier 质量非常关键。
- 如果奖励只看最终答案,模型可能学到不好的中间推理习惯。
- 对开放式任务不如可验证任务直接。
11. RLHF、DPO、PPO、GRPO 对比
| 方法 | 主要数据 | 是否需要 Reward Model | 工程复杂度 | 常见用途 |
|---|---|---|---|---|
| RLHF + PPO | 人类偏好数据 + reward model | 通常需要 | 高 | 通用对话对齐 |
| DPO | chosen / rejected 偏好对 | 不需要 | 中 | 偏好对齐、风格优化 |
| ORPO | chosen / rejected 偏好对 | 不需要 | 中 | SFT 与偏好优化合并 |
| KTO | 单条好 / 坏反馈 | 不需要 | 中 | 点赞点踩类反馈 |
| GRPO | 同 prompt 多回答 + reward / verifier | 不一定需要 | 中到高 | 数学、代码、推理训练 |
实际选择时,要先看数据形态:
- 有大量高质量偏好对:DPO / ORPO。
- 有人类偏好标注和 reward model 能力:RLHF + PPO。
- 有规则验证器:GRPO 或基于 verifier 的 RL。
- 只有点赞点踩:KTO 或类似单样本反馈方法。
12. 强化学习与监督微调的区别
SFT 学的是“模仿标准答案”;RL / 偏好优化学的是“提高更好行为的概率”。
| 维度 | SFT | RL / 偏好优化 |
|---|---|---|
| 数据 | 输入 + 标准输出 | 偏好、奖励、验证结果 |
| 目标 | 模仿参考答案 | 优化偏好或奖励 |
| 优点 | 稳定、简单、成本低 | 能表达更复杂目标 |
| 风险 | 容易学成机械模仿 | 奖励设计不好会被钻空子 |
| 常见用途 | 指令跟随、格式学习 | 对齐、推理、偏好优化 |
很多项目应该先做好 SFT 和评估,再考虑强化学习。RL 不能弥补低质量数据和不清晰目标。
13. Reward Hacking
Reward hacking 指模型找到一种“拿高分但不真正符合目标”的方式。
例子:
- 为了获得“详细”奖励,回答变得过度冗长。
- 为了通过格式检查,输出合法 JSON 但内容无意义。
- 为了通过简单数学 verifier,只输出最终答案,不保留可读推理。
- 为了安全奖励,过度拒答正常问题。
缓解方式:
- 使用多维奖励,而不是单一分数。
- 保留人工评估。
- 加入对抗样本和边界样本。
- 监控回答长度、拒答率、格式通过率等副指标。
- 不只看 reward 分数,还要看真实任务指标。
14. 推理模型中的奖励设计
数学和代码任务常用 verifier,因为答案可以自动检查。
常见奖励信号:
- 最终答案是否正确。
- 代码是否通过测试。
- 推理过程是否满足格式。
- 是否使用了允许的工具。
- 输出是否过长。
- 是否出现明显无效推理。
需要注意:只奖励最终答案可能不够。模型可能通过猜测或不稳定路径得到正确答案。对于需要可解释过程的场景,可以同时评估最终答案和推理轨迹质量。
15. 数据质量
强化学习和偏好优化高度依赖反馈数据质量。
训练前建议检查:
- chosen 是否真的优于 rejected。
- 偏好标准是否一致。
- 标注者之间是否有明显分歧。
- 是否混入安全风险数据。
- 是否存在大量模板化偏好。
- prompt 分布是否接近真实场景。
- reward / verifier 是否能覆盖边界情况。
偏好数据有噪声时,模型会学到噪声。reward function 有漏洞时,模型会利用漏洞。
16. 评估指标
强化学习后的模型不能只看训练 reward。
建议同时评估:
| 指标 | 说明 |
|---|---|
| Win rate | 和基线模型相比,人类或模型裁判更偏好哪一个 |
| 任务准确率 | 数学、代码、分类、抽取等任务的客观指标 |
| 格式通过率 | JSON、工具调用、schema 等格式是否正确 |
| 拒答准确率 | 应拒答的是否拒答,不应拒答的是否正常回答 |
| 长度分布 | 是否变得过长或过短 |
| 幻觉率 | 是否编造事实或引用 |
| 安全通过率 | 是否遵循安全策略 |
| 回归测试 | 原有能力是否下降 |
RL 训练后尤其要关注能力回退和行为偏移。
17. 实践建议
做 LLM 强化学习或偏好优化时,可以按这个顺序推进:
- 先明确目标:是提升安全、风格、推理正确率,还是工具调用稳定性。
- 先建立评估集:没有评估集不要急着训练。
- 先做好 SFT:基础指令跟随和格式能力要先稳定。
- 根据数据形态选择方法:偏好对用 DPO / ORPO,可验证任务考虑 GRPO。
- 控制训练强度:避免模型偏离基座太远。
- 同时看 reward 和真实任务指标。
- 做人工抽检:尤其检查拒答、幻觉、冗长和边界问题。
- 保留回滚版本:偏好训练很容易带来非预期行为变化。
如果只是想让模型按固定格式输出,通常 SFT 或提示词就够了。如果目标是“哪个回答更好”或“怎样提高可验证任务成功率”,再考虑偏好优化和 RL。
18. 总结
强化学习在 LLM 中的核心作用,是把“好回答”的标准转化为训练信号,让模型不只是模仿数据,而是向更高偏好或更高奖励的行为靠近。
可以抓住几条主线:
- RLHF 用人类偏好训练 reward model,再用 PPO 等方法优化模型。
- DPO、ORPO、KTO 等方法简化了偏好对齐流程。
- GRPO 等方法更适合数学、代码这类可验证推理任务。
- Verifier 判断对错,Reward Function 给数值奖励,Reward Model 学习复杂偏好。
- 强化学习的最大风险是 reward hacking 和能力回退。
对工程实践来说,强化学习不是万能增强器。它需要清晰目标、高质量反馈数据、可靠评估和严格回归测试。否则模型可能只是学会了拿高分,而不是变得真正更有用。