Proximal Policy Optimization (PPO):
JPPO(θ)=E(q,a)∼D,o≤t∼πθold(⋅∣q)[min(πθold(ot∣q,o<t)πθ(ot∣q,o<t)A^t,clip(πθold(ot∣q,o<t)πθ(ot∣q,o<t),1−εlow,1+εhigh)A^t)]
- θ: 当前策略模型的参数(正在训练的新模型)
- θold: 旧策略模型的参数(用于采样数据的模型)
- πθ(ot∣q,o<t): 当前策略在给定任务 q 和历史观察 o<t 下,输出动作 ot 的概率
- πθold(ot∣q,o<t): 旧策略输出同样动作的概率
- A^t: 优势函数估计值(Advantage),表示该动作比平均水平好多少
- εlow,εhigh: 裁剪参数的下界和上界
模型和价值模型在PPO训练中的区别和作用时机:
核心区别
奖励模型 (Reward Model)
- 作用: 评估单个动作或整个轨迹的好坏
- 输出: 标量奖励信号 r_t
- 来源: 环境反馈或外部评判器
价值模型 (Value Model)
- 作用: 预测从当前状态开始能获得的未来累积奖励
- 输出: 状态价值 V(s_t)
- 来源: 神经网络学习得到
在PPO训练中的作用时机
1. Rollout阶段 (数据收集)
Agent与环境交互 → 生成轨迹 τ = {(t₀,a₀,o₀), (t₁,a₁,o₁), ...}
↓
奖励模型评估
↓
为每个时间步分配奖励 r_t
奖励模型在这个阶段工作:
- 对于游戏:环境直接返回分数
- 对于GUI-General:UI-TARS-2的ORM评估整个轨迹给出奖励
- 对于GUI-Browsing:GPT-4o判断答案正确性
2. Advantage计算阶段
这是价值模型发挥关键作用的时候:
δ_t = r_t + γ·V(s_{t+1}) - V(s_t)
Â_t = Σ (γλ)^l · δ_{t+l}
价值模型的作用:
- 估计 V(s_t) 用于计算TD误差
- 帮助判断某个动作比平均水平好多少
- 减少方差,稳定训练
3. 策略更新阶段
PPO目标函数 (论文公式4):
J_PPO(θ) = E[min(
π_θ(o_t|q,o_{<t})/π_{θ_old}(o_t|q,o_{<t}) · Â_t,
clip(...) · Â_t
)]
- 使用优势函数 Â_t (由价值模型帮助计算) 来更新策略
- 奖励信号 r_t 已经通过GAE融入到 Â_t 中
4. 价值函数更新阶段
同时训练价值模型,最小化预测误差:
L_value = (V_θ(s_t) - R_t)²
其中 R_t 是实际累积奖励(来自奖励模型)
论文中的特殊设计
Decoupled GAE (论文2.5.4节)
- 策略和价值函数使用不同的λ参数
- λ_policy 和 λ_critic 解耦
- 防止长序列导致的价值估计偏差
Length-Adaptive GAE
- 根据序列长度动态调整λ
- 处理不同长度序列的优势估计不一致问题
Value Pretraining的重要性
论文发现没有价值预训练时,价值估计与实际奖励负相关(图10b),因此:
- 先用固定策略采样数据
- 训练价值模型至收敛(λ=1.0,蒙特卡洛回报)
- 用训练好的价值模型初始化PPO
时间线总结
训练前: 价值预训练 (Value Pretraining)
↓
每个训练迭代:
1. Rollout: 奖励模型评估 → 获得 r_t
2. Advantage计算: 价值模型 V(s) → 计算 Â_t
3. 策略更新: 使用 Â_t 更新 π_θ
4. 价值更新: 使用 r_t 更新 V_θ
关键点: 奖励模型告诉我们"这次做得好不好",价值模型告诉我们"未来还能得到多少",两者协同工作才能有效训练agent。