← 返回题目列表

PPO 在 RLHF 里是怎么工作的?为什么需要参考模型和 KL 惩罚?

高频 困难 第 22 / 25 题 更新于 2026/09/25
PPORLHFKL惩罚参考模型优势函数
学习 AI 实战项目

简化版

PPO(近端策略优化)是经典 RLHF 第三阶段常用的强化学习算法。它把「生成回答」看成决策过程:策略模型产出回答,奖励模型给序列级分数,PPO 更新策略以提高期望回报。参考模型与 KL 惩罚约束策略不要为刷分而偏离 SFT 分布过远;价值函数估计优势,裁剪目标限制单次更新。工程上可把它理解为策略、参考、奖励、价值四个逻辑组件,但实现可能共享骨干、分片或卸载,并非总是四份完整模型同时常驻一张显卡。

详细版

把文本生成建模成 RL

  • 状态:当前已生成的 token 序列(提示 + 已生成部分)。
  • 动作:生成下一个 token。
  • 策略 π_θ:模型本身,给出下一个 token 的分布。
  • 回报:整段回答生成完后,由奖励模型给一个分数(序列级奖励)。

PPO 的四个模型

模型作用是否训练
策略(Actor)生成回答,被优化训练
参考(Reference)冻结 SFT,算 KL 约束冻结
奖励(Reward Model)给回答打分冻结
价值(Critic/Value)估计状态价值,算优势训练

奖励的构造:RM 分数 − KL 惩罚

r_total(x, y) = r_RM(x, y) − β · KL( π_θ(·|x) ‖ π_ref(·|x) )
  • r_RM:奖励模型给的分(要最大化)。
  • β·KL:策略偏离参考模型的惩罚(要最小化偏离)。

PPO 的稳定性机制

  • 优势函数:用价值模型估计 baseline,算「这个动作比平均好多少」,降低方差。
  • 裁剪目标(clipped objective):限制新旧策略的概率比在 [1−ε, 1+ε],防止单步更新过猛导致策略崩溃。

完整版教学

一、为什么对齐这一步要用强化学习

到了第三阶段,我们有了一个能打分的奖励模型,目标是「让模型产出 RM 分数更高的回答」。为什么不直接监督学习?因为奖励是对”整段生成结果”的评价,而不是对每个 token 的标准答案——我们不知道「第 5 个 token 该是什么」,只知道「整段回答好不好」。这种「只有最终结果有反馈、没有逐步标准答案」的问题,正是强化学习的用武之地:通过试错 + 回报信号来优化策略。

PPO 的裁剪机制比朴素策略梯度更便于控制更新幅度,因此成为经典 RLHF 的常见选择;但它仍然超参敏感、系统复杂,也不是所有偏好优化任务的默认最优解。

二、把生成过程翻译成强化学习语言

理解 PPO 前,先把文本生成映射到 RL 框架:

  • 策略(policy) 就是语言模型 π_θ,它在每个位置输出下一个 token 的概率分布。
  • 生成一整段回答 = 策略做了一连串「选下一个 token」的动作。
  • 回答生成完毕,奖励模型给整段一个分数,作为这次「轨迹」的回报。
  • PPO 的任务:调整 π_θ 的参数,让它更倾向于生成「能拿高回报」的回答。

经典奖励模型通常给出序列级分数,训练时还会加入按 token 估计的 KL 惩罚,并把信号分配到轨迹。价值函数用于构造低方差优势估计;“奖励在结尾”并不意味着价值模型能凭空知道每个 token 的正确贡献,信用分配仍是难点。

三、KL 惩罚与参考模型:本阶段的灵魂

如果 PPO 只盯着「最大化 RM 分数」,会发生灾难:策略会不择手段地钻 RM 的空子——找到一些 RM 误判为高分、但实际语无伦次或重复堆砌的输出(reward hacking),同时偏离正常语言分布,丧失流畅性和多样性(模式坍缩)。

解决办法是引入**参考模型 π_ref(冻结的 SFT 模型)**和 KL 惩罚。在奖励里减去策略与参考的 KL 散度:

r_total = r_RM − β · KL( π_θ ‖ π_ref )
  • KL 衡量「策略偏离 SFT 有多远」,偏得越远惩罚越大。
  • 它像一根橡皮筋,一头拴在 SFT 模型上:允许策略为讨好人类偏好而调整,但不许它跑到「面目全非、不再像正常语言」的地方。
  • β 控制橡皮筋松紧:β 太大,策略被拽得太死、学不到偏好改进;β 太小,约束不住、容易 reward hacking 和坍缩。

记忆钩子:RM 分数是”往前拉”的力,KL 惩罚是”往回拽”到 SFT 的力,PPO 在两力平衡中找到既高质量又不跑偏的策略。参考模型就是那个”回拽的锚点”。

四、价值模型与优势:让更新更稳

PPO 属于「Actor-Critic」方法,除了策略(Actor),还有一个价值模型(Critic):

  • 它估计「从当前状态出发,预期能拿多少回报」(状态价值)。
  • 用它算优势函数(advantage):优势 = 实际回报 − 价值基线,表示「这个动作比平均预期好多少」。
  • 用优势代替原始回报来更新策略,能大幅降低梯度方差,训练更稳。

所以 PPO 式 RLHF 包含四个逻辑组件(策略、参考、奖励、价值),其中策略和价值更新,参考和奖励通常冻结。实现可让价值头共享策略骨干,也可通过分片、卸载或分阶段推理降低驻留开销;真正结论是组件和数据流复杂,而不是机械认定“显存里永远有四个同尺寸模型”。

五、裁剪目标:PPO 稳定的关键设计

PPO 的名字「近端(Proximal)」来自它的核心技巧——限制每步策略更新的幅度,别一步迈太大把策略搞崩。它用新旧策略的概率比 ratio = π_new / π_old,配合裁剪:

L = min( ratio · A ,  clip(ratio, 1−ε, 1+ε) · A )
  • 当优势 A>0(好动作)时,鼓励提高其概率,但概率比超过 1+ε 就截断,不许一次涨太多。
  • 当 A<0(坏动作)时,压低其概率,但也限制在 1−ε,不许一次降太狠。

这个「裁剪」让 PPO 在「利用奖励改进」和「不偏离旧策略太远」之间取得平衡,避免了朴素策略梯度那种「一步更新过猛导致训练崩溃」的问题,是 PPO 又稳又好用的原因。

六、把一次 PPO 更新拆成四个分数

假设奖励模型给回答 2.4 分,策略相对参考模型的序列 KL 估计为 0.8,KL 系数 β=0.1,则用于优化的整形奖励约为 2.4-0.1×0.8=2.32。价值模型若预测回报 1.9,未做 GAE 细化时优势直觉上约为 0.42;正优势会提高这条轨迹的概率,但 PPO clip 会限制单次比例变化。

信号本例数值职责
RM reward2.4指向偏好目标
KL penalty0.08约束偏离参考模型
shaped reward2.32策略实际优化信号
value baseline1.9降低优势估计方差

这四个量必须分别监控。若 RM reward 上升但 KL 暴涨、人工质量下降,通常是策略在利用奖励模型;若 KL 几乎为零且奖励无变化,则约束可能过强或学习率过小。

七、常见误区与追问

  • 误区:PPO 阶段只有策略一个组件。 还要参考、奖励与价值信号;它们是四个逻辑角色,物理实现可以共享或分离。
  • 误区:KL 惩罚是为了正则化过拟合。 主要是防止 reward hacking 和偏离语言分布,把策略拴在 SFT 附近。
  • 追问:为什么会考虑 PPO 而非普通 SFT? 只有整段偏好/奖励且希望对当前策略在线采样时,策略梯度能直接优化期望奖励;若已有固定偏好对,也可考虑 DPO 等离线方法。
  • 追问:参考模型是什么,为什么要它? 冻结的 SFT 模型,作为 KL 约束的锚点,防策略跑偏。
  • 追问:β 太大/太小分别怎样? 太大约束过死学不到改进;太小约束不住、易 reward hacking 和坍缩。
  • 追问:价值模型干什么? 估计价值基线算优势,降低策略梯度方差,让训练更稳。
  • 追问:PPO 的 clip 有什么用? 限制每步策略更新幅度(近端),防止一步更新过猛导致崩溃。
  • 追问:PPO 阶段为什么资源吃紧? rollout、反向传播及参考/奖励/价值计算共同增加显存和吞吐压力;共享、分片与卸载只能缓解,不能消除系统复杂度。

八、加强记忆

PPO in RLHF 记「四个逻辑角色、两个方向、三项控制」:策略生成并更新、参考模型提供 KL 锚点、奖励模型给序列分、价值函数估计优势;奖励推动高偏好输出,KL 抑制偏离。优势估计降方差、clip 限制新旧策略概率比、参考约束控制漂移。四个角色不等于四份完整模型必须同时驻留;PPO 适合对当前策略 rollout 并优化期望奖励,但训练是否可靠仍取决于奖励质量、KL、采样和回归评测。