这个问题还挺典型的,感觉很多人学到这里都会有这个疑问。
RM 和 Critic 的功能看上去有点像,都是对「好坏」进行评估,但实际上它们各有各的用处。在你问题中(特指的 LLM 领域的 PPO 算法),你指出它们评价的「粒度」不同,但这不够本质。就像你说的,RM 也可以对单步进行奖励,Critic 也完全可以对完整 response 进行评价。
实际上,这个问题要回归到一个更通用的 RL 框架中去理解。
一、RM 其实扮演的是「环境」
我们先不带入 LLM 中的应用,而是回归到经典 RL 中 PPO 的标准用法。一个典型的 PPO 算法流程是这样的:
%% PPO算法核心流程示意图
flowchart TD
subgraph "PPO Algorithm"
A["Actor<br>(Policy Network)"] -->|"生成动作分布<br>π(a|s)"| B["Environment"]
B -->|"状态 s,<br>即时奖励 r"| C["Critic<br>(Value Network)"]
C -->|"预测状态价值<br>V(s)"| D["Advantage<br>Calculation"]
B -->|"状态转移<br>s → s'"| A
D -->|"优势值<br>A = r + γV(s') - V(s)"| E["Policy Optimization"]
E -->|"更新策略<br>最大化 PPO-Clip 目标"| A
E -->|"更新价值函数<br>最小化 MSE(V(s), target)"| C
end
style A fill:#f9d5e5,stroke:#c2185b
style C fill:#e3f2fd,stroke:#1976d2
style B fill:#e8f5e9,stroke:#388e3c
style D fill:#fff3e0,stroke:#fb8c00
style E fill:#fce4ec,stroke:#7b1fa2
你可能会有疑问,RM 哪里去了?其实,这里「环境」就是 RM,它负责建模智能体外部的世界,给出「奖励信号」。
而在 LLM 应用环境中,我们应用 PPO 算法,是把 LLM 当成智能体,但什么是环境呢?似乎不像下围棋、玩游戏这种传统 RL 场景中那样容易定义,奖励从何而来呢?那我们就训练一个 RM 来充当这样角色,它最主要的目标就是给 LLM 这个智能体以 「奖励信号」,这个奖励代表了 LLM 的决策(输出响应)有多符合人类的期望或偏好。
注意,这里的 RM 是 LLM 的 「
二、Critic 是智能体的一部分
而 Critic 是 LLM 这个智能体的「
如果你对 Actor-Critic 这个经典的 RL 框架有所了解,那就很容易理解了,PPO 就是采用了 Actor-Critic 框架的一种算法,其中 Critic 的作用就是计算 优势函数 (Advantage Function)
所以,品出点端倪了没有?
RM 是 外部的奖励信号,是外部环境给与智能体的真实响应——虽然在 LLM 的这个场景里,我们没有特别准确的外部环境建模,退而求其次用另一个训练好的 RM 模型来代替了——而 Critic 是智能体内心对自己答案的评价。
打个不准确的比方,你做一套卷子,Critic 是你自己检查自己的答案,给出的自我评价;而 RM 是老师用标准答案给你打分。
三、不要 Critic 行不行?
这样看来,你可能会问,不要 Critic 是不是也行?无非就是我自己「莽」一点,自己不评估自己的答案,反正 RM(环境)会给我反馈,牵引我改进。
确实可以,其实在 Actor-Critic 框架之前,RL 算法就是这样的,不要「基线」了而已。代价就是方差比较大,训练不稳定。
既然已经聊到这里了,那就不妨再多说几句。近来 LLM 领域的 RL 后训练里,会经常使用一种叫做 GRPO 的算法,是对 PPO 的一个改良。它其实是通过另一种更简单的「估算基线」的方法,取代了 Critic:就是采样多次,用 RM 评价的平均值来充当这个「基线」。
四、总结
Critic 不是提供额外的奖励来源,而是通过学习预测未来的期望回报,提供了一个动态的基准,用来校准 RM 提供的原始奖励信号,生成更稳定、信息量更大的 Advantage 信号,从而稳定并加速 PPO 的训练。
%% PPO中RM与Critic的关系图解
flowchart TB
subgraph "外部环境"
E["Reward Model<br>(RM)"] -->|"提供<br>即时奖励 r"| PPO
end
subgraph "PPO智能体"
A["Actor<br>(策略网络)"] -->|"生成动作<br>π(a|s)"| E
C["Critic<br>(价值网络)"] -->|"预测<br>V(s)=E[∑γr]"| D["优势计算<br>A=r+γV(s')-V(s)"]
D -->|"优化信号"| O["策略优化<br>(PPO-Clip)"]
O -->|"更新"| A
O -->|"更新"| C
end
style E fill:#e8f5e9,stroke:#388e3c
style A fill:#f9d5e5,stroke:#c2185b
style C fill:#e3f2fd,stroke:#1976d2
style D fill:#fff3e0,stroke:#fb8c00
style O fill:#fce4ec,stroke:#7b1fa2
%% 关键说明
T1["「RM」= 老师打分<br>外部奖励信号"] -.- E
T2["「Critic」= 自我检查<br>未来收益预测器"] -.- C
T3["核心区别:<br>• RM是环境组件<br>• Critic是智能体组件"] --- O