返回博客

/ CS336

[CS336-17] Policy Gradient 与 GRPO 细节

整理 CS336 第十七讲:policy gradient、baseline、advantage、GRPO group normalization、KL penalty 和 reward 处理细节。

3 minCS336 · Policy Gradient · GRPO

这篇是 Stanford CS336 Spring 2025 第 17 讲 Course Materials 的学习笔记。它继续深入 policy gradient 和 GRPO 的机制。

1. 把语言模型看成 RL policy#

在语言模型 RL 里,state 可以理解成 prompt 加上已经生成的 response prefix,action 是下一个 token,policy 就是语言模型给出的 next-token distribution。

一次 rollout 是从 prompt 开始生成完整回答,最后得到 outcome reward。对于数学或代码任务,reward 可以是答案是否正确、测试是否通过。

这和机器人 RL 不同:状态转移基本由字符串拼接决定,reward 通常在最后才出现,而且可以对同一 prompt 反复采样多个回答。

2. Policy gradient 的基本推导#

目标是最大化期望 reward:

E[R]

通过 log-derivative trick,可以得到 policy gradient 形式:

gradient ≈ grad log pi(a | s) * R(s, a)

直觉是:高 reward 的回答应该提高概率,低 reward 的回答应该降低或不提高概率。

如果 reward 是 0/1,naive policy gradient 只会从正确回答中学习。这在 sparse reward 场景下方差很高,训练不稳定。

3. Baseline 和 advantage#

为了降低方差,可以从 reward 中减去 baseline:

grad log pi(a | s) * (R(s, a) - b(s))

只要 baseline 不依赖 action,就不会改变期望梯度,但可以显著降低噪声。

最自然的 baseline 是同一 state 下的平均 reward。于是得到 advantage:

A(s, a) = Q(s, a) - V(s)

它表示某个 action 比当前 state 下的平均水平好多少。

4. GRPO 的 group baseline#

GRPO 利用了语言模型任务中的 group structure:对同一个 prompt 采样多条回答。

对每个 prompt 的一组 responses,计算 reward 后做中心化或标准化。高于组内平均的回答得到正 advantage,低于组内平均的回答得到负 advantage。

这避免了单独训练 value model,也让 baseline 更贴近当前 prompt。

5. Reward normalization 的影响#

Lecture 17 用一个排序任务展示了不同 reward 处理方式的影响。

直接使用 raw reward 时,模型可能学习慢、容易卡住。使用 centered reward 后,低于平均的样本会产生负向更新,同一组都一样好或一样差时不更新。再除以标准差可以进一步归一化不同 prompt 的难度。

但标准差归一化也可能带来长度偏差或过度放大容易/困难样本,因此后续 GRPO 变体会调整这些细节。

6. KL penalty 和 reference model#

RL 更新可能让模型偏离原始能力,尤其在窄 reward 上过拟合。显式 KL penalty 可以约束新 policy 不要离 reference policy 太远。

这在想给模型加入新能力、又不希望它忘掉原有语言能力时很重要。

7. takeaway#

第 17 讲把 GRPO 从“一个热门算法名”拆成几个基本部件:

  • policy gradient 用 log probability 加权 reward 更新模型;
  • baseline 不改变期望梯度,但能降低方差;
  • advantage 表示相对当前 prompt 的好坏;
  • GRPO 用同 prompt 多回答的组内统计替代 value model;
  • reward 归一化和 KL penalty 是稳定训练的关键细节。

因此 GRPO 的核心并不神秘:它是适配语言模型 rollout 结构的简化 policy gradient。

参考#