资讯动态

PPO与GRPO优势估计对比:为什么GRPO能省掉Critic网络

发布时间:2026/10/22 1:25:04 来源:尧图企业网站定制
1. 从一道面试题说起为什么“砍掉Critic”反而成了加分项如果你最近在准备算法岗面试尤其是大模型对齐、强化学习方向大概率会被问到这样一个问题“PPO里的Critic网络到底在干什么如果把它省掉优势函数还怎么算”这个问题看似只是考概念实际上背后藏着近两年强化学习在大模型训练领域的一次重要范式转变。我第一次被问到的时候脑子里第一反应是“没有Critic怎么估优势”第二反应才是“哦GRPO就是这么干的”。而面试官想听的恰恰是你从第一反应到第二反应之间的那条推理链路。这篇文章就是围绕这条链路展开的。我会把PPO和GRPO在“优势估计”这件事上的分歧彻底拆开讲清楚Critic在PPO里承担了什么角色、为什么它在大模型场景下变得又贵又难训、GRPO用什么办法绕开了它、以及绕开之后优势到底从哪来。适合正在准备面试的算法同学也适合正在做RLHF或推理模型训练、想搞清楚GRPO到底省了什么代价的工程同学。全文不堆公式但关键推导会给到力求让你在面试里能讲出“为什么”而不只是背出“是什么”。先说结论方便你带着框架往下读PPO的优势估计依赖一个学出来的价值网络Critic来提供基线GRPO则用同一组采样回答的组内平均奖励作为基线。前者是“学一个裁判”后者是“让选手互相比”。省掉Critic不是不要基线而是换了一种更便宜、更稳的基线来源。这个替换之所以成立是因为大模型RLHF的奖励结构有一个特殊性质——整条回答通常只在末尾拿到一个标量奖励中间没有密集的即时奖励。这个性质让“组内比较”变得天然合理。面试里如果只答“GRPO去掉了Critic所以更省显存”基本就停在第一层。能讲到“基线从学出来的价值函数变成组内统计量且这个替换依赖稀疏末端奖励结构”才算摸到了第二层。2. PPO里Critic到底在算什么优势函数的基线逻辑2.1 优势函数不是奖励是“比预期好多少”很多人对优势函数Advantage的理解停留在“就是回报减去基线”但面试里更该讲清楚的是优势衡量的是某个动作相对于“在这个状态下平均能拿多少”的超额收益。用大白话说如果我在某个状态下随便做一个动作平均能拿10分而我实际做了动作a拿了15分那动作a的优势就是5如果只拿了8分优势就是-2。策略更新的方向就是让正优势的动作概率上升负优势的动作概率下降。这里的关键在于“平均能拿多少”这个基线怎么来。基线选得好不好直接决定了策略梯度的方差。基线选得准方差小训练稳基线选得离谱方差爆炸策略更新方向全是噪声。PPO选择用一个神经网络Critic来拟合这个基线也就是价值函数V(s)它估计的是“从状态s出发按当前策略走下去期望能拿到的累计回报”。2.2 Critic是一个和策略同步训练的“预测器”Critic的工作机制可以这样理解它和策略网络Actor同时训练Actor负责做动作Critic负责预测这个状态值多少钱。每走一步环境给出真实奖励Critic就根据“预测值”和“实际回报”之间的差距来更新自己用的就是时序差分TD误差。训练久了Critic对各个状态的价值估计越来越准Actor就能用这个越来越准的基线来算优势。问题在于Critic和Actor是一对互相追逐的搭档。Actor的策略一直在变Critic要预测的目标也就一直在变。这就像你让一个人去预测一个不断改变打法的人下一步会出什么牌预测器永远在追永远慢半拍。在传统强化学习任务里状态空间相对固定这个追逐还能收敛但到了大模型场景状态是“prompt已生成的token序列”空间巨大且策略更新剧烈Critic的拟合难度陡增。2.3 大模型场景下Critic的三重代价第一重是显存代价。PPO训练时通常要同时驻留四个模型Actor、Critic、奖励模型Reward Model、参考模型Reference Model。其中Actor和Critic都是和主模型同量级的网络也就是说光这两项就占了两份模型权重的显存。在70B级别模型上这直接决定了你一张卡能不能放下、要不要开一堆并行。第二重是计算代价。Critic每步都要前向预测价值反向更新参数这部分计算量和Actor的前向相当。训练吞吐因此明显下降。第三重也是最容易被忽略的是训练稳定性代价。Critic的估计误差会直接污染优势优势不准策略更新方向就偏。更麻烦的是Critic本身也可能训崩一旦价值估计发散整个训练就废了。很多团队在RLHF里踩过的坑就是奖励涨了一阵突然崩掉回头查发现是Critic的value loss炸了。这里有个面试高频追问“既然Critic这么麻烦为什么不干脆不要基线”答案是不要基线方差太大策略梯度噪声会淹没信号。所以问题不是“要不要基线”而是“能不能换个更便宜的基线”。3. GRPO的破局思路用组内相对奖励替代学出来的价值3.1 同一个prompt采样一组回答让它们互相打分GRPOGroup Relative Policy Optimization的核心操作非常直观对同一个prompt让当前策略采样出G个回答比如G8或16然后用奖励模型给每个回答打分得到一组奖励{r1, r2, ..., rG}。接下来它不去找一个价值网络估计“这个prompt的期望奖励是多少”而是直接用这组奖励的均值作为基线。优势的算法就变成了某个回答的优势 它的奖励减去这组奖励的均值实践中通常还会除以组内标准差做归一化。用公式表达就是A_i (r_i - mean(r)) / std(r)。这个形式你一看就明白它衡量的是“这个回答比同组其他回答好多少”。基线不再是学出来的而是当场算出来的统计量。这个设计之所以成立前提是奖励结构匹配。在大模型RLHF里奖励模型通常对整条回答给一个标量分数也就是说一个回答对应一个奖励不存在中间步骤的即时奖励。这种“稀疏末端奖励”结构下用组内均值做基线是完全合理的——因为同一个prompt下的不同回答面对的是同一个初始状态它们的奖励差异天然就反映了回答质量的相对高低。3.2 省掉Critic之后省下的不只是显存从工程角度看GRPO直接砍掉了Critic网络训练时驻留的模型从四个变成三个Actor、Reward、Reference。显存压力显著下降计算量也少了一块。但更重要的收益在稳定性上没有了Critic就没有了value loss这个可能发散的源头训练过程少了一个需要精细调参的环节。我自己的体会是PPO调参时最头疼的就是Actor和Critic的学习率要分别调两者还得匹配。Critic学太快优势估计会过于自信Critic学太慢优势全是滞后信息。GRPO把这个耦合直接解开了超参空间小了一圈对工程团队来说这是实打实的省心。3.3 组内比较的隐含假设与边界当然组内比较不是没有代价的。它隐含了一个假设同一个prompt下的G个回答奖励的差异主要来自回答质量而不是奖励模型的噪声。如果奖励模型本身噪声很大组内均值也会被噪声带偏。另外G不能太小太小了均值估计不稳G也不能太大太大了采样和推理成本线性上升。实践中G取8到64之间比较常见具体要看任务和算力预算。还有一个容易被忽略的点GRPO的组内比较是“同prompt内”的比较不同prompt之间的奖励尺度差异它是不管的。这在奖励模型输出尺度比较一致时没问题但如果不同prompt的奖励分布差异很大可能需要额外做处理。这一点在面试里如果主动提出来是很加分的深度思考。4. 优势到底从哪来一次完整的数值推演4.1 设定一个具体场景光讲概念容易飘我们用一个具体例子把两种方法的优势计算走一遍。假设某个prompt下当前策略采样了4个回答奖励模型给出的分数分别是r [2.0, 4.0, 6.0, 8.0]。为了简化先不考虑折扣和token级拆分只看回答级的优势。在GRPO下组内均值mean(r) 5.0标准差std(r) ≈ 2.236。那么四个回答的归一化优势分别是A1 (2.0 - 5.0) / 2.236 ≈ -1.34A2 (4.0 - 5.0) / 2.236 ≈ -0.45A3 (6.0 - 5.0) / 2.236 ≈ 0.45A4 (8.0 - 5.0) / 2.236 ≈ 1.34可以看到高于均值的回答拿到正优势低于均值的拿到负优势且优势的绝对值反映了偏离均值的程度。策略更新时回答4的概率会被推高回答1的概率会被压低。4.2 换成PPOCritic要做什么在PPO下要算同样的优势得先有一个Critic估计出这个prompt的状态价值V(s)。假设Critic经过训练估计这个prompt的期望回报是5.0和组内均值恰好一致方便对比。那么优势就是r_i - V(s)得到[-3.0, -1.0, 1.0, 3.0]。注意这里没有除以标准差所以数值尺度和GRPO不同但符号和相对大小是一致的。关键差异在于PPO的这个V(s)5.0是Critic“学”出来的它可能准也可能不准。如果Critic训得不好估计成3.0那优势就变成[-1.0, 1.0, 3.0, 5.0]全部偏正策略会误以为所有回答都不错更新方向就偏了。而GRPO的5.0是当场从这组奖励算出来的不依赖任何学出来的参数只要奖励模型本身靠谱基线就是靠谱的。4.3 为什么这个替换在数学上站得住从策略梯度的角度看优势函数的基线只要满足“与动作无关”这个条件就不会引入偏差只会影响方差。PPO的V(s)是状态相关的基线GRPO的组内均值是“同prompt同组”的基线两者都满足“对同一个状态下所有动作相同”的要求GRPO里同组回答共享同一个prompt基线对组内所有回答一致。所以从无偏性上讲GRPO的基线是合法的。差别在方差上。如果组内均值恰好接近真实的状态价值GRPO的方差和PPO相当如果组内样本数够多组内均值本身就是状态价值的一个蒙特卡洛估计样本越多估计越准。这就是为什么GRPO在G较大时表现稳定——它用采样换掉了学习用统计换掉了拟合。面试里可以这样总结PPO用参数化模型估计基线GRPO用蒙特卡洛采样估计基线。前者偏差小但方差受拟合质量影响后者无偏但方差受组大小影响。选择哪个取决于你的算力更愿意花在“训一个Critic”还是“多采样几个回答”上。5. 面试现场怎么把这个问题答出层次感5.1 第一层说清楚Critic的作用面试官问“省掉Critic后优势从哪来”你首先要证明你知道Critic原本在干嘛。标准答法是Critic估计状态价值函数V(s)作为优势计算的基线优势A 回报 - V(s)作用是降低策略梯度的方差。这一层是基础答不出来后面免谈。5.2 第二层点出GRPO的替代机制接着要讲清楚GRPO的替代方案对同一prompt采样一组回答用组内奖励的均值和标准差做归一化得到相对优势。强调这个基线是“算出来的”而不是“学出来的”所以不需要Critic网络。这一层是核心能答到这里说明你确实了解GRPO。5.3 第三层解释为什么这个替代合理再往深一层要讲清楚这个替代成立的前提大模型RLHF的奖励通常是整条回答一个标量属于稀疏末端奖励同一prompt下的回答共享初始状态组内比较天然合理。同时要能说出代价组大小G影响估计质量奖励模型噪声会被组内均值放大不同prompt之间的奖励尺度差异需要额外处理。这一层是区分“背过”和“想过”的分水岭。5.4 第四层联系工程取舍最高一层是把它放回工程语境省掉Critic省了显存、省了计算、省了调参耦合但增加了采样开销。在算力充足、采样成本可接受的场景下GRPO的性价比更高在采样成本极高或奖励极其稠密的场景下PPO的Critic可能仍有价值。能讲到这一层面试官基本会认为你不仅懂算法还懂落地。6. 工程落地时那些文档不会写的细节6.1 组大小G不是越大越好理论上G越大组内均值越接近真实状态价值优势估计越准。但实际训练里G增大会带来两个问题一是采样和推理成本线性上升二是组内奖励的方差可能被拉大归一化后的优势分布反而更极端。我见过的比较稳的配置是G8到16配合对优势做裁剪clip防止极端优势主导更新。6.2 奖励归一化的尺度要盯紧GRPO用组内标准差做归一化这一步在奖励尺度差异大时要特别小心。如果某个prompt下所有回答奖励都很接近标准差极小归一化会把微小的奖励差异放大成很大的优势导致策略对这些噪声过度反应。实践中可以给标准差加一个极小值epsilon或者对优势做全局裁剪避免数值爆炸。6.3 和KL惩罚的配合GRPO同样需要KL惩罚来约束策略不要偏离参考模型太远。这里有个细节KL项是加在奖励里还是加在损失里会影响优势的计算。如果加在奖励里那组内均值本身就包含了KL的影响优势反映的是“含KL约束后的相对好坏”如果加在损失里优势只反映原始奖励的相对好坏。两种做法都有人用但要在训练前定好别中途换。6.4 采样效率的隐藏成本GRPO省了Critic的前向反向但多了G倍采样。如果你的推理引擎没有做批量化优化G倍采样可能比Critic的计算还贵。所以GRPO的工程收益高度依赖推理侧的吞吐能力。这也是为什么很多团队在推理优化做得好之后才转向GRPO。7. 从PPO到GRPO变的是什么不变的是什么把这件事拉远看PPO到GRPO的变化本质是“基线来源”的变化从参数化价值估计变成蒙特卡洛组内统计。不变的是策略梯度的基本框架——依然是用优势加权更新策略依然需要KL约束依然依赖奖励模型。变的只是那个“参照系”怎么来。这个变化之所以能发生是因为大模型RLHF的任务结构恰好适合组内比较同一prompt、稀疏末端奖励、奖励模型可复用。如果换一个奖励稠密、状态转移复杂的环境组内比较就不一定成立Critic可能还是必需的。所以面试里如果被追问“GRPO能不能用在传统RL任务”正确的回答是“要看奖励结构是否支持组内比较”而不是简单说能或不能。我自己在复现这两种方法时最大的感受是PPO像是一个需要精心调校的双人舞Actor和Critic要配合默契GRPO更像是一群人赛跑谁快谁慢一目了然组织起来简单但对“赛道”奖励模型的公平性要求更高。选哪个取决于你手里有什么资源、面对什么任务。面试里能把这层取舍讲清楚比背十个公式都管用。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑