第16回 近端策略优化——PPO:步子别迈大
欲登高处先收步,步稳方能路更长。
贪快一脚容易滑,慢改方得久安康。
上回 REINFORCE 教我们“直接改出招概率”,又用基线压住了抖。
可一到大场面,单靠“压惊符”仍不够——
你一旦改得太猛,策略就会突然变样:
昨日还讲人话,今日就学会钻奖励漏洞;
昨日还谦恭有礼,今日就满嘴胡诌讨喜。
所以江湖里要再立一条规矩:
每次只准往前挪一小步。
这条规矩,就是 PPO(Proximal Policy Optimization)的魂。1
一、PPO 想解决什么:策略更新“别发疯”
策略梯度本质上是在做“改概率分布”。
概率分布一改,就会牵一发动全身:
你把某个动作概率提高一点,别的动作概率就得相对降低;
你把某些状态下的出招改了,后续会走到完全不同的轨迹。
于是就出现一个非常现实的问题:
- 改小了:学得慢
- 改大了:学得快,但容易翻车
TRPO 先提出用 KL 距离(策略分布差异)做“信任域约束”,理论更硬,但实现更重。2
PPO 的野心是:
要到 TRPO 的稳,又要实现像普通梯度下降一样简单。
二、PPO 的关键道具:比值 与“夹子”
PPO 训练时通常会保留两份策略:
- 旧策略 :采样数据时用的那份
- 新策略 :你正在更新的那份
对同一个状态‑动作 ,看新旧概率的比值:
这比值像什么?像“我对这招的态度变了多少”:
- :我更倾向于出这一招了
- :我更不倾向于出这一招了
然后再配上上回的“超额收益”语言:优势(advantage)
你可以把 理解为:
这一步的选择,比平均水平强多少。
于是朴素想法是:
让 越大越好——
优势为正就增加概率,优势为负就减少概率。
可问题恰恰在“越大越好”:
你为了让目标大,可能把 推得太夸张,策略瞬间变形。
PPO 的解决办法非常像给马套缰绳:
给 加一个夹子(clip)。
典型形式是:
- 设 是允许改动的幅度(常见 0.1~0.3 一类数量级)
- 把 限制在 这个区间里
直觉就是:
不许你一次把“喜欢/讨厌”改得过头。
这便是 PPO 的“近端”(proximal):离旧策略别太远。
三、为什么它更稳:奖励再诱人,也别一口吃成胖子
把“夹子”放进目标里,会出现一个很漂亮的效果:
- 当你改得不多:目标和普通策略梯度差不多,学得快
- 当你改得太猛:夹子生效,收益不再增长,你就没有动力继续猛改
这相当于给训练加了“自动刹车”。
从高二数学的味道来说,你可以把它当作一种“分段函数”式的约束:
小范围内近似线性推进,大范围立刻饱和,避免发散。
四、PPO 的基本流程(不写代码也能照做)
把 PPO 当成一套“循环章法”,你照着做就能实现:
- 用当前策略(也叫旧策略)在环境里采样一批轨迹
- 用价值函数估计每一步的优势 (上回说过基线/优势的意义)
- 固定旧策略不动,在这批数据上做多轮小步更新:
- 目标里用比值
- 用 clip 限制 的改动幅度
- 更新价值函数(让它更会估“平均水平”)
- 把新策略当作下一轮的旧策略,继续循环
这里最容易被初学者忽略的一点是:
PPO 看似“多轮更新很省样本”,但本质仍偏 on‑policy。
数据太旧就不再可靠,所以每轮都要重新采样。
五、把 PPO 贴回 RLHF:为何它常被用来“训语言模型的脾气”
当策略是语言模型时:
- 状态:提示词 + 已生成的上下文
- 动作:下一 token(或下一段文本)的选择
- 奖励:来自奖励模型/偏好模型的分数,加上一些约束项(例如与参考模型差异的惩罚)
PPO 在 RLHF 里被广泛使用,一个重要原因就是它的“自动刹车”很符合工程需求:
你不希望模型为了讨好奖励模型而突然变形得不像话。
但 RLHF 的 PPO 真正难点不在论文公式,而在实现细节:
采样方式、长度惩罚、KL 控制、优势估计、归一化、批次组织……
这些“小事”会决定训练究竟是稳步变好,还是三天两头爆炸。
2024 有工作专门把 RLHF + PPO 的一堆关键细节摊开讲,并做了可复现实验复刻,强调这些细节对稳定性的影响。3
也有 2024 的研究讨论把 RLHF 做得更并行、更高吞吐,反映了一个趋势:
模型越大,PPO/RLHF 越需要工程化的训练范式。4
六、小结:PPO 的一句话,就是“改策略要有刹车”
本回收束成四句:
- 策略更新会牵一发动全身,步子迈大就容易翻车
- PPO 用新旧概率比值 衡量“改了多少”
- PPO 用 clip 给 上缰绳:改得过头就不给你更多收益
- 在 RLHF 里,PPO 常用来“训脾气”,关键挑战在稳定的实现细节与约束
下一回(第17回)我们要把 RLHF 的全流水线摆上桌:
先 SFT 打底,再奖励建模,最后用 PPO 或其替代法把偏好写进模型脾气里。
欲知后事如何,且听下回分解。
幻觉核查
- PPO 经典来源核对:arXiv:1707.06347 可核验标题、作者与摘要。1
- TRPO 经典来源核对:arXiv:1502.05477 可核验标题、作者与“信任域/KL 约束”的核心思想。2
- RLHF + PPO 细节复现核对:arXiv:2403.17031 可核验“实现细节枚举/复现实验”的主张。3
- 异步 RLHF 方向核对:arXiv:2410.18252 可核验论文标题与“更高效 off‑policy/异步”表述。4
逻辑审计
- 与第15回承接:第15回用基线把 REINFORCE 稳住,本回用“夹子/刹车”把“策略更新幅度”稳住。
- 为第17回铺垫:本回解释了 PPO 在 RLHF 中的角色与难点,下回进入 RLHF 全流程(SFT→RM→PPO)。
- 难度控制:只用比值与“夹子”直觉解释,不进入 KL 约束推导与自然梯度细节。
引用与溯源
Footnotes
-
Schulman, J., et al. Proximal Policy Optimization Algorithms arXiv:1707.06347 (2017) https://arxiv.org/abs/1707.06347 ↩ ↩2
-
Schulman, J., et al. Trust Region Policy Optimization arXiv:1502.05477 (2015) https://arxiv.org/abs/1502.05477 ↩ ↩2
-
Huang, S., et al. The N+ Implementation Details of RLHF with PPO: A Case Study on TL;DR Summarization arXiv:2403.17031 (2024-03) https://arxiv.org/abs/2403.17031 ↩ ↩2
-
Noukhovitch, M., et al. Asynchronous RLHF: Faster and More Efficient Off-Policy RL for Language Models arXiv:2410.18252 (2024-10) https://arxiv.org/abs/2410.18252 ↩ ↩2