简介:本文围绕PPO训练中“已有奖励模型为何仍需引入Critic模型”这一核心问题展开,系统讲解奖励模型与Critic模型的职责差异、优势函数(Advantage)的计算逻辑、Token级别损失函数的构建方法,并给出完整的训练流程、配置要点与常见问题排查方案,帮助强化学习开发者深入理解PPO内部机制并正确落地训练任务。
本文旨在帮助你理解PPO(近端策略优化)训练框架中两个关键组件——奖励模型(Reward Model)与Critic模型(Critic Model)——各自的作用边界与协同方式,弄清“既然已经有了奖励模型,为什么还要额外训练一个Critic模型”这一经典疑问,并掌握优势估计(Advantage Estimation)如何将序列级奖励拆解为Token级训练信号的具体流程。
本教程适用于以下技术场景:
在阅读本文并尝试落地相关训练流程前,建议具备以下基础:
在PPO训练框架中,奖励模型与Critic模型虽然都输出数值信号,但二者的职责有本质区别。
奖励模型(Reward Model)通常是一个经过训练的独立模型,输入一段完整序列或状态-动作对,输出一个标量分数,表示该序列的整体质量。它扮演“最终评审”的角色,类似于一位读者读完小说后给出总评分。这个分数反映了序列是否符合人类偏好、任务目标或业务规则。
Critic模型则不同。它输入的是序列生成过程中的某个中间状态(例如已生成的Token序列前缀),输出的是一个值函数估计——即从当前状态出发,按照当前策略继续生成,预期能够获得的累积回报。Critic模型扮演“过程教练”的角色,类似于一位编辑在写作过程中逐章评估,判断当前章节是否对最终结局有正向贡献。
二者配合的关键联系在于优势函数(Advantage Function)的计算。优势函数表示某个动作(或某个Token)相对于平均水平而言的“额外收益”,其核心估算方式为:当前动作带来的实际回报减去Critic模型预测的期望回报。这个差值就是该动作的“优势值”,它直接决定了策略更新的方向与幅度。
奖励模型的核心局限在于其信号粒度。在典型的大语言模型训练场景中,奖励模型只在序列生成完毕后给出一个总分,并不会对序列中间的每个Token提供独立评分。这种“事后打分”机制导致训练信号稀疏:模型只知道“整段文本得分为80分”,但不知道是第3个词贡献大,还是第7个词拖了后腿。
PPO训练需要的是Token级别的梯度信号。在生成式模型中,策略网络输出的每个Token都对应一个概率分布,而更新这些概率需要知道每个Token的“好坏程度”。如果只有序列级总分,无法直接判断某个Token生成后是应该提升概率还是降低概率。
Critic模型解决了这一矛盾。通过在每一步生成后估算从当前状态到序列结束的期望回报,Critic模型将原本单一的序列级奖励“稀释”为逐步可比的增量信号。例如:
这种“差分式”信号使得策略更新可以精细化到每一个Token,极大提升了训练信号的密度与有效性。
在实际PPO训练中,优势函数通常使用广义优势估计(GAE)技术进行计算。GAE的核心思想是在“偏差”与“方差”之间取得平衡,通过引入一个可调参数(通常记为λ)控制估计的平滑程度。
GAE的计算过程可归纳为以下步骤:
这种做法的优势在于:既充分利用了每一步的实际奖励信号,又借助Critic模型对未来回报的预测消除了部分随机性,使得优势估计更加稳定、可靠。
在PPO中,策略模型的损失函数需要结合优势值进行构建。其基本形式可以理解为:让那些“表现优于预期”的Token生成概率提升,让“表现不如预期”的Token生成概率降低。
具体而言,策略损失可以表示为:
损失 ≈ - log(当前Token的概率) × 优势值
当优势值为正时,损失函数鼓励模型增大该Token的生成概率;当优势值为负时,损失函数促使模型降低该Token的生成概率。同时,PPO还引入裁剪(Clip)机制,限制单次更新的步长,防止策略发生剧烈变化导致训练不稳定。
Critic模型的损失则独立计算,通常采用值函数预测值与实际折扣回报之间的均方误差(MSE)。Critic模型的训练目标就是提高对“未来期望回报”的预测精度,从而为策略更新提供更准确的优势基准。
需要特别指出的是,即使奖励模型能够为每个Token输出独立的密集奖励分数,Critic模型依然不可替代。原因在于二者的信息维度不同:
举个例子,一个单词单独看可能很优美,但放在当前语境中可能导致后续生成的逻辑断裂。此时奖励模型可能给出高分,但Critic模型会捕捉到这种“负面前景”,从而给出较低的未来回报预测。这种“过程性预判”能力是奖励模型所不具备的,也是强化学习解决“延迟回报”问题的核心机制。
奖励模型需要在训练前独立完成。你需要准备一批人工标注的偏好数据,例如同一提示词下的多个候选回复,标注者对这些回复进行排序或评分。奖励模型通过学习这些数据,掌握“什么样的输出更受偏好”的规律。
策略模型通常从已经过监督微调的模型权重开始初始化。Critic模型可以基于策略模型的隐藏层状态构建,也可以在策略模型之上附加一个价值输出头(Value Head)。确保Critic模型与策略模型共享特征提取层,但输出维度不同——策略模型输出词表概率分布,Critic模型输出一个标量值。
在训练循环中,使用当前策略模型生成一批文本序列,并记录每个Token对应的概率、状态信息。序列生成完毕后,调用奖励模型为每个序列计算总分。
将每一步的中间状态输入Critic模型,得到对应的值函数预测。这些预测值将用于计算优势估计。
使用GAE方法,结合实际奖励、Critic预测值以及折扣因子,计算出每个Token的优势值。优势值的正负决定了该Token在后续更新中的优化方向。
根据优势值计算策略损失与值函数损失,并进行反向传播更新。注意需要同时更新策略模型与Critic模型,但二者的优化目标不同,需分别设置学习率与损失权重。
在实际训练过程中,以下参数对模型性能影响显著:
训练完成后,可通过以下方式验证效果:
本文围绕“PPO已有奖励模型为何还需要Critic模型”这一核心问题,从信号粒度、优势计算、Token级损失构建等多个角度展开,详细说明了Critic模型在PPO训练中的必要性。理解这一机制,有助于你设计更稳定、更高效的强化学习训练流程,也为后续探索更复杂的奖励建模与优势估计方法打下基础。