11 从策略梯度到 RLHF、RLVR 与 GRPO
范围依据:主板书右下角和MId.md明确写到RLHF、RLVR、GRPO。当前详细训练课件未提供,本章是系统预习。原始GRPO参照 DeepSeekMath §4.1,后续实现可能更换归一化、KL和token聚合,考试需以老师指定版本为准。
11.1 为什么还要 RL
SFT要求示范“应该怎么答”;复杂推理中收集完整最优轨迹昂贵,而且示范学习并不直接针对自由生成的最终成功率。RL让模型生成候选、得到评价,再增加高奖励行为的概率。奖励可能是人类偏好模型,也可能是数学答案/代码测试的验证器。
重要区别:next-token CE是局部可微监督,最终执行代码的通过/失败通常无法对token ID直接求普通梯度。策略梯度通过“采到这个行为的概率”获得训练信号,不要求验证器可微。
把LLM当策略:状态s_t=(prompt,y_<t);动作a_t=y_t;策略πθ(a_t|s_t)是词表分布;追加token得到下一状态;EOS/长度上限结束episode。奖励可逐步给,也可只在最终答案给。
11.2 REINFORCE 从期望推出来
先对完整回答y写目标:J(θ)=E_(y~πθ)[R(y)],假设奖励函数本身不直接依赖θ。离散求和并用∇π=π∇logπ:
自回归logπ(y|x)=Σ_t logπ(y_t|x,y_<t),所以一条成功轨迹可给多个token训练信号。实际用有限rollout Monte Carlo估计,有方差、信用分配和探索困难。
若写成最小化loss:L=-stopgrad(R) Σlogπ,梯度下降对应增大奖励高的轨迹概率。不能把R直接当成一个可对离散生成全链路backprop的标量loss。
若减一个不依赖当前动作的baseline b(s),E[b(s)∇logπ(a|s)]=b(s)∇Σ_aπ(a|s)=0,可降方差而不改变该条件下的期望梯度。组内样本均值/标准差参与的GRPO估计有自己的偏差/缩放性质,不能不加条件套用这个理想baseline证明。
11.3 Return、value、Q 与 advantage
G_t=Σ_(k≥t) γ^(k-t) r_k是未来折扣回报;Vπ(s)=E[G_t|s];Qπ(s,a)=E[G_t|s,a];Aπ(s,a)=Qπ(s,a)-Vπ(s),表示这个动作比同状态平均行为好多少。
critic估V,用回报或bootstrapped target回归;它不负责直接生成token。LLM上下文中γ常取1或其他配置,但并非定义上必须1。
GAE(用于理解PPO的常见优势估计)先构造TD误差:
λ调偏差/方差折中;episode结束处V终值与长度截断处理要明确。只最终给奖励时,如何传到各token就更依赖估计方法。
11.4 RLHF 三阶段与模型角色
经典流程:①SFT,用人工示范初始化actor;②同prompt采多个回答,收集人类排序/偏好,训练reward model;③用reward加KL约束优化actor(常见PPO)。参考 InstructGPT论文。
二元偏好模型常设:
只依赖分差,给所有同prompt候选同时加常数不改变偏好概率。RM学到标注者偏好近似,不是客观真理;数据偏差、分布外过度自信和reward hacking都会影响actor。
常见四个逻辑角色:
| 角色 | 是否训练 | 用途 |
|---|---|---|
| actor/current policy πθ | 是 | 生成与概率更新 |
| old policy πold | rollout批内固定 | 采样行为分布、importance ratio分母 |
| reference πref | 通常冻结 | 锚定初始行为,计算KL |
| critic Vψ | PPO中通常训练 | 估值/优势 |
| reward model rφ或verifier | 策略阶段通常固定 | 给奖励 |
这是逻辑角色,不代表每个角色永远物理上独占一套完整GPU权重;实现可共享、缓存logprobs或切换。old常是某次更新前actor快照,ref常是初始SFT快照,两者一般不是同一概念。
11.5 KL 约束为什么存在
仅最大化RM可能学会投机:输出某种高分格式、重复奉承、利用验证漏洞。常用KL正则:
序列KL可按自回归链式分解为在当前策略前缀分布上的token条件KL期望。β大更保守;β小更允许偏离,但不保证总质量更高。正则是抑制偏离,不是保证绝无reward hacking。
这和蒸馏常用KL(teacher||student)方向不同:这里常见KL(current||reference);必须按各自公式判断。
单个采样token的logπθ(a)-logπref(a)可以为负,只有按正确分布取期望才对应非负KL。另一个常见估计形式,令u=πref(a|s)/πθ(a|s),
若a按当前πθ采样,E[u]=1,其期望等于KL(πθ||πref)。但实际数据常来自πold,多轮更新后πθ不同,要区分“非负单样本表达式”“对哪个采样分布的无偏估计”“实现的梯度估计”三件事。不要把任何旧轨迹上求平均的这个式子都无条件称为精确KL。
11.6 PPO 为什么引入 old policy 与 clipping
on-policy样本昂贵,希望一批rollout能做若干更新,又避免策略漂移过大。token级ratio:
常见clipped surrogate最大化:
old_logp与优势在策略更新中通常detach;当前logp保留梯度。不能detach ratio的分子,也不能每次算分母时把old同步成current,否则ρ始终1失去意义。
两种符号都要会:
- A>0,增加动作概率有利;ρ超过1+ε后,额外增大不再获该项收益。
- A<0,降低动作概率有利;ρ低于1-ε后,额外降低不再获该项收益。
另一侧若朝坏方向变化,min会保留惩罚,而不是所有超区间都梯度0。clipping不是强制概率比值永远落在区间内,也不保证理论KL硬上界。PPO原论文。
11.7 RLVR 是奖励来源,不是某一个优化器
可验证奖励常来自数学最终答案匹配、代码单元测试、形式证明检查、结构约束等。比逐条人类偏好更易扩展,能给可重复的反馈。但测试集不完备、答案抽取规则有漏洞、只验结论不验过程,都可能被利用。
最终答案正确不保证过程每步正确;格式正确不等于任务成功。用公开测试做训练奖励后,应保留独立评测,不把训练通过率直接报泛化性能。
RLVR可配PPO、GRPO等;GRPO也可配学到的RM,不天然等于RLVR。RLHF/RLVR讲信号来源,PPO/GRPO讲更新机制。PRM/ORM讲评分粒度,属于又一维度。
11.8 GRPO 为什么不要 critic
同一问题采G个回答,直接比较组内奖励,用组统计代替可学习value baseline。减少独立critic的训练/存储成本,但仍要承担多条rollout、奖励计算、actor更新,可能还有ref推理等成本,绝不是“无额外成本的RL”。
outcome监督的经典形式:
这里明确采用population std;若题目/库用sample std,则数值会不同。ε_std是除零保护,别与PPO的clip ε混用。一个回答的相同outcome advantage通常用于其全部有效response token;prompt/padding不进入该response目标。
忽略过程奖励变体、写成单问题目标:
其中ρ分母是old,k锚定ref。**old、ref、group mean三种“参照物”分别承担不同作用。**真实KL项实现、归一化和是否使用β要按版本核对。这里给的是经典教学目标,不把后来的所有GRPO变体统一成一条式子。
11.9 手算一组奖励和clipping
G=4,r=[1,1,0,0],均值.5、population std .5,A=[1,1,-1,-1]。忽略ε_std,对正确回答提高概率、错误回答降低概率。
若r=[1,1,1,1]或[0,0,0,0],中心化后都为0;该组没有相对奖励学习信号,仍可能有KL等其他项。全错组并不自动指出哪个错误更值得学,全对组也不是绝对停止一切更新。G=1时组内标准化退化,需换估计方式。
clip ε=.2:
| A | ρ | ρA | clip(ρ)A | min结果 | 含义 |
|---|---|---|---|---|---|
| +1 | 1.3 | 1.3 | 1.2 | 1.2 | 过度提高的收益被截平 |
| +1 | .7 | .7 | .8 | .7 | 变差方向仍惩罚 |
| -1 | .7 | -.7 | -.8 | -.8 | 过度降低的收益被截平 |
| -1 | 1.3 | -1.3 | -1.2 | -1.3 | 变差方向仍惩罚 |
如果要最小化loss,则取策略目标的负号,再加正的KL惩罚;混淆符号会变成奖励错误轨迹。
11.10 一轮 GRPO 的实现顺序
- 从题库取prompt batch,并固定rollout policy版本。
- 每个prompt采G条回答,保存response tokens、有效长度、old logprobs及必要终止信息。
- verifier/RM打分,保留reward各分项;防止答案抽取失败被误记成通过。
- 按prompt组计算baseline/std与advantage,detach这些目标统计。
- ref对同一组prompt+response求有效token logprobs(若使用ref KL)。
- current actor对已采序列做teacher-forced forward,一次得到每个有效response token的logprob。
- 使用正确的next-token对齐,形成ρ、clipped policy项、KL和response mask,按指定聚合方式求loss。
- backward、clip梯度、optimizer step;允许的更新轮数结束后丢弃或按算法管理旧数据,下一轮重新采样。
- 监控reward分布、通过率、组内std为0比例、长度、entropy、KL、clip fraction,以及独立验证题集表现。
训练forward能对给定回答的所有token并行评分,不表示rollout生成未来token也可以无限并行。RL训练常同时需要高吞吐生成服务与反向训练系统,这也是课程vLLM与训练主线的连接。
11.11 长度、难度和标准差是容易被漏掉的细节
经典每回答先除T_i再平均让每条回答总权重相近;所有token相加除总token数则长回答贡献更多。二者目标不同。改归一化会影响长度偏好,不能只说“都是平均”。
二元奖励下,组内std随通过比例变化;除std会改变不同难度组的梯度尺度。组内比较避免只用绝对奖励,但可能抑制全对/全错组的信号。后续方法有不同修正;没有老师材料前不把某一种改法认定为必考标准答案。
reward hacking、过长推理、entropy下降和训练/测试分布差异都需要监控。更长chain-of-thought不等于更好的奖励归因;仅末端奖励无法逐步说明哪一处推理错误。
11.12 DPO 作为关联预习
教学大纲提到DPO,但范围板书未明确点名,故列为关联理解。由带KL奖励优化的最优策略关系,可把奖励差换成policy/ref的log概率比:
这里通常是完整回答的logprob和,不要未经说明改为长度平均。经典DPO用已有偏好对直接优化,不需要在训练环内学习独立RM和跑PPO;它仍是偏好优化目标,不是普通“只监督chosen回答”的SFT。DPO原论文。
闭卷终检:不用看本章,画出SFT→RM→PPO的角色关系,再画SFT→verifier→GRPO的关系;用一句话分别解释actor、old、ref、critic、reward、advantage。若还用“旧模型”混指old/ref,继续重学11.4–11.8。