适用场景:强化学习入门、LLM(大语言模型)RLHF 微调基础、面试复习、代码落地参考。
阅读对象:假设读者完全不懂强化学习,从零开始,用大白话逐步深入到数学公式和工程细节。
目录
- PPO 是干什么的?—— 动机与历史
- PPO 的核心思想与数学公式
- PPO 裁剪 vs 学习率 vs 梯度裁剪 —— 彻底分清
- 完整的 PPO 损失函数:三驾马车
- 旧模型(A)和新模型(B)的生命周期
- 数据流与 Rollout Buffer:为什么用完就扔?
- 在 LLM 中,概率到底指什么?
- 底层实现:Logits、Softmax 与对数空间计算
- Tokenization 陷阱:为什么分词器会影响训练效果?
- 工程落地:TRL 库代码与关键超参数
1. PPO 是干什么的?—— 动机与历史
核心痛点:在传统的策略梯度(Vanilla Policy Gradient)算法中,AI 每次更新参数的“步长”没有任何限制。这就像一个人学骑自行车,如果某次摔了一跤,算法可能会过度修正,导致下次摔得更惨,进而恶性循环,最终彻底崩溃。这被称为 “灾难性崩溃”(Catastrophic Collapse)。
解决方案进化史:
- TRPO(2015年):它通过引入复杂的数学约束(KL散度限制),完美解决了步长问题,但需要计算极其昂贵的二阶导数(Fisher矩阵),导致训练速度极慢,难以大规模应用。
- PPO(2017年):它用一个极其简单的“土办法”——裁剪(Clipping) 技巧,只用普通的一阶梯度就达到了和 TRPO 一样的稳定性。它实现简单、效果稳定、易于分布式训练,因此迅速成为强化学习(尤其是 ChatGPT 们的 RLHF 阶段)的首选算法。
一句话概括 PPO:每次更新时,步子别迈太大,否则容易扯着蛋。它通过强制限制“概率变化幅度”来保证训练的平稳性。
2. PPO 的核心思想与数学公式
PPO 最天才的地方在于引入了一个 “概率比值” 和 “裁剪” 机制。
2.1 概率比值 r(θ) 是什么?
定义:对于同一个动作(比如生成词语“苹果”或游戏里的“向左转”),
r(θ) = 新模型做出该动作的概率 / 旧模型做出该动作的概率
含义:
- r = 1.0:新模型和旧模型对这个动作的偏好程度一样。
- r = 1.2:新模型做这个动作的意愿比旧模型高了 20%。
- r = 0.8:新模型做这个动作的意愿比旧模型低了 20%。
2.2 裁剪公式(核心!)
PPO 的目标函数(损失函数)如下,别怕,我们拆开看:
LCLIP = min( r · A, clip(r, 1-ϵ, 1+ϵ) · A )
其中: