跳转到内容

输入关键词开始搜索

    Policy Gradient(策略梯度)

    概念更新 2026-07-01置信度 high#概念#进阶#强化学习#后训练

    根据 reward / advantage,直接调整模型生成某个 token / action 的概率——如果好就提高概率,如果差就降低概率。

    Policy Gradient 是一种直接优化策略(policy)的强化学习方法。它不要求有标准答案,而是根据奖励信号来调整模型的行为概率。

    在强化学习中,policy = 策略,记作:

    πθ(as)\pi_\theta(a \mid s)

    即在状态 ss 下,模型选择动作 aa 的概率。

    在 LLM 中:

    st=(x,y<t)—— prompt + 当前已生成的前缀s_t = (x, y_{<t}) \quad \text{—— prompt + 当前已生成的前缀}

    at=yt—— 下一个 tokena_t = y_t \quad \text{—— 下一个 token}

    πθ(ytx,y<t)—— 当前模型的 next-token 分布\pi_\theta(y_t \mid x, y_{<t}) \quad \text{—— 当前模型的 next-token 分布}

    所以对 LLM 来说,policy 就是:当前模型在这个前缀下生成下一个 token 的概率分布

    训练数据来自当前正在训练的这个 policy 自己

    模型先自己生成轨迹,然后用这些自己生成的轨迹来更新自己:

    当前模型 π_θ 生成答案
    → reward model / verifier 给反馈
    → 用这些反馈更新 π_θ

    GRPO、PPO、RLVR 通常是 on-policy。OPD 也是 on-policy,因为训练状态来自学生当前模型自己生成的轨迹。

    训练数据不是来自当前正在训练的 policy,而是来自别的 policy、旧 policy、教师模型、人类数据、静态数据集等。

    教师模型生成答案 / 人类写好答案
    → 学生模型学习

    普通 SFT 和传统 KD 通常是 off-policy。

    为什么区分 on/off-policy 很重要?

    Section titled “为什么区分 on/off-policy 很重要?”

    Off-policy 最大的问题是 distribution mismatch(分布不匹配)

    • 训练时,学生看到的是教师的高质量轨迹:A → B → C → 正确答案
    • 推理时,学生自己可能生成:A → D → E → 错误答案
    • 学生训练时没见过 A → D → E 这种自己会走到的状态,不知道怎么纠正

    这就是 exposure bias(曝光偏差)。On-policy 训练解决了这个问题:训练数据永远来自学生自己当前会访问的状态分布

    On-Policy Off-Policy
    轨迹来源 当前模型自己生成 教师/人类/旧模型/静态数据
    优点 无分布偏移,训练-推理一致 数据复用,样本效率高
    缺点 需要不断采样(计算成本高) 分布不匹配,学生犯错后无法纠正
    典型方法 PPO, GRPO, OPD, RLVR SFT, 普通 KD, DPO

    J(θ)=Eyπθ[R(y)]J(\theta) = \mathbb{E}_{y \sim \pi_\theta}[R(y)]

    即:从当前模型采样回答,希望这些回答的平均 reward 越高越好。

    模型输出是离散 token,不能像普通回归那样对采样结果直接求导。Policy gradient theorem 给出:

    θJ(θ)=E[θlogπθ(y)R(y)]\nabla_\theta J(\theta) = \mathbb{E}\left[\nabla_\theta \log \pi_\theta(y) \cdot R(y)\right]

    对 LLM,回答由多个 token 组成 y=(y1,y2,...,yT)y = (y_1, y_2, ..., y_T)

    logπθ(yx)=t=1Tlogπθ(ytx,y<t)\log \pi_\theta(y \mid x) = \sum_{t=1}^{T} \log \pi_\theta(y_t \mid x, y_{<t})

    所以:

    θJ(θ)=E[tθlogπθ(ytst)At]\nabla_\theta J(\theta) = \mathbb{E}\left[\sum_t \nabla_\theta \log \pi_\theta(y_t \mid s_t) \cdot A_t\right]

    实际训练中用 advantage 替代原始 reward:

    A=RbA = R - b

    其中 bb 是 baseline(通常为一批样本的平均 reward)。

    为什么需要 advantage? Reward 的绝对值不一定有意义,相对好坏更重要。

    例如同一个 prompt,模型采了 4 个答案:

    答案 A reward = 0.9
    答案 B reward = 0.8
    答案 C reward = 0.7
    答案 D reward = 0.2

    如果用原始 reward,它们都是正的,模型会提高所有答案的概率。但我们希望 A、B 被提高,D 被降低。

    用平均 reward (Rˉ=0.65\bar{R} = 0.65) 作为 baseline:

    A: advantage = +0.25 → 提高
    B: advantage = +0.15 → 提高
    C: advantage = +0.05 → 微调
    D: advantage = -0.45 → 显著降低

    训练框架最小化 loss,所以将最大化目标写为负 loss:

    LPG=E[tlogπθ(ytst)At]L_\text{PG} = -\mathbb{E}\left[\sum_t \log \pi_\theta(y_t \mid s_t) \cdot A_t\right]

    这是最基本的 policy-gradient loss。 它的含义非常直观:

    • At>0A_t > 0(token/轨迹比平均好) → 提高该 token 的概率
    • At<0A_t < 0(token/轨迹比平均差) → 降低该 token 的概率
    • At=0A_t = 0(与平均持平) → 基本不更新

    假设模型面对 prompt 2 + 3 = ? 生成 5

    • 如果 reward = +1,loss = logπθ("5""2+3=?")-\log \pi_\theta(\text{"5"} \mid \text{"2+3=?"}),梯度下降会提高生成 5 的概率
    • 如果 reward = -1,loss = +logπθ("5""2+3=?")+\log \pi_\theta(\text{"5"} \mid \text{"2+3=?"}),梯度下降会降低生成 5 的概率
    1. RL 后训练的基础:PPO、GRPO、REINFORCE++ 等所有现代 LLM RL 算法都基于 policy gradient
    2. 不依赖标准答案:只需 reward 信号,不需要 ground truth——适用于创意写作、对话等无唯一正确答案的任务
    3. 探索能力:通过采样探索策略空间,可能发现超越教师的更好策略(这是蒸馏做不到的)
    4. 与 OPD 的桥梁:OPD 的 reverse KL loss 本质上可以看作以教师 logprob 为 advantage 的 policy gradient
    方法 目标函数 信号类型 需要标准答案
    SFT(交叉熵) logπθ(yx)-\log \pi_\theta(y^* \mid x) Hard label
    KD(Forward KL) KL(pteacherpstudent)\text{KL}(p_\text{teacher} \lvert\rvert p_\text{student}) Soft distribution
    DPO Pairwise preference loss 成对偏好
    Policy Gradient tlogπθ(ytst)At-\sum_t \log \pi_\theta(y_t \mid s_t) \cdot A_t Scalar advantage
    OPD(Reverse KL) KL(πθπteacher)\text{KL}(\pi_\theta \lvert\rvert \pi_\text{teacher}) Teacher token logprob
    • “Policy gradient 就是 REINFORCE” → REINFORCE 是最基础的 policy gradient 算法(用 Monte Carlo 采样估计梯度),但现代方法(PPO、GRPO)在 REINFORCE 基础上加了 importance sampling、clipping、baseline 等大量改进。
    • “Policy gradient 需要 reward model” → 不一定。Verifiable reward(如数学题答案对错、代码是否通过测试)可以直接作为 reward,无需训练 reward model。
    • “On-policy 一定比 off-policy 好” → On-policy 避免了分布偏移,但每次更新后需要重新采样,计算成本高。Off-policy 可以复用数据,样本效率更高。实际训练通常结合两者。
    • “Advantage 就是 reward 减 baseline” → 这是最简单形式。更复杂的 advantage estimator(如 GAE,Generalized Advantage Estimation)会考虑时序差分和未来奖励的衰减。