λLLM Wiki

Value Model

价值模型(Value Model),也称 critic价值函数(Value Function),是 actor-critic 类强化学习算法(尤其是 PPO)的关键组件。它的职责是给出当前状态的期望回报估计 Vπ(s)V^\pi(s),作为 policy gradient 的 baseline 用于降低方差。在 RLHF 场景下,value model 通常与策略 LLM 共享 Transformer 主干、只加一个标量输出头,并从 奖励模型(Reward Model) 初始化。

数学定义

给定策略 π\pi状态价值函数(State-Value Function) 定义为从状态 ss 出发、按策略 π\pi 行动、直至 episode 结束所能获得的期望折扣回报:

Vπ(s)=Eπ[k=0γkrt+k  st=s]V^\pi(s) = \mathbb{E}_\pi\Big[\sum_{k=0}^\infty \gamma^k r_{t+k}\ \Big|\ s_t = s\Big]

与之相关的还有 动作价值函数(Action-Value Function) QπQ^\pi优势函数(Advantage Function) AπA^\pi

Qπ(s,a)=Eπ[k=0γkrt+k  st=s,at=a]Q^\pi(s, a) = \mathbb{E}_\pi\Big[\sum_{k=0}^\infty \gamma^k r_{t+k}\ \Big|\ s_t = s, a_t = a\Big]

Aπ(s,a)=Qπ(s,a)Vπ(s)A^\pi(s, a) = Q^\pi(s, a) - V^\pi(s)

Bellman 关系:

Vπ(s)=Eaπ[r(s,a)+γVπ(s)]V^\pi(s) = \mathbb{E}_{a \sim \pi}[r(s,a) + \gamma V^\pi(s')]

在 PPO 中的角色

PPO 的 policy loss 需要每个时间步的 advantage 估计 A^t\hat{A}_t。理论上 Aπ(st,at)=Qπ(st,at)Vπ(st)A^\pi(s_t, a_t) = Q^\pi(s_t, a_t) - V^\pi(s_t),但 QπQ^\piVπV^\pi 都未知。实践中的做法是:

  1. 训练一个神经网络 Vϕ(s)V_\phi(s) 近似 Vπ(s)V^\pi(s)——这就是 value model。
  2. GAE(Generalized Advantage Estimation)VϕV_\phi 的估计和实际 rollout 的 TD 残差结合起来:

A^t=l=0Tt1(γλ)lδt+l,δt=rt+γVϕ(st+1)Vϕ(st)\hat{A}_t = \sum_{l=0}^{T-t-1}(\gamma\lambda)^l \delta_{t+l},\quad \delta_t = r_t + \gamma V_\phi(s_{t+1}) - V_\phi(s_t)

  1. 同时用回归损失训练 VϕV_\phi

LVF(ϕ)=Et[(Vϕ(st)Vttarg)2]L^{VF}(\phi) = \mathbb{E}_t\Big[\big(V_\phi(s_t) - V_t^\text{targ}\big)^2\Big]

目标 VttargV_t^\text{targ} 通常取 A^t+Vϕold(st)\hat{A}_t + V_\phi^\text{old}(s_t),即 bootstrap 之后的”更好估计”。

详细的 GAE 推导见 policy-gradient-to-ppo-derivation

架构与初始化

在 RLHF 中 value model 通常与 policy 共享 Transformer 主干,仅在最后一层隐藏状态上加一个标量输出头(一层线性层):

Transformer body (shared or copied) → hidden state h_t → linear → V(s_t) ∈ ℝ

初始化:几乎所有主流 RLHF 实现都从训练好的 reward model 初始化 value model——两者架构完全一致,都是 LLM + 标量头,而 reward model 已经学会了”给定一段 response 输出一个标量”。这给 value model 提供了一个远比随机初始化更好的起点。

注意这和 reward model 的职责不同:

  • Reward model 输入完整 response,输出整条 response 的质量分数 r(x,y)r(x, y)(只在末尾 token 给 reward)。
  • Value model 输入 prompt + 任意长度前缀,输出从当前位置到 response 结束时的期望未来 reward V(st)V(s_t),每个 token 位置都有输出。

两者在 RLHF 训练过程中会逐渐分化:reward model 通常固定不动,value model 随 policy 一起更新。

与 Reward Model / ORM 的对比

架构训练目标输出粒度数据分布
Reward Model (Bradley-Terry)LLM + 标量头偏好对对比损失 logσ(rwrl)-\log\sigma(r_w - r_l)序列末尾一个标量离线的人类偏好对
ORM(Outcome RM)LLM + 逐 token 分类头二元 CE,整条 response 共享标签每 token 一个 logit离线的(response, 正确性)对
Value Model / CriticLLM + 标量头平方回归到 GAE 目标每 token 一个标量on-policy rollout,随策略更新

关键区别:reward model 和 ORM 都是离线训练的静态估计器,而 value model 是一个 on-policy 的滚动估计器——它必须跟着 policy 一起演化,因为它学的是”当前策略 πθ\pi_\theta 下”从某状态出发的期望回报。更多对比见 reward-model

显存成本

Value model 与 policy 同规模,这意味着 RLHF 训练时显存里同时存在:

  1. Policy(可训练)
  2. Value model / critic(可训练)
  3. Reward model(冻结,仅前向)
  4. Reference policy(冻结,用于 KL 惩罚)

对 7B 模型,仅 policy + value 的可训练参数就需要约 14B,再加上 Adam 的 mmvv 状态会再翻 4 倍——单是优化器状态就可能需要 56GB。这是 RLHF 训练显存开销的主要来源之一,也是 GRPO 扔掉 critic 的根本动机。

LLM 场景下 value model 为什么难训

在 LLM 的 RLHF 里,reward 通常是 sequence-level 的:只有完整 response 结尾才有非零 reward,中间 token 的 reward 全为 0。这让 value model 面临一个极难的 credit assignment 问题——给定一个不完整的前缀 sts_t,它需要预测”如果策略继续生成到末尾,reward model 会给多少分”。这相当于要求 value model:

  • 理解部分 response 的潜在语义走向;
  • 隐式地”模拟”策略的后续生成;
  • 给出与 reward model 一致的评分。

结果往往是:

  1. 高方差:同一个前缀在不同 rollout 下可能导向极不同的末端 reward,value 估计本质上是对一个多模态分布取期望。
  2. 慢适应:policy 一变化,同一个前缀的期望 reward 就变了,value model 需要追着 policy 跑。
  3. bias 难以衡量:因为没有真实的 VπV^\pi 可以对照,value model 的偏差只能通过 advantage 的噪声间接反映。

GRPO 的观察是:与其让 critic 去近似一个很难的量,不如直接对同一个 prompt 采样一组 response,用组内经验均值作为 Monte Carlo baseline——显存减半,方差还更低。

在 RLHF+PPO 的完整训练循环里,value model 实际是如何参与 rollout、GAE 计算和 loss 合成的——包括一个数值示例展示 GAE 信号沿序列的指数衰减——见 PPO+RLHF 训练循环 walkthrough

实践注意事项

  • Value function clipping:仿照 policy 的 clip,对 value 更新也做一次裁剪 LclipVF=max((VϕVtarg)2,(clip(Vϕ,Voldϵv,Vold+ϵv)Vtarg)2)L^{VF}_\text{clip} = \max\big((V_\phi - V^\text{targ})^2, (\text{clip}(V_\phi, V^\text{old} - \epsilon_v, V^\text{old} + \epsilon_v) - V^\text{targ})^2\big)。实际效果存在争议,有工作指出这一项可能反而有害。
  • Advantage normalization:在 minibatch 级别对 A^t\hat{A}_t 做 z-score 标准化,是 PPO 训练稳定性的关键 trick。
  • Value loss 权重:典型 c1=0.5c_1 = 0.51.01.0,过大会让 value loss 主导梯度从而忽略 policy 梯度。
  • 冻结 reward model,共享 body 与 policy:一些实现让 value head 与 policy 完全共享 Transformer body,只在最后一层加一个额外的线性头;另一些实现完全拷贝一份 body。前者节省显存但会让 policy 梯度与 value 梯度互相干扰,后者更稳定但更贵。
  • KL 项不进入 value target:value model 学的是 “不含 KL 惩罚的真实 reward” 还是 “含 KL 惩罚的 shaped reward”,不同实现取法不同,需要与 advantage 计算保持一致。

参考资料

Comments