Proximal Policy Optimization Algorithms

基本信息

研究问题

普通 Policy Gradient 的目标函数与梯度推导

Policy Gradient 的真实优化目标,是最大化当前策略产生 trajectory 的期望累计回报。设一条轨迹为

对应 discounted return 为 ,则目标函数写作

其中,trajectory 的概率可以分解为

其中 是初始状态分布, 是环境转移概率。真正依赖 policy 参数 的只有

因此,对期望回报求梯度:

利用 log-derivative trick:

得到

再展开 trajectory log probability:

由于初始状态分布和环境动力学都不依赖 ,对参数求导后只剩 policy:

于是

这个形式已经说明了 Policy Gradient 最重要的性质:即使 reward 和环境 transition 本身不可微,也不需要对环境进行反向传播,只需要计算 policy 对已采样动作概率的梯度。

不过,完整 trajectory return 中还包含动作 发生之前的 reward,而过去的 reward 不可能由当前动作改变。因此可以利用 causality,只保留从当前 timestep 开始的 reward-to-go:

于是得到 REINFORCE 形式:

从期望意义上看,

因此上式也可以写成 Policy Gradient Theorem 的常见形式:

这里的含义是:如果某个动作对应的 较高,就沿着提高该动作概率的方向更新;反之则降低其概率。

直接使用 虽然在期望上正确,但方差通常较大。Policy Gradient 有一个重要性质:可以从 中减去任意只依赖当前状态、与动作无关的 baseline ,而不会改变梯度的期望。原因是

利用

可得

因此

选择

时,就得到 advantage:

于是 Policy Gradient Theorem 最终写成

实际训练只能通过有限 rollout 对该期望进行估计,因此使用

其中 可以通过 Monte Carlo、TD 或 GAE 等方法估计。若 ,梯度更新倾向于提高已采样动作 的概率;若 ,则倾向于降低其概率。

为了使用 SGD / Adam 和自动微分框架,可以进一步构造一个 surrogate objective:

对于已经采集完成的一批 rollout, 在 policy update 时视为固定常数,因此

因此, 并不等于真正希望最大化的期望回报

而是一个梯度与 policy-gradient estimator 对齐的代理目标(surrogate objective)。后续 TRPO 和 PPO 的核心,正是在这个 surrogate objective 基础上进一步约束 policy update 的幅度。

Rollout 更新与稳定性和样本利用率

一次更新使用一批由当前 policy 采样的数据通常是合理的,但同一批 trajectory 多次优化时,policy 已经发生变化。继续无约束地增大采样动作的概率,可能导致 destructive large policy update:模型快速偏离采样数据对应的 policy,训练不稳定,甚至性能崩溃。

因此,论文面对的是一个具体的优化矛盾:

只更新一次:样本利用率低
重复使用 rollout:样本利用率高,但 policy 可能移动过远
PPO:允许多 epoch 更新,同时限制新旧 policy 的差异

TRPO 的稳定性与工程复杂度

TRPO 使用 surrogate objective,并显式约束新旧 policy 的 KL divergence:

subject to:

TRPO 借助 conjugate gradient、线性化 objective 和二次近似约束求解近似 trust-region update。它的稳定性较好,但实现复杂,不容易和 dropout、policy/value 参数共享或其他通用神经网络结构结合。

PPO 的目标是把“不要离旧 policy 太远”变成一个可以直接用 SGD/Adam 优化的目标,不再依赖二阶近似和专门的 constrained optimizer。

核心主张

论文的主要主张可以归纳为以下几层:

  1. 多 epoch minibatch update 是可行的。 只要 surrogate objective 对新旧 policy 的差异施加足够约束,同一批 on-policy 数据可以被重复使用。
  2. Clipped surrogate objective 在简单性、稳定性和效果之间取得了较好平衡。 它只需要对 vanilla policy-gradient loss 做很小的实现改动。
  3. PPO 比固定 KL penalty 更稳健。 原论文在连续控制的比较中,clip range 的平均归一化得分高于所测试的 fixed/adaptive KL 设置。
  4. PPO 适用范围比 TRPO 更广。 它可以使用一阶优化,支持共享 policy/value 网络和更一般的神经网络结构。
  5. 经验上兼顾 sample complexity 与 wall-time。 原论文在 MuJoCo 连续控制、Roboschool humanoid 和 Atari 上进行了验证。

论文没有声称 clipping 能在所有环境中提供严格的单调性能提升定理。更准确地说,作者借鉴 trust-region / conservative policy iteration 的思想,构造一个对未裁剪 surrogate 的 pessimistic objective,并通过实验验证其稳定性和实用性。

方法与机制

Policy Gradient 中的 Advantage

在状态 下采取动作 后,policy gradient 真正关心的不是这个动作获得了多少绝对 reward,而是它相对于当前状态下 policy 的平均行为究竟更好还是更差。这个相对收益由 advantage 定义:

其中

表示从状态 出发、后续按照当前 policy 行动时的期望累计回报;

进一步固定了当前动作 ,表示先执行该动作、再按照当前 policy 行动时的期望累计回报。两者之差说明当前动作相对于该状态下 policy 的平均动作有多好。 时应该提高该动作概率, 时应该降低其概率。

这里有一个容易被省略但很重要的实现事实:PPO 通常只显式训练 state-value critic ,并不额外训练一个 网络。 这并不是因为 可以被精确计算而 才需要估计;二者本质上都未知。区别在于,对 rollout 中已经实际采样出的 ,可以直接利用后续 reward 与 构造 的 sample estimator,因此没有必要再单独参数化一个 action-conditioned critic。

如果完整 episode 从 一直运行到 terminal,则从该时刻开始的 Monte Carlo return 为

根据 的定义,有

因此一次实际 rollout 得到的 就是 的一个 Monte Carlo sample:

对应的 Monte Carlo advantage 为

这里 本身不是 advantage,而是对 的估计;减去当前状态的 baseline 后才得到 advantage。这个关系也是理解后续 TD 与 GAE 的起点:PPO 并没有绕开 ,而是选择按 rollout 临时构造 ,同时跨 rollout 学习 。

这里的 advantage 负责决定 policy gradient 的方向和相对强度,不负责 PPO 的 proximal 约束。PPO 的 clipping 作用在另一个量上:当前 policy 与生成 rollout 的旧 policy 对同一动作的概率比。

Importance Ratio

设 是采样 rollout 的旧 policy, 是更新中的当前 policy。定义:

在旧 policy 参数处,。更新过程中:

  • :当前 policy 提高了动作 的概率;
  • :当前 policy 降低了动作 的概率;
  • 偏离 1 越远:当前 policy 相对 rollout policy 的变化越大。

未约束的 importance-weighted surrogate objective 为:

它在旧 policy 附近与 policy gradient 一致,但如果直接最大化,正 advantage 样本会持续推动 增大,负 advantage 样本会持续推动 减小,最终产生过大的 policy update。

Clipped Surrogate Objective

PPO 的主目标是:

其中 是 clip range,原论文实验中重点使用 、 和 。

这个目标包含两个候选值:

  1. 未裁剪的 ,保留当前 policy 对动作概率变化的完整影响;
  2. 将 ratio 限制在 后得到的目标,阻止过大的有利更新。

最终取两者的最小值,因此只在 ratio 的继续移动会让 surrogate 看起来更好时截断这部分收益;如果移动方向会让目标变差,未裁剪项仍然会保留惩罚。

正 Advantage 与负 Advantage 的分段理解

理解 clipping 必须区分 advantage 的正负。

当 时,训练希望提高动作概率:

r_t < 1 + ε:继续提高概率仍然有 policy loss 收益
r_t >= 1 + ε:收益被截断,不再鼓励继续提高

当 时,训练希望降低动作概率:

r_t > 1 - ε:继续降低概率仍然有 policy loss 收益
r_t <= 1 - ε:惩罚被截断,不再鼓励继续降低

所以 PPO 不是把所有 ratio 都限制在区间内,也不是简单对 gradient 做 norm clipping。它是在 objective 层面取消“过度有利方向”的额外收益:

正 advantage:最多把好动作推高到约 1 + ε
负 advantage:最多把坏动作压低到约 1 - ε

为什么取 minimum

如果只使用:

那么 ratio 被裁剪后,即使当前 policy 的移动方向使目标变差,也可能丢失必要的惩罚信号。PPO 使用:

保证目标不会因为 clipping 变得比未裁剪目标更乐观。论文将其解释为一个 pessimistic estimate:只忽略会进一步改善目标的过大更新,不忽略会恶化目标的偏移。

在 接近 的位置,,clipped objective 与普通 CPI objective 一阶等价;当 policy 逐渐离开旧 policy 时,两者才明显不同。

Clipping 与 Trust Region 的关系

PPO clipping 和 TRPO 的 KL constraint 都在控制 policy update,但它们不是同一种约束:

  • TRPO 直接对 policy distribution 的平均 KL 设置约束,并用专门的近似求解器优化;
  • PPO 对采样动作的 probability ratio 做局部截断,用普通一阶优化器多轮更新。

因此,ratio clipping 不保证每个 state 上的 full-distribution KL 都落在固定范围内。实际训练仍应监控 approximate KL、clip fraction 和 reward 曲线,必要时配合 KL penalty 或 early stopping。

Adaptive KL Penalty

论文还研究了 KL-penalized objective:

它可以作为 clipped objective 的替代方案,也可以与 clipping 组合。论文使用目标 KL 自适应更新 :

如果 d < d_targ / 1.5:β <- β / 2
如果 d > d_targ * 1.5:β <- β * 2
否则:保持 β

其中 是这一轮更新后估计的平均 KL。这个机制的思想是:不预先假设所有训练阶段、所有环境都适合同一个 KL penalty,而是根据实际 policy shift 调整惩罚强度。

原论文的连续控制实验中,adaptive KL 的表现优于部分 fixed KL 设置,但总体低于最好的 clipping 设置。论文保留它作为重要 baseline,因为 KL penalty 在很多后续 RL 系统中仍然有价值,尤其适合表达“不要偏离 reference policy 太远”的显式约束。

Value Function、 Estimation 与联合目标

PPO 使用参数化 critic 作为 state-dependent baseline。 并不是由 Bellman 方程直接精确求出,而是通过 rollout 构造监督 target,再用回归逐步拟合 。如果 policy 和 value function 共享网络,原论文将 policy objective、value loss 与 entropy bonus 写成联合目标:

其中

论文采用最大化形式,因此 policy objective 与 entropy 被最大化,而 value error 被最小化;若工程实现统一采用最小化 loss,通常写成

关键问题随之变成: 和 policy update 所需的 从哪里来?答案正是对 的不同 horizon 估计。PPO 不需要单独学习一个 网络,因为对已经采样出的动作,可以从 rollout 构造 one-step、multi-step 乃至 Monte Carlo 的 ,再通过

得到 advantage。

从 One-step TD 到 Monte Carlo Return

最短的 estimator 来自 Bellman 关系:

实际发生一次 transition 后,可以用

作为 one-step estimator,因此 one-step advantage 为

这个量通常记为 TD residual:

如果 ,则在给定 的条件下

因此 本身就是一个合法的 one-step advantage estimator。它的优点是只依赖一步真实 transition,未来随机性较少;缺点是很早就在 处 bootstrap,因此对未来 value prediction 的误差比较敏感。

如果不在 立即 bootstrap,而是继续观察真实 rollout,可以得到 two-step estimator:

以及更一般的 -step estimator:

对应 advantage 为

随着 增大,估计器使用越来越多真实 rollout reward,bootstrap 被推向更远的位置;如果一直看到 terminal,并令 terminal state 的 ,就得到

和

因此 one-step TD 与 Monte Carlo 并不是两套互不相关的方法,而是同一个 estimation family 的两个端点:

短 horizon 更早依赖 critic,通常 variance 较低,但更容易受到 bootstrap value approximation error 的影响;长 horizon 更多依赖真实 trajectory,减少未来 bootstrap 的依赖,却把更多后续 policy 和环境随机性带入当前 estimator,因此 variance 往往更高。

需要特别区分当前 baseline 与未来 bootstrap value 的误差。若写

则 -step advantage 中由 value approximation 引入的直接误差项为

其中 来自所有 estimator 都共有的当前 state baseline;真正随 horizon 改变的是 这一未来 bootstrap 误差。增大 horizon 并不是让 变得更准确,而是在逐渐减少对未来 value prediction 的依赖。作为 policy-gradient baseline, 即使并不完美,只要只依赖 state 而不依赖当前 action,就不会改变标准 policy-gradient estimator 的期望;它主要影响方差。未来 则参与 的 bootstrap,会随 action 到达的后继状态而变化,因此其估计误差可以直接扭曲不同 action 的相对 credit。

GAE:对不同 Horizon 的 Advantage Estimator 做加权

固定选择某一个 会迫使算法在短期 TD 与长程 Monte Carlo 之间做离散选择。Generalized Advantage Estimation(GAE)的核心思想是不选择单一 horizon,而是对不同长度的 -step advantage estimator 做指数加权。其概念形式可以写成

这里 控制 estimator horizon。 越小,权重越集中在较短的 TD estimator; 越接近 1,越多权重分配给较长的 rollout estimator。在完整 terminal episode 上, 时最终趋近于 Monte Carlo advantage 。

这一加权形式可以进一步化成更常见的 TD-residual 累积。首先有

而 two-step advantage 可写为

因为展开后中间的 与 正好抵消。同理,

代回 加权形式后得到

或递推写成

从直觉上看, 可以理解为当前 timestep 的“价值 surprise”:

GAE 会把后续 timestep 的 TD surprise 按 衰减后部分归因给当前 action,因此它既保留了 TD bootstrap 的低方差特性,又允许更远的真实 reward 对当前 credit assignment 产生影响。

与 的角色

和 经常以乘积 一起出现在 GAE 公式中,但它们不是同一个概念。 是 discount factor,首先定义 return 本身:

它决定未来 reward 在任务目标中应该被折扣多少。 则主要控制 advantage estimator 在较短 TD bootstrap 与较长 rollout return 之间的混合程度。可以把它理解为:到达下一状态后,是更倾向于立即相信 critic,还是继续沿真实 trajectory 向后观察。

因此,在典型近似条件下:较小 更偏向短期 TD,通常 variance 较低,但更依赖 value approximation;较大 使用更多真实 rollout,future bootstrap bias 较低,但 trajectory variance 较高。这个 bias–variance trade-off 是 GAE 的核心,而不是简单地“给未来 reward 再乘一个额外衰减系数”。

-Return 与 Critic Target

GAE 得到的是 actor 使用的 advantage。critic 则需要一个对 的监督 target。由

可得

因此定义

作为对应的 -return / value target。它还可以写成非常直观的递推形式:

其中 表示到下一状态就停止使用真实 rollout,直接 bootstrap; 表示继续沿当前 trajectory 使用更多实际 reward。于是 PPO 中 actor 与 critic 的信息流可以统一写成

Actor 使用 进入 PPO clipped surrogate objective,critic 则通过 value loss 拟合 。这使 PPO 中的 、、return 和 advantage 形成一个闭环: 由 critic 跨 rollout 学习, 不被单独参数化,而是由真实 reward 与 构造不同 horizon 的 estimator;GAE 再在这些 estimator 之间做连续的 bias–variance 折中。

固定长度 Trajectory Segment 与 Bootstrap

原 PPO 论文并不要求每次都等待完整 episode 结束。若每个 actor 只采集固定长度为 的 trajectory segment,而 并非真正 terminal,则 segment 末端仍有未来价值,不能简单令其为 0。此时可以使用 做 bootstrap。例如最长 horizon 的 advantage estimator 为

截断的 GAE 则为

这里必须区分真正的 episode termination 与人为 truncation。若任务真实结束,则 terminal state 的未来 return 为 0,可以令对应 bootstrap value 为 0;若只是因为固定 horizon、time limit 或采样预算而截断,则理论上仍应保留边界状态的 bootstrap value。固定长度 segment 让并行 actor 可以定期同步更新,但也使 segment boundary、terminated/truncated mask 和 bootstrap value 成为 PPO 实现中必须明确处理的部分。

说明:以上关于 estimation、Monte Carlo、n-step TD、GAE 与 -return 的推导用于补充 PPO 方法的机制理解,其中部分推导来自标准 actor-critic / GAE 框架,并非 PPO 原文逐句展开的内容;PPO 原论文主要直接采用 truncated GAE 作为 advantage estimator。

PPO Algorithm

原论文的 actor-critic 风格算法可以整理成下面的循环:

for each iteration:
  1. 用 πθ_old 从 N 个并行 actor 收集各 T 个 timestep
  2. 使用 critic value、reward 与 GAE 计算每个 timestep 的 advantage A_hat 和 $\lambda$-return / value target
  3. 固定这批 rollout 数据
  4. 用 minibatch SGD / Adam 优化 K 个 epoch 的 PPO objective
  5. θ_old <- θ

更具体地说,一轮 update 依赖以下数据:

state s_t
action a_t
reward r_t
old log probability log πθ_old(a_t | s_t)
value estimate V(s_t)
advantage A_hat_t
return / value target V_t^targ

更新期间使用当前 policy 重算 ,再计算:

然后将 ratio 与 advantage 代入 clipped objective。完成若干 epochs 后,当前 policy 成为下一轮 rollout 的 old policy。

这使 PPO 成为 online 或 near-on-policy 算法:数据不是一次永久复用,而是在当前 policy 附近被重复使用若干次,随后重新采样,以控制分布偏移。

实验与证据

Continuous Control:Surrogate Objective 对比

论文首先在 OpenAI Gym 的 7 个 MuJoCo 连续控制任务上比较不同 surrogate objective。任务包括 HalfCheetah、Hopper、InvertedDoublePendulum、InvertedPendulum、Reacher、Swimmer 和 Walker2d。每种设置训练 1M timesteps,每个环境使用 3 个 random seeds,共 21 次运行。

模型是两个 hidden layers、每层 64 units、tanh activation 的 MLP,policy 输出 Gaussian action distribution 的 mean 与可变 standard deviation。policy 和 value function 不共享参数,因此这个实验没有使用 value loss coefficient ,也没有 entropy bonus。

作者将每个环境的 random policy 得分平移为 0,将最佳结果缩放为 1,再在 21 次运行上平均。结果如下:

Algorithm / settingAverage normalized score
No clipping or penalty-0.39
Clipping, 0.76
Clipping, 0.82
Clipping, 0.70
Adaptive KL, 0.68
Adaptive KL, 0.74
Adaptive KL, 0.71
Fixed KL, 0.62
Fixed KL, 0.71
Fixed KL, 0.72
Fixed KL, 0.69

这个实验直接支持两点:

  1. 在没有 clipping 或 penalty 时,多 epoch 更新很容易产生破坏性的大步长;
  2. clipping 在论文所测试的设置中,对 penalty 的初始系数和目标 KL 不那么敏感, 表现最好。

但这个表格是 7 个 MuJoCo 环境上的归一化平均值,不应解读为 PPO 在所有任务上的固定超参保证。不同 reward scale、action distribution、rollout horizon 和网络规模都可能改变最优设置。

与其他连续控制算法比较

论文进一步将 clipped PPO 与 tuned implementations of TRPO、CEM、vanilla policy gradient with adaptive stepsize、A2C 和 A2C with trust region 比较。训练 1M timesteps 后,PPO 在几乎所有连续控制环境中表现更好或具有竞争力。

这个比较的意义不只是最终 reward。PPO 同时保留了:

  • TRPO 追求的保守 policy update;
  • 一阶 SGD/Adam 带来的实现简单性;
  • 多 epoch update 带来的数据重复利用。

Roboschool Humanoid

论文在三个 3D humanoid 任务上展示 PPO:

  • RoboschoolHumanoid:向前运动;
  • RoboschoolHumanoidFlagrun:目标位置每 200 timesteps 或到达目标后随机变化;
  • RoboschoolHumanoidFlagrunHarder:机器人被方块击中后仍需起身并继续追踪目标。

这些任务用于展示 PPO 在高维连续控制和更长时间尺度交互中的表现。论文使用 512 timestep horizon、15 epochs、4096 minibatch size,并根据 target KL 调整 Adam stepsize;locomotion 使用 32 actors,flagrun 使用 128 actors。

这里要注意,Roboschool 实验使用的是 KL-adaptive 的学习率调节设置,而不是把所有结果都归因于 clipped objective 本身。论文将 PPO 视为一组 proximal policy optimization 方法,具体的 rollout、stepsize 和 entropy 配置仍是结果的一部分。

Atari

论文在 Arcade Learning Environment 上比较 PPO、A2C 和 ACER,使用与 A2C 工作相同的 policy network architecture。PPO 的 Atari 设置包括:

  • horizon ;
  • Adam stepsize ;
  • 3 个 epochs;
  • minibatch size ;
  • 8 个 actors;
  • 、GAE ;
  • clip parameter ;
  • entropy coefficient ;
  • 随训练从 1 线性退火到 0。

在 49 个 Atari 游戏上,论文统计两个指标下各算法的胜场数:整个训练过程的平均 episode reward,偏向 sample efficiency;训练最后 100 个 episodes 的平均 reward,偏向最终性能。

MetricA2CACERPPOTie
Average reward over all training118300
Average reward over last 100 episodes128191

这个结果说明 PPO 在整个训练过程的学习速度上很强,但 ACER 在最后 100 episodes 的最终表现上赢得更多游戏。它并不支持“PPO 在所有指标上都优于所有算法”,而是说明不同算法在学习速度、最终性能与任务类型之间存在差异。

关键结论

PPO 解决的是 Policy Update 的稳定性

PPO 的 reward、advantage estimator、value function 和 rollout 仍然依赖常规 actor-critic 组件。它最独特的部分是更新规则:

旧 policy 采样数据
  -> importance ratio 衡量 policy shift
  -> clipped surrogate 限制有利方向的过度移动
  -> 同一批数据做多个 minibatch epochs
  -> 重新 rollout,保持 near-on-policy

这条链路解释了 PPO 为什么在工程上比 TRPO 简单,又比不加约束的多 epoch policy gradient 稳定。

Clipping、KL Penalty 与 Gradient Clipping 是三个不同概念

  • PPO clipping:对 在 surrogate objective 中的收益做截断。
  • KL penalty:在 loss 中惩罚当前 policy 与 old/reference policy 的分布差异。
  • Gradient clipping:对参数梯度的 norm 或元素值做截断,避免数值上的大梯度。

它们可以同时存在,但不能互相替代。PPO clipping 不保证 gradient norm 小;gradient clipping 也不保证 policy KL 小;KL penalty 需要选择和调整 penalty coefficient,不能简单等同于 ratio clipping。

PPO 的稳定性来自多个组件的组合

不能把 PPO 的效果只归因于一个 min(·)。完整训练行为还取决于:

  • rollout 是否足够接近当前 policy;
  • advantage 是否经过合理估计和归一化;
  • value function 是否能够提供有效 baseline;
  • minibatch epochs 是否过多;
  • clip range、learning rate、batch size 和 horizon 是否匹配;
  • reward scale、entropy 和 KL 监控是否合理。

clip objective 提供的是局部更新保护,而不是对错误 reward、错误 value function 或错误 action mask 的补救。

对 LLM 与 Agent RL 的映射

原论文实验对象是连续动作控制和 Atari,不是语言模型。但 PPO 的数学结构可以自然映射到 token-level 或 action-level agent training:

PPO 概念LLM / Agent 中的对应物
state prompt 加上当前已生成的 token、工具调用历史和环境状态
action 下一个 token、完整工具调用或一个离散 agent action
policy 当前语言模型或 action policy
old policy生成本批 rollout 的冻结 policy
reference policy用于 KL regularization 的 base/SFT/reference model
rewardreward model、verifier、测试结果、环境奖励或组合评分
value function对当前前缀/环境状态的未来 return 估计
advantage当前 token/action 相对状态 baseline 的收益
trajectory一次 response 或多轮 tool-use interaction

语言模型中通常用 logprob 计算 ratio:

对于多轮 agent,需要额外明确哪些 token 是 policy action,哪些 token 是 environment observation。通常只对 assistant-generated tokens 或 agent action tokens 计算 policy loss;用户输入、system instruction、tool result 和环境 observation 不应被误当成 policy action。这个 mask 是 LLM PPO 相比原始控制任务新增的重要工程问题。

如果 reward 主要在整条 trajectory 结束时产生,GAE 或其他 credit assignment 方法需要把 delayed reward 传回较早的 token/action。若 trajectory 很长,value estimation 误差、advantage variance、截断和环境 observation 的处理都会显著影响训练稳定性。因此,不能把原论文的固定 horizon 和超参直接搬到长程 Code Agent 或通用 Agent 任务。

局限与疑问

  1. Clipping 不是严格的 trust-region constraint。 它只约束被采样 action 的 ratio 在 surrogate 中的进一步收益,不能保证所有 state、所有 action 的 full-distribution KL 都受同样限制。
  2. Clip range 仍是超参。 原论文中 在测试设置下最好,但不同任务的 reward scale、policy architecture 和 horizon 可能需要不同值。
  3. 多 epoch 会增加样本偏移。 PPO 允许重复使用 rollout,但 epochs 过多时,current policy 仍可能远离 old policy,即使局部 ratio 被 clipping。
  4. Advantage 和 value function 仍是主要误差源。 clipping 不能纠正 value model 错误、reward 噪声、稀疏反馈或错误 bootstrap。
  5. 原论文实验不覆盖 LLM 后训练。 MuJoCo、Roboschool 和 Atari 中 action space、trajectory length、reward 结构和 network architecture 与语言模型 agent 有明显差异;LLM 中的 token masking、KL reference、长序列显存和 rollout 成本需要额外设计。
  6. 实验比较依赖 tuned baseline。 论文展示了 PPO 的平均优势,但不同算法的实现、超参和环境适配仍会影响比较结果。
  7. KL penalty 的 policy 对象需要明确。 原论文的 KL penalty 比较的是 old policy 与 current policy;在 LLM RLHF 中还经常额外引入 reference policy,二者不能混为同一个约束。

分析与判断

PPO 的“proximal”不是让 policy 永远接近某个固定模型,而是让每一轮更新不要离开生成当前训练数据的 old policy 太远。每轮训练结束后,old policy 会更新为当前 policy,下一轮重新采样。因此它维护的是一个移动的局部信任区域。

这个视角也解释了 PPO 与静态 preference optimization 的差别:PPO 直接在当前 policy 产生的 interaction data 上更新,允许 reward 和环境反馈参与训练;代价是需要 rollout、old logprob、advantage、value 和稳定的更新控制。

对后续阅读 PPO、GRPO 和 agent RL 论文,最值得沿用的检查顺序是:

谁生成 rollout?
  -> old policy 是谁?
  -> action / token 的 logprob 如何记录?
  -> reward 在什么时间点产生?
  -> advantage 用什么 baseline 估计?
  -> ratio 是 token-level 还是 sequence-level?
  -> clipping / KL 约束的是 old policy 还是 reference policy?
  -> 一批 rollout 被重复更新多少次?

只看论文中“使用 PPO”这一标签,无法判断一个系统的实际训练行为。真正需要对齐的是 rollout 分布、reward 时间尺度、advantage 估计、policy ratio、KL 对象和 update schedule。

相关知识链接