跳转到内容

输入关键词开始搜索

    PPO(近端策略优化)

    概念更新 2026-08-02置信度 high#概念#基础#长青#强化学习#对齐

    OpenAI 提出的强化学习算法,通过裁剪目标函数约束策略更新幅度,避免策略崩溃;是 RLHF 第三步(PPO 优化阶段)的核心算法。

    PPO 是一种策略梯度强化学习算法。其关键创新是裁剪替代目标函数(clipped surrogate objective):

    LCLIP(θ)=E^t[min(rt(θ)A^t, clip(rt(θ),1ϵ,1+ϵ)A^t)]\mathcal{L}^{\text{CLIP}}(\theta) = \hat{\mathbb{E}}_t \left[ \min\left( r_t(\theta) \hat{A}_t, \ \text{clip}(r_t(\theta), 1-\epsilon, 1+\epsilon) \hat{A}_t \right) \right]

    其中 rt(θ)r_t(\theta) 是新旧策略的概率比,A^t\hat{A}_t 是优势函数,ϵ\epsilon 是裁剪范围(通常 0.2)。

    直觉:当 rtr_t 偏离 1 太远时,裁剪阻止了过大的策略更新。

    PPO 是 RLHF 的训练引擎。在 RLHF 三步流程中:

    1. SFT → 教模型基础指令格式
    2. RM → 训练奖励模型模拟人类偏好
    3. PPO → 用 RM 的奖励信号优化语言模型

    PPO 解决了两个核心挑战:

    • 策略稳定性:裁剪机制防止单步策略更新过大导致语言能力崩溃
    • KL 约束:RLHF 中额外加入 KL 散度惩罚项,防止策略偏离 SFT 基线太远

    InstructGPT 使用了 PPO-ptx 变体,混合两个目标:

    L=LPPO+γLpretrain\mathcal{L} = \mathcal{L}_{\text{PPO}} + \gamma \cdot \mathcal{L}_{\text{pretrain}}

    • LPPO\mathcal{L}_{\text{PPO}}:标准 PPO 目标 + KL 惩罚项
    • Lpretrain\mathcal{L}_{\text{pretrain}}:预训练语言建模损失(混入以缓解对齐税)
    • γ\gamma:预训练数据混合系数,InstructGPT 使用 γ=27.8\gamma = 27.8
    概念 区别
    RLHF PPO 是 RLHF 使用的优化算法,RLHF 是完整的训练范式
    DPO DPO 绕过显式奖励模型和 PPO,直接用偏好数据训练;PPO 需要 RM 作为中间奖励函数
    TRPO PPO 的前身,使用 KL 约束而非裁剪,计算更复杂
    REINFORCE 最简单的策略梯度方法,没有 PPO 的裁剪稳定机制
    • ❌ PPO = RLHF → PPO 是通用 RL 算法,RLHF 是其在大模型对齐中的特定应用
    • ❌ PPO 不需要调参 → 裁剪范围 ϵ\epsilon、KL 系数 β\beta、预训练混合 γ\gamma 都需仔细调整

    在 TRL 语言模型场景中,PPO 的工程链路可概括为:

    1. policy 根据 query 生成 response;
    2. reward model 给外部 score,reference model 提供 KL shaping;
    3. value head 估计每个 token 的 value;
    4. 由 reward/value 计算 return 与 advantage(常配合 GAE);
    5. 将 rollout 切成 minibatch,多轮更新 policy 与 value,并用 ratio clipping 限制单次变化。

    第 16 讲是最小接口演示,第 27 讲走读旧版 PPOTrainer.step 与 OpenRLHF 组件关系。API 与 batch 字段高度版本化,概念页保留流程,不把某个 TRL 版本的函数签名当成永久规范。

    课程来源:资料摘要:personal chatgpt-16资料摘要:personal chatgpt-27