Anthropic 工程博客 · 中文学习笔记Anthropic 工程笔记

    近端策略优化(PPO):用“截断”把每次策略更新限制在安全范围内

    Proximal Policy Optimization Algorithms

    Day 29 · P5 原论文发布:2017-07-20 阅读约 7 分钟 原论文链接 ↗ 30u30 单元 ↗
    作者
    John Schulman, Filip Wolski, Prafulla Dhariwal, Alec Radford, Oleg Klimov
    依据版本
    arXiv v2
    30u30 单元
    29_PPO(讲解、实现与练习请到原仓库查看,本站不翻译、不改编,见导读)
    ⚠️ arXiv 首版 2017-07-20,现行为第 2 版(2017-08-28),未见正式会议发表信息(待核实)。
    本页目录(14)
    1. 一句话总结
    2. 解决什么问题
    3. 核心思想
    4. 关键公式或机制
    5. 1. 截断替代目标
    6. 2. 另一种做法:自适应 KL 惩罚
    7. 3. 完整目标与算法
    8. 4. 实验结果(论文所写)
    9. 图解
    10. 关键原话
    11. 和 Anthropic 笔记的对应
    12. 读的时候要注意
    13. 30u30 对应单元
    14. 延伸阅读

    一句话总结#

    想要信赖域方法(TRPO)那样“每步别走太远”的稳定性,又不想要它的二阶优化复杂度:PPO 用一个截断后的替代目标,只用一阶优化就达到类似效果。

    解决什么问题#

    强化学习里的策略梯度方法:让智能体按当前策略和环境交互、收集数据,估计每个动作比平均好多少(优势),然后提高好动作的概率。问题在于:

    • 普通策略梯度样本效率低:论文指出,在同一批轨迹上反复优化这个损失缺乏理论依据,实践中常导致破坏性的过大更新,所以通常一批数据只更新一步。
    • TRPO 稳定但复杂:它用 KL 散度约束新旧策略的差距,需要共轭梯度等二阶近似,实现麻烦,也不方便和共享参数的网络结构(如策略和价值函数共用一个网络)、dropout 等组件配合。

    目标是:像 TRPO 一样稳,像普通策略梯度一样好写,还能在一批数据上多更新几轮。

    核心思想#

    • 定义新旧策略在同一动作上的概率比 r_t(θ):等于 1 表示没变,大于 1 表示新策略更倾向这个动作。
    • 直接最大化“概率比 × 优势”会把策略推得很远,所以把概率比截断在 [1−ε, 1+ε] 内。
    • 再在“截断前”和“截断后”两个目标里取较小值:只在改变会让目标变好时忽略超出部分,在改变会让目标变差时照常计入。论文称这是对未截断目标的悲观下界。
    • 因为每一步都受限,同一批数据可以安全地跑多轮(K 个 epoch)小批量更新。

    关键公式或机制#

    1. 截断替代目标#

    • 概率比:r_t(θ) = π_θ(a_t | s_t) / π_θold(a_t | s_t)
    • 目标:L^CLIP(θ) = E_t[ min( r_t(θ)·Â_t , clip(r_t(θ), 1−ε, 1+ε)·Â_t ) ]

    Â_t 是优势估计,论文实验中 ε 取 0.2 效果最好。直观地看:

    • 优势为正(好动作):概率比涨过 1+ε 后不再有额外奖励,阻止一步把概率拉得太高。
    • 优势为负(坏动作):概率比降过 1−ε 后不再有额外奖励,阻止一步把概率压得太低。

    2. 另一种做法:自适应 KL 惩罚#

    论文也给了一个对照方案:目标里减去 β × KL(旧策略, 新策略),每轮更新后看实际 KL d:比目标值 d_targ 的 1/1.5 还小就把 β 减半,比 1.5 倍还大就把 β 翻倍。作者说明实验里它不如截断目标,收录它是因为它是重要的基线。

    3. 完整目标与算法#

    • 策略和价值函数共享网络时,总目标 = 截断目标 − c1 × 价值函数平方误差 + c2 × 策略熵奖励(鼓励探索)。
    • 优势用截断的广义优势估计(GAE,参数 λ)计算。
    • 算法循环:N 个并行执行者各跑 T 步收集数据 → 计算优势 → 在这批数据上用小批量随机梯度做 K 轮优化 → 用新策略替换旧策略。

    4. 实验结果(论文所写)#

    替代目标对比(7 个 MuJoCo 连续控制环境,每个 100 万步,21 次运行的平均归一化分数):

    设置平均归一化分数
    不截断、不惩罚−0.39
    截断,ε = 0.1 / 0.2 / 0.30.76 / 0.82 / 0.70
    自适应 KL0.68–0.74
    固定 KL0.62–0.72

    分数经过归一化:随机策略记 0,各环境最好结果记 1。不加任何约束得到负分,即比随机策略还差,论文指出这是因为个别环境(如 HalfCheetah)出现了很低的分数。这和“不加约束容易一步走太远”的说法一致。

    Atari 49 个游戏,和 A2C、ACER 比较“赢下的游戏数”:

    指标A2CACERPPO平局
    整个训练期间的平均回合奖励(偏向学得快)118300
    最后 100 个回合的平均奖励(偏向最终表现)128191

    PPO 学得更快,但最终表现上 ACER 赢的游戏更多。论文还展示了 3D 人形机器人奔跑、转向的连续控制任务。

    图解#

    flowchart LR
        A["用旧策略 π_old 收集一批轨迹"] --> B["估计优势 Â(GAE)"]
        B --> C["计算概率比 r = π_θ / π_old"]
        C --> D["截断到 1±ε,与未截断取较小值"]
        D --> E["同一批数据上做 K 轮小批量更新"]
        E --> F["π_old ← π_θ"]
        F --> A

    图解:每轮先用旧策略收集轨迹并用 GAE 估计优势,再用概率比构造截断目标,在同一批数据上做 K 轮小批量更新,最后把新策略设为下一轮的旧策略。

    关键原话#

    “we only ignore the change in probability ratio when it would make the objective improve, and we include it when it makes the objective worse.”

    和 Anthropic 笔记的对应#

    PPO 本身是强化学习优化算法,Anthropic 工程博客的笔记没有直接讨论它。下面的对应都是类比,帮助把“优化一个代理目标”的风险和评测实践联系起来:

    Anthropic 笔记对得上的地方
    揭秘 AI 智能体评测PPO 只会最大化你给它的奖励信号;评分器设计里的“防止被绕过或钻空子”,在强化学习里对应奖励被利用(reward hacking)的问题。评分器有漏洞,优化越强,漏洞越容易被找到。
    BrowseComp 中的评测察觉模型找到评测源码解密答案,是“优化目标和真实意图不一致”的一个极端例子。和 PPO 没有直接关系,但说明了被优化的系统会走出设计者没想到的路径。
    基础设施噪声PPO 论文用 21 次运行、3 次试验的平均来比较算法;那篇提醒排行榜上几个百分点的差距可能只是环境配置差异。两者都提示:单次运行的分数不足以下结论。

    读的时候要注意#

    • PPO 是一族方法:截断版是主角,KL 惩罚版是对照;后来说“PPO”一般指截断版。
    • 实现细节影响很大:一般认为开源实现中有不少论文正文没有展开的工程细节,不同实现之间的效果也有差异(待核实:本笔记未逐一核对具体实现)。
    • Atari 结果不是全面碾压:按最终表现,ACER 赢的游戏更多。
    • 从游戏到语言模型:后来的 InstructGPT 用 PPO 在人类偏好训练出的奖励模型上微调语言模型,并在目标里混入预训练梯度(PPO-ptx)。这一步的完整配方在 InstructGPT 论文里,不在本文。
    • “近端”的含义:指每次更新都留在旧策略附近,不是某种新的数学结构。

    30u30 对应单元#

    • 30u30 的 Day 29 单元↗(仓库采用 CC BY-NC-ND 4.0,本笔记没有使用其内容)。
    • 路线位置:30u30 导读 的原理支线 P5(Day 29 → 30)。

    延伸阅读#


    本笔记依据 2026-10-18 抓取的在线原文撰写,仅为导读与总结。原文:John Schulman 等,《Proximal Policy Optimization Algorithms》, arXiv 2017。

    本页目录