Skip to content

强化学习基础(面向 LLM)

RLHF、DPO、GRPO、RLVR……大模型对齐和推理训练的术语全部来自强化学习。很多候选人会背"PPO 有四个模型",但被追问"策略梯度怎么推""为什么要 clip"就卡壳。本文从 MDP 讲到 GRPO,目标是让你有能力推导而不只是背诵——这是算法岗和应用岗拉开差距的地方。

一、把 LLM 生成对应到强化学习

强化学习的基本框架是马尔可夫决策过程(MDP),五元组 $(S, A, P, R, \gamma)$:

RL 概念一般含义在 LLM 中对应
状态 $s_t$环境当前情况prompt + 已生成的 token 序列
动作 $a_t$智能体的选择生成下一个 token(动作空间 = 词表)
策略 $\pi(a|s)$状态到动作的映射语言模型本身(输出的概率分布)
状态转移 $P$环境如何变化确定性:新状态 = 旧序列拼上新 token
奖励 $r_t$环境反馈通常稀疏:整条回答结束后才有一个分数
回报 $G_t$折扣累积奖励 $\sum \gamma^k r_{t+k}$LLM 场景常取 $\gamma=1$

两个 LLM 特有的性质,决定了后面所有算法的设计:

  1. 奖励稀疏且在末尾:奖励模型只对完整回答打分,中间每个 token 没有即时奖励 → 需要价值函数/优势估计把"功劳"分配到每个 token(信用分配问题)。
  2. 环境转移是确定的:没有随机环境,"探索"完全来自采样的随机性 → 温度、采样策略直接影响 RL 训练效果。

二、两大流派:基于价值 vs 基于策略

基于价值(Value-based)基于策略(Policy-based)
思路学 $Q(s,a)$,选 Q 最大的动作直接学策略 $\pi_\theta(a|s)$
代表Q-learning、DQNREINFORCE、PPO
动作空间适合小而离散任意(大离散/连续都行)
LLM 适用性差(词表 15 万 + 序列组合爆炸)好——LLM 本身就是个策略

LLM 的 RL 训练几乎全用策略梯度流派,因为语言模型天然就是一个参数化策略 $\pi_\theta(\text{token} | \text{context})$。

三、策略梯度:从 REINFORCE 到优势函数

策略梯度定理

目标:最大化期望回报 $J(\theta) = \mathbb{E}{\tau \sim \pi\theta}[R(\tau)]$。核心结论(策略梯度定理):

$$\nabla_\theta J(\theta) = \mathbb{E}{\tau \sim \pi\theta}\Big[\sum_t \nabla_\theta \log \pi_\theta(a_t|s_t) \cdot G_t\Big]$$

直观理解:回报高的轨迹,提高其中每个动作的概率;回报低的轨迹,降低概率。$\log \pi$ 的梯度指明"如何调参数能让这个动作更可能",回报 $G_t$ 决定"调多大、往哪个方向"。

这就是 REINFORCE 算法:采样轨迹 → 算回报 → 加权更新对数概率。

问题:方差太大

REINFORCE 的致命缺陷是梯度方差大:回报的绝对值大小会剧烈波动(同一个好动作,在好轨迹里被强化、坏轨迹里被惩罚)。两个标准解法:

1. 减 baseline:给回报减去一个与动作无关的基准 $b(s)$,不改变梯度期望但显著降方差:

$$\nabla_\theta J = \mathbb{E}\big[\nabla_\theta \log \pi_\theta(a|s) \cdot (G_t - b(s_t))\big]$$

最常用的 baseline 是状态价值 $V(s)$,此时权重变成优势函数

$$A(s_t, a_t) = Q(s_t, a_t) - V(s_t)$$

直观含义:"这个动作比该状态下的平均水平好多少"。比平均好 → 强化;比平均差 → 抑制。绝对回报变相对优势,是理解 PPO/GRPO 的钥匙。

2. Actor-Critic:再训练一个价值网络(Critic)来估计 $V(s)$,与策略网络(Actor)协同更新。实践中用 GAE(广义优势估计)在偏差与方差之间折中地估计优势。

四、PPO:让策略更新不要太猛

动机

策略梯度是**同策略(on-policy)**的:数据必须来自当前策略,更新一步后旧数据就"过期"了,样本效率低。想重复利用一批数据多更新几步,就要用重要性采样修正:

$$r_t(\theta) = \frac{\pi_\theta(a_t|s_t)}{\pi_{\theta_{old}}(a_t|s_t)}$$

但 $r_t$ 偏离 1 太远时,修正会失真、训练会崩。TRPO 用 KL 约束硬性限制更新幅度(求解复杂),PPO 用 clip 把约束做进目标函数,简单有效:

$$L^{CLIP}(\theta) = \mathbb{E}_t\Big[\min\big(r_t(\theta) A_t,\ \text{clip}(r_t(\theta), 1-\epsilon, 1+\epsilon) A_t\big)\Big]$$

clip 的直观解释:优势为正时,概率比超过 $1+\epsilon$ 就不再有收益(防止过度强化);优势为负时,概率比低于 $1-\epsilon$ 就不再有收益(防止过度打压)。取 min 保证目标是悲观(保守)估计。

PPO 在 RLHF 中的完整形态

$$r_{total} = r_{RM}(x, y) - \beta \cdot KL\big(\pi_\theta | \pi_{ref}\big)$$

四个模型的角色(详细流程见 RLHF / DPO 对齐):

模型角色是否更新
Actor(策略模型)被训练的 LLM
Critic(价值模型)估计每个 token 位置的价值,算优势
Reward Model对完整回答打分❄️ 冻结
Reference ModelSFT 模型,算 KL 防偏移❄️ 冻结

KL 惩罚的作用:防止策略为了刷高奖励而偏离初始模型太远(reward hacking:输出乱码、重复套话骗过 RM)。

五、GRPO:用"组内对比"干掉 Critic

PPO 的最大工程负担是 Critic——又一个和 Actor 同规模的模型要训练、要占显存,且 token 级价值很难估准。DeepSeek 提出的 GRPO(组相对策略优化) 的思路:

同一个 prompt 采样一组(G 个)回答,用组内相对好坏直接当优势,不再需要价值网络。

$$A_i = \frac{r_i - \text{mean}(r_1,...,r_G)}{\text{std}(r_1,...,r_G)}$$

PPOGRPO
优势估计Critic + GAE(token 级)组内奖励标准化(回答级)
显存4 个模型去掉 Critic,约省 1/4~1/3
适用场景通用 RLHF奖励可靠的场景(数学/代码可验证任务)尤其好用

GRPO 本质上是"以采样换估计":多采几条回答,用统计量代替学出来的价值函数。这与数学/代码任务的 RLVR(可验证奖励强化学习) 天然契合——答案对错可以程序判定,奖励无噪声,组内对比就足够准(R1 的训练正是 GRPO + 规则奖励,见 DeepSeek 专题)。

六、高频概念辨析

on-policy vs off-policy:数据是否必须来自当前策略。PPO 名义上 on-policy(用 clip 容忍小幅 off-policy);DQN 是 off-policy。LLM 训练里"旧策略采样、新策略多步更新"的程度越深,越需要重要性修正。

为什么 DPO 不算强化学习? DPO 没有"采样—奖励—更新"的在线循环,它把最优策略与奖励函数的解析关系代入偏好模型,直接在离线偏好数据上做监督学习。优点是简单稳定,缺点是受限于离线数据的分布(无法探索新回答)。

探索与利用(exploration vs exploitation):LLM RL 中探索靠采样温度与多样性。GRPO 一组内如果所有回答都错(或都对),组内优势全为 0,没有学习信号——所以训练时要控制题目难度与采样多样性,这是实践中的真实痛点。

奖励黑客(reward hacking):策略找到奖励函数的漏洞而非真正变好。例:RM 偏好长回答 → 模型疯狂变长;格式奖励设计不当 → 只学格式不学推理。对策:KL 约束、奖励模型迭代、过程奖励与结果奖励结合。

高频追问

Q:策略梯度里为什么是 $\nabla \log \pi$ 而不是 $\nabla \pi$? 来自对数导数技巧:$\nabla_\theta \mathbb{E}{\pi}[R] = \mathbb{E}{\pi}[R \nabla_\theta \log \pi]$。期望对 $\theta$ 求导时,分布本身依赖 $\theta$,用 $\nabla p = p \nabla \log p$ 变换后才能写成"在当前策略下采样估计"的形式——这是整个策略梯度可计算的根基。

Q:减 baseline 为什么不改变梯度的期望? $\mathbb{E}{a \sim \pi}[\nabla \log \pi(a|s) \cdot b(s)] = b(s) \nabla \mathbb{E}{a \sim \pi}[1] = b(s) \cdot \nabla 1 = 0$。只要 baseline 不依赖动作,这一项期望恒为零,只影响方差不影响方向。

Q:PPO 的 clip 和 KL 惩罚是不是重复了? 作用对象不同:clip 限制的是相对于上一轮策略 $\pi_{old}$ 的单步更新幅度(优化稳定性);KL 惩罚约束的是相对于参考模型 $\pi_{ref}$(SFT 模型) 的累计偏移(防止 reward hacking、保持语言质量)。一个管"步子别太大",一个管"别走太远"。

Q:GRPO 组内全对或全错怎么办? 优势全为 0,该 prompt 本轮无梯度贡献。实践对策:动态筛选难度合适的题目(通过率在中间区间)、增大组大小 G、提高采样温度增加多样性。这也是为什么 GRPO 训练对数据难度分布很敏感。

Q:为什么 LLM 的 RL 一般把 $\gamma$ 设为 1? 回答长度有限(几百到几千 token),不存在无限期回报发散问题;且奖励在末尾,折扣会让早期 token 的信用被人为衰减,与"开头的思路决定整条推理质量"的直觉矛盾。

Q:Critic 在 PPO 里到底估计什么?为什么说它难训? 估计每个 token 位置的状态价值 $V(s_t)$ ——"从这里继续生成,期望最终能拿多少奖励"。难点:奖励只有末尾一个标量,要回传到几百个位置;回答质量的评估本身高度非线性。Critic 估不准 → 优势失真 → 训练不稳定,这正是 GRPO 用统计替代它的动机。

基于 MIT 许可发布