先记住一句话

LLM post-training 的 RL 循环是“当前策略采样回答 → reward model 或 verifier 打分 → 用带 KL 约束的 policy update 提高高分回答概率”。

prompt batchpolicy rolloutRM/verifier rewardcredit assignmentKL-regularized update独立 eval
Promptx
Autoregressive policyy₁…y_T
Judgereward R(x,y)
Updateadvantage − βKL
一个 completion 是一条 token trajectory;sequence reward 必须经 return/advantage 分配到各 token log-prob。

1. 把自回归生成写成 MDP

RL 概念LLM 中的对应物
初始状态prompt 与 system/context
状态 s_tprompt + 已生成 token 前缀
动作 a_t下一个 token
策略 πθsoftmax 后的语言模型分布
episode直到 EOS/长度上限的一条 response
reward偏好分、规则验证分、任务成功或混合分数

环境转移很简单:把采样 token 拼到前缀。但每步都有几万维 action,且最终正确性常到回答结束才知道,因此 credit assignment 依旧困难。

2. 一条典型训练流水线

pretraining → supervised fine-tuning (SFT)
                     ↓ initial policy / reference policy
prompts → online rollout → reward / verifier → advantage estimate
              ↑                              ↓
              └──── updated policy ← PPO / GRPO + KL

SFT 先给出合理语言与格式;RL 再重分配 probability mass。这里的 online 指回答由当前或近期策略生成,不一定意味着机器人那样与物理世界实时交互。

3. RLHF 与 RLVR

RLHFRLVR
监督信号人类偏好比较,常先训练 reward model可自动验证的结果,如答案、单元测试、proof checker
优点能表达 helpfulness、style 等难写规则的目标信号便宜、稳定、可规模化,通常更客观
风险标注偏差、reward model 外推和被 hack只优化可测部分;格式漏洞、测试不完整、稀疏 reward

实际系统常混合多种 reward:正确性、格式、安全、长度与风格。混合权重本身就是产品目标,不能把 reward 当作自然界给出的真理。

4. 为什么要 reference policy 与 KL

若只最大化 learned reward,policy 会快速离开 SFT 分布,发现 reward model 的漏洞。常见目标是在 reward 中逐 token 减去 reference KL 的样本估计:

r_total = r_task − β Σ_t [log πθ(a_t|s_t) − log πref(a_t|s_t)]

β 大则更保守,小则允许更强改进。样本上的 log-ratio 可以为负,它不是单条 trajectory 的非负 KL;平均分布意义的 KL 才非负。reference 通常固定,而 rollout policy、训练 policy 和 reference 不是同一个角色。

5. PPO 在 LLM 上为什么很重

  • actor:生成 token 并接受梯度;
  • critic/value model:估计每个前缀的 value;
  • reference:提供 KL 基准;
  • reward model:给完整回答打分。

这些模型加上 optimizer state、KV cache 和多条 rollout,会同时消耗显存。PPO 的 critic 能提供细粒度 baseline,但 value training 也带来额外参数、loss balancing 和 stale rollout 问题。GRPO 的吸引力正是省去单独 critic。

6. Sequence reward 怎样回到 token

最简单做法是把同一个 outcome advantage 乘到该回答所有 token 的 log-prob gradient。它告诉模型“整条回答更好/更差”,却不知道哪一步推理负责。若有过程监督,可对中间步骤给 reward;否则只能靠大量对比样本和模型自身表示完成粗粒度 credit assignment。

7. Rollout 与 update 的工程边界

  1. 按 prompt sampling 分布取 batch,保存 old-policy token log-prob;
  2. 明确 temperature、top-p、最大长度和 stop 条件;
  3. 算 reward、长度、格式、KL,并正确 mask prompt/padding;
  4. 只用有限 epochs 更新,避免数据过旧;
  5. 用独立、不可见的 evaluation set 检查 reward hacking。

若生成时的概率、训练重算的 old log-prob 和 serving engine 精度不一致,importance ratio 会在更新前就偏离 1;这往往是系统 bug,不是算法取得进展。

8. 该监控什么

指标能发现什么
raw task reward / pass rate任务是否真变好,避免只看混合 reward
KL、entropy、clip fraction策略漂移、探索坍缩与 update 是否过猛
response length / EOS rate长度投机、截断和不结束
reward 各分量与相关性某个 shaping 项是否支配训练
held-out judge / executable evalreward model 被 hack 后的真实性能

9. 四个 LLM RL 手算

例 1:completion log-prob

三个生成 token 的 policy probabilities=[0.5,0.4,0.2],sequence probability=0.5×0.4×0.2=0.04,log-prob=log0.5+log0.4+log0.2≈−3.219

例 2:token-level KL penalty

三个 token 的 sampled log-ratios logπ−logπ_ref 为 [0.1,0.2,−0.05],和=0.25。β=0.04 时 trajectory penalty=0.04×0.25=0.01(实际 estimator/convention须与实现一致)。

例 3:reward 减 baseline

Verifier reward=1,prompt-conditioned baseline=0.6,则 advantage=0.4;另一回答 reward=0,advantage=−0.6。前者 token log-probs 被提高,后者被降低。

例 4:rollout token 预算

256 prompts,每 prompt 采 8 个 completions,平均 512 output tokens,总生成量=256×8×512=1,048,576 tokens。Critic-free 也不能省掉这部分 decode 成本。

常见误解:

“有可验证 reward”不代表目标完整。例如代码只通过公开测试,可能过拟合测试;数学 final answer 正确,也不代表 reasoning 忠实。RLVR 提供的是可靠的局部目标,不是自动解决 alignment。

自测

1. 为什么语言生成仍是序列决策?

每个 token 会改变之后可见的前缀和可选输出,最终 reward 依赖整条 action 序列。

2. reference model 的职责是什么?

给策略漂移提供固定基准,使 RL 改进不至于轻易破坏 SFT 得到的语言与行为。

3. reward 上升而真实能力不升,先查什么?

查 reward 分解、长度/格式投机、训练与评测泄漏,并用独立 verifier 或人工样本复核。

一手资料

InstructGPT 给出 SFT、偏好 reward model 与 PPO 的经典 RLHF pipeline;PPO 是 clipped policy update 的原始论文。