拓冰建站拓冰建站
首页 / 资讯中心 / 正文

GRPO 为什么不用价值网络,却能训出推理模型

GRPO 为什么不用价值网络却能训出推理模型同一道题让模型多答几遍谁好谁坏自己就浮出来了——GRPO 靠这个朴素想法把 PPO 的价值网络整个省掉。一、背景与痛点想让大模型真正学会解数学题、写对代码光靠监督微调常常不够还得用强化学习RL拿答案对不对这个信号去打磨它的推理链。业界最成熟的在线做法是 PPO可 PPO 的显存账单很吓人策略模型、参考模型、奖励模型、价值网络四个模型得同时待在显存里。其中价值网络几乎和策略同量级等于凭空多养一个同样大的网络在十几亿甚至上百亿参数上这笔开销常常直接压垮单机训练。另一条路 DPO 倒是甩掉了奖励模型但它是离线的训练数据覆盖不到的地方它没法主动去试探索能力天生受限。矛盾就摆在这里既想要在线 RL 的探索能力又想把价值网络这笔开销省掉。GRPO 给出的答案很巧妙——基线根本不必学让同一道题的多个回答互相比较就足够了。二、核心原理要弄清 GRPO 省掉了什么得先回到 PPO 的优势估计。优势A t G t − V ( s t ) A_tG_t-V(s_t)At​Gt​−V(st​)里的V VV是基线作用是把回报绝对值这个干扰项扣掉只留下这一步比平均好多少的信号从而降低梯度方差。关键结论是只要基线b bb与动作无关它就不改变策略梯度的期望E [ ( G − b ) ∇ θ log ⁡ π θ ( a ) ] E [ G ∇ θ log ⁡ π θ ( a ) ] . \mathbb{E}\big[(G-b)\nabla_\theta\log\pi_\theta(a)\big]\mathbb{E}\big[G\nabla_\theta\log\pi_\theta(a)\big].E[(G−b)∇θ​logπθ​(a)]E[G∇θ​logπθ​(a)].既然任何与动作无关的量都能当基线那又何必花钱学一个价值网络GRPO 的做法是群体采样。对同一个 promptx xx用当前策略采样一组G GG个回答{ y 1 , … , y G } \{y_1,\dots,y_G\}{y1​,…,yG​}每个回答拿到奖励r i r ( x , y i ) r_ir(x,y_i)ri​r(x,yi​)——奖励既可以来自奖励模型也可以来自确定性的答案校验器。然后计算组内均值与标准差r ˉ 1 G ∑ i 1 G r i , s 1 G ∑ i 1 G ( r i − r ˉ ) 2 . \bar r\frac{1}{G}\sum_{i1}^{G}r_i,\qquad s\sqrt{\frac{1}{G}\sum_{i1}^{G}(r_i-\bar r)^2}.rˉG1​i1∑G​ri​,sG1​i1∑G​(ri​−rˉ)2​.这G GG个回答共享同一个 prompt、同一份难度它们之间的差异恰好把题目难易这个混杂因素剥离掉了留下的就是这条回答本事的相对高低。于是优势直接定义为组内标准化A ^ i r i − r ˉ s ε . \hat A_i\frac{r_i-\bar r}{s\varepsilon}.A^i​sεri​−rˉ​.分母的标准化不能省不同题目的奖励尺度可能相差一个数量级不归一化时梯度会被高方差题目主导除以标准差后每道题贡献的梯度尺度大致相当训练更稳。对语言模型这条序列级的A ^ i \hat A_iA^i​会广播到该回答的每个 token 上正因为同一条回答内所有 token 共享同一个优势逐 token 的价值估计就不需要了价值网络和 GAE 被整体拿掉。GRPO 的优化目标沿用 PPO 的裁剪外壳只把优势换成组内标准化的A ^ i \hat A_iA^i​末尾再加一项相对参考模型的 KL 惩罚J G R P O ( θ ) E [ 1 G ∑ i 1 G 1 ∣ y i ∣ ∑ t 1 ∣ y i ∣ min ⁡ ( ρ i , t A ^ i , c l i p ( ρ i , t , 1 − ϵ , 1 ϵ ) A ^ i ) − β D K L ( π θ ∥ π r e f ) ] , \mathcal J_{\mathrm{GRPO}}(\theta)\mathbb{E}\Big[\frac{1}{G}\sum_{i1}^{G}\frac{1}{|y_i|}\sum_{t1}^{|y_i|}\min\big(\rho_{i,t}\hat A_i,\ \mathrm{clip}(\rho_{i,t},1-\epsilon,1\epsilon)\hat A_i\big)-\beta D_{\mathrm{KL}}\big(\pi_\theta\|\pi_{\mathrm{ref}}\big)\Big],JGRPO​(θ)E[G1​i1∑G​∣yi​∣1​t1∑∣yi​∣​min(ρi,t​A^i​,clip(ρi,t​,1−ϵ,1ϵ)A^i​)−βDKL​(πθ​∥πref​)],其中ρ i , t π θ ( y i , t ∣ ⋅ ) / π θ o l d ( y i , t ∣ ⋅ ) \rho_{i,t}\pi_\theta(y_{i,t}\mid\cdot)/\pi_{\theta_{\mathrm{old}}}(y_{i,t}\mid\cdot)ρi,t​πθ​(yi,t​∣⋅)/πθold​​(yi,t​∣⋅)是 token 级重要性比率。裁剪项保证单步更新不会过猛KL 项把策略拴在参考模型附近防止它为了刷奖励跑出可信分布。把它和 PPO 并排看PPO 四个模型、要训练价值网络、优势逐 token 估计GRPO 三个模型、无价值网络、优势整组估计——显存与工程复杂度显著下降在线探索能力却被完整保留。这正是它撑起推理模型训练的底气。三、代码实战下面这段 numpy 代码在一个玩具序列目标匹配任务上手写 GRPO 并与两种 REINFORCE 基线对照。任务里 6 个 prompt 各对应一条长度 8 的 0/1 目标串策略逐位输出 0/1奖励就是与目标串匹配的位数占比——一个确定性、可验证、无需奖励模型的信号正是 GRPO 最擅长的情形。# -*- coding: utf-8 -*-# 第070期配套numpy 手写 GRPO——去掉价值网络用组内标准化做优势importnumpyasnp rngnp.random.default_rng(3)defsigmoid(z):return1.0/(1.0np.exp(-z))# 1) 玩具可验证任务6 个 prompt各对应一条长度 8 的 0/1 目标串N_PROMPT,L6,8TARGETSrng.integers(0,2,size(N_PROMPT,L))defreward(seqs,pid):# 确定性校验器匹配位数占比returnnp.mean(seqsTARGETS[pid][None,:],axis1)# 2) 策略以 prompt 为条件的逐位 Bernoulli 表classPolicy:def__init__(self):self.thetanp.zeros((N_PROMPT,L,2))# (prompt, 位置, {0,1})defprobs(self,pid):p1sigmoid(self.theta[pid,:,1]-self.theta[pid,:,0])returnnp.stack([1.0-p1,p1],axis1)defsample(self,pid,G):pself.probs(pid)return(rng.random((G,L))p[:,1][None,:]).astype(int)defgrad_logp(self,pid,seqs,adv):pself.probs(pid)gnp.zeros((L,2))forcin(0,1):oh(seqsc).astype(float)g[:,c]np.mean((oh-p[:,c][None,:])*adv[:,None],axis0)returng# 3) 三种优势估计——差别只有一行defadv_none(r):returnr# 无基线defadv_mean(r):returnr-r.mean()# 批内均值基线defadv_grpo(r):return(r-r.mean())/(r.std()1e-8)# 组内标准化主角# 4) 训练并对照G,LR,ITERS16,0.8,900forname,fnin{无基线:adv_none,均值基线:adv_mean,GRPO:adv_grpo}.items():polPolicy();succ[]for_inrange(ITERS):pidint(rng.integers(0,N_PROMPT))seqspol.sample(pid,G)rreward(seqs,pid)pol.theta[pid]LR*pol.grad_logp(pid,seqs,fn(r))succ.append(float(np.mean(r1.0)))print(%-6s 末段完全匹配率 %.3f%(name,np.mean(succ[-60:])))print(GRPO prompt#0 输出1概率:,np.round(pol.probs(0)[:,1],2))运行结果无基线 末段完全匹配率 0.695 均值基线 末段完全匹配率 0.675 GRPO 末段完全匹配率 0.986 GRPO prompt#0 输出1概率: [1. 0. 0. 0. 0. 1. 1. 1.]三个版本的差别只有优势函数那一行其余超参完全一致。无基线与均值基线都卡在 0.68 附近打转而 GRPO 一路爬到 0.986几乎能精确复现目标串输出 1 的概率逼近 0/1 二值。这既是基线降方差的教科书证据也说明组内标准化对可验证任务格外有效。四、关键经验与避坑组大小G GG是核心效率旋钮。G GG太小均值和标准差不稳、优势噪声大G GG太大采样成本线性上涨。实践中常在 8~64 之间取值并随任务难度调整。组内奖励几乎全相同时标准化会失效。当一道题对当前策略全对或全错时s → 0 s\to0s→0优势反被噪声放大。对策是保留s ε s\varepsilonsε下界并直接过滤这类退化的组。是否除以标准差要斟酌。有工作指出纯除以s ss会系统性抬高难题的梯度改为只减均值更稳。任务难度差异极大时值得把两种变体都试一遍。优势在回答内广播时注意长度归一化。整条回答共享一个优势长回答会累积更多梯度是否按 token 数平均对稳定性影响很大。KL 惩罚仍是必须的缰绳。GRPO 保留了相对参考模型的 KL 项防止策略在奖励上钻空子、跑出可信分布。验证器越确定GRPO 越香同时盯住组内奖励分布。奖励来自确定性校验器时组内对比几乎不受奖励模型噪声干扰训练时除了平均奖励还应观察组内方差与全对组/全错组的比例。五、完整系列推荐 本文选自《强化学习详解》100 期系统教程第 070 期GRPO 群体相对策略优化每期配可运行 Python 代码。完整系列100 期正文 3 篇番外每期文章代码已在 ima 知识号【Kruptos】持续更新 69 技术知识库强化学习、计算机视觉、推荐系统、大模型微调、操作系统、AI Agent……几乎覆盖全部软硬件技术栈 8 款 AI 技能系列生产、知识库管理、CMMI 受管开发、自进化 Agent 等已在 ima 技能广场上架即装即用✅ 全部免费订阅后续更新自动推送 订阅方式打开 ima腾讯智能工作台→ 搜索「Kruptos」→ 一键订阅或在 ima 内直接搜索《强化学习详解》。作者Kruptos西电毕业13 年无线通信/DSP/嵌入式科研现深耕 AI 与云原生原创内容转载注明出处。
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门