Jingh's Blog
返回首页

GRPO 及其变体

GRPO 去掉 Critic,用组相对优势估计优势函数。

2026-07-27·— 阅读·RL

PPO 的问题

PPO 在计算 Actor Loss 时需要 4 个模型(Actor、Critic、Reference、Reward),显存占用大、累积误差多。

GRPO

去掉 Critic,对同一个问题 qqπθold\pi_{\theta_{old}} 采样一组输出 o1,o2,,oGo_1, o_2, \dots, o_G,Reward Model 给出奖励值,然后估计优势函数:

A^i,t=rimean(r)std(r)\hat{A}_{i,t} = \frac{r_i - \text{mean}(\mathbf{r})}{\text{std}(\mathbf{r})}

简单理解:当前第 ii 个输出的奖励 rir_i 比所有输出奖励平均值高出多少(可为负)。

import torch

def group_relative_advantage(rewards: torch.Tensor) -> torch.Tensor:
    # rewards shape: [G]
    mean = rewards.mean()
    std = rewards.std() + 1e-8
    return (rewards - mean) / std

注意:GRPO 不像 PPO 那样用 Critic、TD 误差和 GAE 把奖励向前传播,而是把同一个 Response 的优势赋给所有 token。