外观
PPO算法在大模型RLHF中的应用
内容整理自学习笔记,仅供面试备考参考;不构成录用、培训或考试承诺。
1. RLHF 中 PPO 的主要步骤
大语言模型 RLHF 中的 PPO 分为三个核心步骤:
| 步骤 | 名称 | 说明 |
|---|---|---|
| 1 | 采样 | 模型根据提示(prompt)生成回答(response) |
| 2 | 反馈 | 使用奖励模型对生成结果计算奖励 |
| 3 | 学习 | 根据奖励信号更新模型参数 |
伪代码实现
python
policy_model = load_model()
for k in range(20000):
# 步骤1:采样(生成答案)
prompts = sample_prompt()
data = respond(policy_model, prompts)
# 步骤2:反馈(计算奖励)
rewards = reward_func(reward_model, data)
# 步骤3:学习(更新参数)
for epoch in range(4):
policy_model = train(policy_model, prompts, data, rewards)2. 大语言模型 RLHF 的形象比喻
RLHF 实际上是模型先试错再学习的过程,可以用"老师与学生"的角色来类比:
| 角色 | 对应 | 职责 |
|---|---|---|
| 老师 | 人类/奖励模型 | 提出有趣的问题,对回答进行打分 |
| 学生 | 大模型 | 不断尝试给出答案,根据反馈改进 |
模型会根据给出的问题写出它觉得正确的答案,但答案不一定是对的,需要结合正确答案进行打分。表现好给予高声赞扬,表现不佳则给予耐心指导和反馈,帮助模型不断改进,直到达到令人满意的水平。
3. PPO 中的采样过程
3.1 什么是采样过程?
采样过程即学生回答问题的过程:模型根据提示(prompt)输出回答(response)的过程,也可以理解为模型自行生产训练数据的过程。
输入: prompt(提示)
↓
[Policy Model]
↓
输出: response(回答)3.2 PPO 中的采样策略
PPO 中的采样通过一种策略(policy)完成,policy 由两个模型组成:
| 模型 | 角色 | 功能 | 输入 → 输出 |
|---|---|---|---|
| Actor(演员) | 决策 | 即要训练的大模型,训练前是 RLHF 第一步的 SFT model | 上下文 → 下一个 token 的概率分布 |
| Critic(评论家) | 总结得失 | 强化学习的辅助模型 | 上下文 → 下一个 token 的"收益" |
Actor 和 Critic 就像学生大脑中的两种意识:一个负责决策,一个负责总结得失。
3.3 如何评估"收益"?
收益是指从下一个 token 开始,模型能够获得的总奖励(浮点数标量)。
奖励的组成部分包括:
| 奖励来源 | 说明 |
|---|---|
| Reward Model | 对完整回答给出的奖励分数 |
| KL 惩罚 | 限制模型不要偏离初始模型太远 |
收益 = 从当前 token 开始的未来累计奖励,这一概念与强化学习中的值函数一致。
4. PPO 训练流程总结
┌──────────────────────────────────────────────────┐
│ PPO 训练循环 │
│ │
│ ┌─────────┐ ┌──────────┐ ┌───────────┐ │
│ │ 采样 │────→│ 反馈 │────→│ 学习 │ │
│ │ Actor+ │ │ Reward │ │ 更新 Actor│ │
│ │ Critic │ │ Model │ │ & Critic │ │
│ └─────────┘ └──────────┘ └───────────┘ │
│ ↑ │ │
│ └────────────────────────────────────┘ │
│ 迭代更新 │
└──────────────────────────────────────────────────┘四个模型的角色
PPO 训练同时涉及 4 个模型(2 训练 + 2 推理):
| 模型 | 类型 | 是否训练 | 说明 |
|---|---|---|---|
| Actor(Policy Model) | 训练 | 是 | 从 SFT 模型初始化,学习生成更好的回答 |
| Critic(Value Model) | 训练 | 是 | 评估状态价值,辅助 Actor 学习 |
| Reward Model | 推理 | 否 | 提供奖励信号 |
| Reference Model | 推理 | 否 | 冻结的初始模型,用于计算 KL 惩罚 |
这也是 PPO 对计算资源要求较高的原因——同时需要 4 个模型在显存中。