十五:强化学习:RLHF-PPO 与 GRPO¶
来源:http://mp.weixin.qq.com/s?__biz=MzYyNTk3Njg1NA==&mid=2247484049&idx=1&sn=d0447086101ab3948335f1d474b5f364&chksm=f01eb1e8c76938fec3c971be4fc791547f884e29c584b07dd38d888960bdcb7c268dbb612c6a#rd
1. 学习定位¶
第十四天学习了传统 PPO。第十五天把 PPO 放到大语言模型 RLHF 中,重点掌握 RLHF-PPO 的完整数据流、损失结构、KL 约束、value head、reward model,以及 GRPO 与 PPO 的差异。 本日知识链路:
SFT model
-> reference model
-> reward model
-> policy model with value head
-> response generation
-> reward + KL penalty
-> token-level PPO loss
-> value loss and advantage
-> RLHF-PPO
-> GRPO: group relative advantage, no critic/value model
2. RLHF-PPO 的组件¶
典型 RLHF-PPO 包含四类模型或模块:
policy model:
正在训练的语言模型,输出 token 概率。
reference model:
通常是冻结的 SFT 模型,用来计算 KL 约束。
reward model:
根据 prompt + response 输出标量偏好分数。
value head / critic:
在 policy hidden states 上预测每个 token 位置的 value。
3. RLHF-PPO 数据流¶
完整流程:
1. sample prompts
2. policy model generates responses
3. record token logp_old under policy
4. reference model computes ref_logp for generated tokens
5. reward model scores prompt + response
6. compute KL penalty and final rewards
7. value head predicts values
8. compute advantages and returns
9. PPO update policy and value head
10. repeat with new policy
4. RLHF 中的奖励结构¶
Reward model 通常对完整回答给一个标量:
但 PPO 需要 token-level reward/advantage。常见做法是: (1)基础定义 - t:生成的第t个token(逐token时间步)- KL_t:当前策略模型 pi_theta 与参考模型 ref 在第 t 个 token 上的 KL 散度
- β:KL惩罚系数(超参数,控制探索幅度)
(2)逐token奖励计算 1、如果不是最后一个token,只给KL惩罚奖励(负奖励,约束模型不要乱更新)
2、如果是最后一个token,给KL惩罚+完整的RM标量分数(把整段回答的质量奖励,全部加在最后一步):
其中 KL 惩罚让 policy 不要偏离 reference model 太远。
序列级的总奖励就是把所有token的奖励求和:
总目标直觉:
最大化「回答质量分数」 - 「偏离原模型的惩罚」 补充:优势函数(Advantage)为什么也是逐 Token? PPO 核心用优势函数 A_t 更新策略,而不是原始奖励:
因为我们已经把奖励拆成了逐 Token,优势函数自然也是逐 Token,完美适配 PPO 的更新逻辑。 这意味着,最后一个 token 的巨大奖励(蕴含在 A_last 中),会按比例衰减,一步步倒推回溯给倒数第二个、倒数第三个……直到第一个 token。
5. KL Penalty¶
标准的KL散度定义是对整个词表进行求和:
但是LLM词表巨大(几万~十几万),逐轮求和计算量爆炸,根本没法训练。 LLM RLHF 中常用 sampled token 上的 KL 采样近似,直接用模型实际生成的那个 token 来近似整段 KL 散度:
beta 控制约束强度:
- beta 太小:模型可能偏离 reference,出现 reward hacking 或语言质量下降。
beta太大:模型几乎不敢改变,reward 难以上升。
工程中也会动态调节 KL 系数,让实际 KL 接近目标范围。
6. PPO Ratio 在 LLM 中的含义¶
对每个生成 token:
PPO token-level policy loss:
只对 response token 计算 loss,不对 prompt token 计算 RL loss。因此必须使用 response mask。
7. Value Head 与 Advantage¶
RLHF-PPO 通常在语言模型上加 value head:
Value head 的作用: - 估计每个生成位置的未来回报。-
作为 baseline 降低策略梯度方差。
-
用于计算 advantage 和 return。
常见 advantage 估计:
在 LLM 中,episode 是一个 response 序列,终止 token 后不再 bootstrap。
8. RLHF-PPO 的总损失¶
常见总损失:
policy loss:
value loss:
有些实现使用 value clipping,减少 critic 变化过大。
注意:KL penalty 通常进入 reward,而不是直接作为 policy loss 的单独项;也有实现把 KL 当作额外 loss 或监控指标。
9. Mask 与 Padding¶
LLM batch 中 response 长度不同,需要 padding。训练时必须区分:
常见 mask: - attention mask:控制模型注意力和有效 token。-
response mask:只选中回答部分。
-
loss mask:排除 padding 和无效位置。
mask 错误会导致 prompt token 被错误优化,或 padding token 影响 KL/value/loss。
10. RLHF-PPO 的工程风险¶
常见风险: - reward hacking:模型利用 reward model 漏洞。
-
KL collapse:KL 太小导致学习停滞,或 KL 太大导致语言质量崩坏。
-
length bias:reward model 偏好长答案或短答案。
-
value head 不准:advantage 噪声大。
-
padding/mask 错误:loss 计算污染。
-
old logp 与 new logp 不匹配:ratio 错误。
-
reward scale 不稳定:PPO 更新震荡。
-
response 采样策略变化:数据分布快速漂移。
11. RLHF-PPO 与传统 PPO 的差异¶
传统 PPO:
environment gives reward every step or episode
state/action often low-dimensional or continuous control
policy and value often separate or shared networks
policy is language model
action is token
reward model gives sequence-level score
reference model provides KL anchor
value head predicts token-level values
mask and padding are essential
compute cost is much higher
12. GRPO 的动机¶
GRPO(Group Relative Policy Optimization)是大模型 RL 中常见的 PPO 变体。它的核心动机是减少 PPO 中 value model/critic 的成本和不稳定性。 PPO 需要:
GRPO 通常不训练额外 critic,而是对同一个 prompt 采样一组回答,用组内 reward 的相对归一化构造 advantage。13. GRPO 的组内相对优势¶
对同一个 prompt,采样 G 个回答:
直觉:
这样不需要训练 value head 来估计 baseline。14. GRPO 的目标函数¶
GRPO 仍然使用类似 PPO 的 ratio clipping:
目标可理解为:
简化写法:
其中A_i 对同一回答的 token 共享,或按实现分配到 response token 上。
15. GRPO 与 PPO 的核心差异¶
维度 RLHF-PPO GRPO Baseline 来源 离线训练 Value Head 预测状态价值V(st) 同 prompt 一组采样答案的奖励均值rˉ Advantage 计算 单序列逐 token TD+GAE 时序平滑,At逐位置不同 整段回答共用同一个标准化优势Ai=σrri−rˉ,同答所有 token 共享 A 网络结构 Policy+Ref+RM+Value (Critic) 四套 Policy+Ref+RM,无 Critic/Value Head 训练开销 额外优化 Value Loss、调试 value_coef,参数量 & 计算量大 省去 Critic 反向传播,显存、迭代开销更低 优势适用逻辑 依赖单条序列时序回报,不需要同 prompt 多采样 强制单 prompt 采样G≥2条回答,依托组间相对排序 主要隐患 Critic 拟合偏差、价值震荡、value loss 难调 每组样本过少时 std 趋近 0、归一化爆炸;组内奖励全同导致 A 全部为 0 无法更新 奖励粒度 支持逐 token 奖励 + 末尾序列打分结合 仅使用全句序列级标量奖励,不拆分 token reward GRPO 是保留 PPO 的 ratio/clip/KL 思想,用组内相对 reward 替代 critic advantage。
16. GRPO 与 DeepSeek-R1¶
DeepSeek 系列工作中,GRPO 被用于大模型数学推理和推理能力强化。其关键思想是:对同一个问题采样多条解答,根据规则奖励或模型奖励得到组内相对信号,优化模型生成更高质量推理轨迹。 在推理任务中,奖励可来自: - 答案是否正确。
-
格式是否满足要求。
-
推理过程是否符合规则。
-
代码或数学验证结果。
GRPO 适合这类场景,是因为同一题目可以采样多个候选解,候选之间可比较,且不一定需要单独训练 value model。
17. KL 散度估计¶
常见 KL 相关量: 真实前向 KL:
在采样 token 上可以估计:
一些实现会使用更稳定的非负近似或二阶近似,例如基于 log ratio 的近似 KL。无论形式如何,工程目的都是监控或惩罚 policy 偏离 reference。 需要注意:不同代码库对 KL 的方向、符号和估计形式可能不同,读代码时必须确认 log ratio 的定义。
18. RLHF-PPO 与 GRPO 的选型¶
RLHF-PPO 适合: - 需要精细 token-level value 估计。
-
奖励结构复杂。
-
有成熟 PPO/TRL 基础设施。
GRPO 适合: - 同一 prompt 可生成多个候选。
-
reward 可直接比较候选优劣。
-
希望省掉 critic/value model。
-
数学、代码、推理等可验证任务。
GRPO 的代价是每个 prompt 需要多样本生成,组大小会增加采样成本。
19. 常见误区¶
误区一:RLHF-PPO 中 KL 只是监控指标。 KL 通常进入 reward 或 loss,直接影响优化目标。 误区二:value head 输出的是 reward model 分数。 value head 预测未来回报,reward model 给完整回答打偏好分。 误区三:GRPO 完全不需要 baseline。 GRPO 使用组内均值和标准差构造相对 baseline,只是不训练 critic。 误区四:GRPO 只适用于 DeepSeek。 GRPO 是一种算法思想,适用于能对同 prompt 多候选打分的 LLM RL 场景。 误区五:KL 方向无所谓。 不同 KL 方向会影响优化行为。工程实现必须确认符号和采样分布。
20. 核心总结¶
第十五天需要掌握的最小闭环:
RLHF-PPO components:
policy model
reference model
reward model
value head
RLHF reward:
reward = reward_model_score - beta * KL(policy || reference)
LLM PPO ratio:
ratio = exp(logp_new - logp_old)
Loss:
PPO clipped policy loss
value loss
entropy bonus
Masks:
compute RL loss only on response tokens
GRPO:
sample multiple responses per prompt
compute group-relative advantage
no value model / critic
keep PPO-style ratio clipping and KL regularization
21. 参考资料¶
-
知乎:DeepSeek R1 用到的 GRPO 详解:https://zhuanlan.zhihu.com/p/15922703850
-
知乎:KL 散度估计:https://zhuanlan.zhihu.com/p/25208314999
-
DeepSeekMath: Pushing the Limits of Mathematical Reasoning in Open Language Models:https://arxiv.org/abs/2402.03300
-
DeepSeek-R1: Incentivizing Reasoning Capability in LLMs via Reinforcement Learning:https://arxiv.org/abs/2501.12948
-
PPO 原论文:https://arxiv.org/abs/1707.06347
-
Deep Reinforcement Learning from Human Preferences:https://arxiv.org/abs/1706.03741
-
Training language models to follow instructions with human feedback:https://arxiv.org/abs/2203.02155
-
Hugging Face TRL PPOTrainer 文档:https://huggingface.co/docs/trl/
预览时标签不可点<div class="