PPO 奖励模型和价值模型
2025-12-24
深度学习
00

目录

核心区别
奖励模型 (Reward Model)
价值模型 (Value Model)
在PPO训练中的作用时机
1. Rollout阶段 (数据收集)
2. Advantage计算阶段
3. 策略更新阶段
4. 价值函数更新阶段
论文中的特殊设计
Decoupled GAE (论文2.5.4节)
Length-Adaptive GAE
Value Pretraining的重要性
时间线总结

Proximal Policy Optimization (PPO):

JPPO(θ)=E(q,a)D,otπθold(q)[min(πθ(otq,o<t)πθold(otq,o<t)A^t,clip(πθ(otq,o<t)πθold(otq,o<t),1εlow,1+εhigh)A^t)]\mathcal{J}_{\text{PPO}}(\theta) = \mathbb{E}_{(q,a)\sim\mathcal{D}, o_{\leq t}\sim\pi_{\theta_{\text{old}}}(\cdot|q)} \left[ \min \left( \frac{\pi_\theta(o_t \mid q, o_{<t})}{\pi_{\theta_{\text{old}}}(o_t \mid q, o_{<t})} \hat{A}_t, \text{clip}\left(\frac{\pi_\theta(o_t \mid q, o_{<t})}{\pi_{\theta_{\text{old}}}(o_t \mid q, o_{<t})}, 1-\varepsilon_{\text{low}}, 1+\varepsilon_{\text{high}}\right) \hat{A}_t \right) \right]
  • θ\theta: 当前策略模型的参数(正在训练的新模型)
  • θold\theta_{\text{old}}: 旧策略模型的参数(用于采样数据的模型)
  • πθ(otq,o<t)\pi_\theta(o_t \mid q, o_{<t}): 当前策略在给定任务 qq 和历史观察 o<to_{<t} 下,输出动作 oto_t 的概率
  • πθold(otq,o<t)\pi_{\theta_{\text{old}}}(o_t \mid q, o_{<t}): 旧策略输出同样动作的概率
  • A^t\hat{A}_t: 优势函数估计值(Advantage),表示该动作比平均水平好多少
  • εlow,εhigh\varepsilon_{\text{low}}, \varepsilon_{\text{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计算阶段

这是价值模型发挥关键作用的时候:

python
展开代码
# 使用GAE (Generalized Advantage Estimation) 计算优势函数 # 论文采用Decoupled-GAE和Length-Adaptive GAE δ_t = r_t + γ·V(s_{t+1}) - V(s_t) # TD误差 Â_t = Σ (γλ)^l · δ_{t+l} # 优势估计

价值模型的作用

  1. 估计 V(s_t) 用于计算TD误差
  2. 帮助判断某个动作比平均水平好多少
  3. 减少方差,稳定训练

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

python
展开代码
λ_policy = 1 - 1/(α·l) # l是序列长度,α=0.05
  • 根据序列长度动态调整λ
  • 处理不同长度序列的优势估计不一致问题

Value Pretraining的重要性

论文发现没有价值预训练时,价值估计与实际奖励负相关(图10b),因此:

  1. 先用固定策略采样数据
  2. 训练价值模型至收敛(λ=1.0,蒙特卡洛回报)
  3. 用训练好的价值模型初始化PPO

时间线总结

展开代码
训练前: 价值预训练 (Value Pretraining) ↓ 每个训练迭代: 1. Rollout: 奖励模型评估 → 获得 r_t 2. Advantage计算: 价值模型 V(s) → 计算 Â_t 3. 策略更新: 使用 Â_t 更新 π_θ 4. 价值更新: 使用 r_t 更新 V_θ

关键点: 奖励模型告诉我们"这次做得好不好",价值模型告诉我们"未来还能得到多少",两者协同工作才能有效训练agent。

如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:Dong

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC。本作品采用《知识共享署名-非商业性使用 4.0 国际许可协议》进行许可。您可以在非商业用途下自由转载和修改,但必须注明出处并提供原作者链接。 许可协议。转载请注明出处!