一、GRPO 的目标函数:完整数学表达式

GRPO 的目标函数参考 PPO 的思想,但使用组内归一化奖励Group-Relative Advantage代替绝对奖励,同时加入策略变动的限制项。

我们回顾一下PPO的reward:
在这里插入图片描述

下面是GRPO算法
在这里插入图片描述

目标函数如下:

L(θ)=Ex∼πθ[min⁡(r(x)⋅Arel(x), clip(r(x),1−ε,1+ε)⋅Arel(x))]−β⋅KL[πθ∥πold] \mathcal{L}(\theta) = \mathbb{E}_{x \sim \pi_\theta} \left[ \min \left( r(x) \cdot A^{\text{rel}}(x), \, \text{clip}(r(x), 1 - \varepsilon, 1 + \varepsilon) \cdot A^{\text{rel}}(x) \right) \right] - \beta \cdot \mathrm{KL}[\pi_\theta \| \pi_{\text{old}}] L(θ)=Exπθ[min(r(x)Arel(x),clip(r(x),1ε,1+ε)Arel(x))]βKL[πθπold]

其中:

  • r(x)=πθ(x)πold(x)r(x) = \frac{\pi_\theta(x)}{\pi_{\text{old}}(x)}r(x)=πold(x)πθ(x):策略比率(policy ratio)
  • Arel(x)=rx−μrσr+δA^{\text{rel}}(x) = \frac{r_x - \mu_r}{\sigma_r + \delta}Arel(x)=σr+δrxμr:组内相对优势(group-relative advantage)
  • KL[πθ∥πold]\mathrm{KL}[\pi_\theta \| \pi_{\text{old}}]KL[πθπold]:KL 散度正则项
  • ε\varepsilonε:裁剪阈值,通常为 0.1 或 0.2
  • β\betaβ:KL 散度惩罚强度
  • δ\deltaδ:小数平滑项,防止除以零

二、各组成部分详细解析


2.1 相对优势 Arel(x)A^{\text{rel}}(x)Arel(x)

对于一个输入 prompt qqq,模型生成 NNN 个样本输出 {x1,x2,…,xN}\{x_1, x_2, \dots, x_N\}{x1,x2,,xN},并为每个输出打分得奖励 {r1,r2,…,rN}\{r_1, r_2, \dots, r_N\}{r1,r2,,rN}

则组内归一化优势计算为:

Arel(xi)=ri−μrσr+δ,其中μr=1N∑j=1Nrj,σr=1N∑j=1N(rj−μr)2 A^{\text{rel}}(x_i) = \frac{r_i - \mu_r}{\sigma_r + \delta}, \quad \text{其中} \quad \mu_r = \frac{1}{N} \sum_{j=1}^N r_j, \quad \sigma_r = \sqrt{\frac{1}{N} \sum_{j=1}^N (r_j - \mu_r)^2} Arel(xi)=σr+δriμr,其中μr=N1j=1Nrj,σr=N1j=1N(rjμr)2

作用:不依赖外部奖励模型,而是仅在组内对表现做排序,抵抗评分偏移与缩放干扰。


2.2 策略比率 r(x)r(x)r(x)

表示新策略生成该输出的概率相较于旧策略的变化:

r(x)=πθ(x)πold(x)=exp⁡(log⁡πθ(x)−log⁡πold(x)) r(x) = \frac{\pi_\theta(x)}{\pi_{\text{old}}(x)} = \exp\left( \log \pi_\theta(x) - \log \pi_{\text{old}}(x) \right) r(x)=πold(x)πθ(x)=exp(logπθ(x)logπold(x))

作用:衡量当前策略对该输出的支持程度变化。


2.3 裁剪函数(Clipping)

裁剪策略比率的变化范围,避免策略剧烈变化,公式:

min⁡(r(x)⋅Arel(x), clip(r(x),1−ε,1+ε)⋅Arel(x)) \min \left( r(x) \cdot A^{\text{rel}}(x), \, \text{clip}(r(x), 1 - \varepsilon, 1 + \varepsilon) \cdot A^{\text{rel}}(x) \right) min(r(x)Arel(x),clip(r(x),1ε,1+ε)Arel(x))

  • 如果 r(x)r(x)r(x) 变化不大于 ε\varepsilonε,使用原始项
  • 如果变化过大,使用裁剪项来限制更新

作用:提高训练稳定性,防止策略崩溃(即新策略偏离旧策略过远)。


2.4 KL 散度正则项

为了进一步防止策略崩坏,引入 KL 散度:

KL[πθ∥πold]=∑xπθ(x)⋅log⁡(πθ(x)πold(x)) \mathrm{KL}[\pi_\theta \| \pi_{\text{old}}] = \sum_{x} \pi_\theta(x) \cdot \log \left( \frac{\pi_\theta(x)}{\pi_{\text{old}}(x)} \right) KL[πθπold]=xπθ(x)log(πold(x)πθ(x))

惩罚策略更新过快的行为,β 控制强度:

最终目标=clipped PPO 目标−β⋅KL 散度 \text{最终目标} = \text{clipped PPO 目标} - \beta \cdot \text{KL 散度} 最终目标=clipped PPO 目标βKL 散度

作用:鼓励保守更新,控制策略漂移。


三、优化过程解析

总结一轮优化流程如下:

  1. 采样输出:对每个 prompt,采样多个输出 xi∼πθx_i \sim \pi_\thetaxiπθ
  2. 打分奖励:基于规则或运行测试,获得 rir_iri
  3. 归一化奖励:计算组内均值/方差,获得 Arel(xi)A^{\text{rel}}(x_i)Arel(xi)
  4. 计算策略比率:对每个样本计算新旧概率比 r(xi)r(x_i)r(xi)
  5. 裁剪 + KL 正则:带入 GRPO 目标函数,求解梯度
  6. 更新策略参数:使用优化器(如 Adam)更新参数 θ

🔍 四、GRPO 与 PPO 的对比简述

在这里插入图片描述
PPO: 策略模型 + 奖励模型 + 价值模型+基准模型

GRPO: 策略模型 + 奖励模型(基线用组平均替代,不需要 Value Model)+基准模型

方面 PPO GRPO
奖励来源 通常需要训练的奖励模型 组内相对评分,无需额外模型
优势函数 通常需要 baseline(如 value 网络) 组内标准化后奖励,直接构造优势
稳定性控制 剪裁策略比率 + KL 散度 相同机制,剪裁 + KL 控制偏移
实用性 更灵活但训练复杂 简洁高效,易于部署

举个栗子🌰

第一阶段:数据构造与策略初始化

1.1 模型初始化

  • 使用预训练模型作为初始策略,例如 DeepSeek-V3-BaseLLaMA-2-13B
  • 用有监督微调(SFT)方式,提前教模型如何按照模板回答数学问题:
<think>这里写推理过程</think><answer>最终答案</answer>

👉 目的:初始化模型时已经能学会“格式感知”式的推理方式。

1.2 Prompt 设定

给定数学题目:

User: 小明用5元钱买了3支铅笔,每支铅笔多少钱?

此时模型作为策略 πθ\pi_{\theta}πθ,会生成多个答案。


第二阶段:采样与评分

✅ 2.1 多样性采样

对每个 Prompt(数学题),采样 K=8∼16K = 8 \sim 16K=816 个推理路径,用温度采样(temperature > 1)或 top-k / nucleus sampling 增强多样性。


✅ 2.2 采样输出示例(共 4 个)

输出编号 模型生成内容
Output 1 5 / 3 = 1.671.67
Output 2 5元买3支,平均每支 1.67 元1.67
Output 3 用除法:5÷3 = 1.671.67
Output 4 3元每支3

✅ 2.3 定义奖励函数(基于规则,无需奖励模型)

我们可以设置如下奖励:

奖励项目 定义 分值规则
准确性奖励 <answer> 是否是 1.67 1(正确) / 0(错误)
格式奖励 是否同时有 <think><answer> 1(完整) / 0(缺失)
推理合理性奖励(可选) <think> 是否使用除法 1 / 0

例如:

输出编号 准确性奖励 格式奖励 合计 r 值
1 1 1 2
2 1 1 2
3 1 1 2
4 0 1 1

第三阶段:计算组内相对优势(核心公式)

✅ 3.1 奖励向量

r=[2,2,2,1] \mathbf{r} = [2, 2, 2, 1] r=[2,2,2,1]

计算均值和标准差:

  • μr=2+2+2+14=1.75\mu_r = \frac{2 + 2 + 2 + 1}{4} = 1.75μr=42+2+2+1=1.75
  • σr=(2−1.75)2×3+(1−1.75)24=0.18751≈0.43\sigma_r = \sqrt{\frac{(2 - 1.75)^2 \times 3 + (1 - 1.75)^2}{4}} = \sqrt{\frac{0.1875}{1}} \approx 0.43σr=4(21.75)2×3+(11.75)2 =10.1875 0.43

✅ 3.2 计算相对优势(归一化奖励)

Airel=ri−μrσr A_i^{\text{rel}} = \frac{r_i - \mu_r}{\sigma_r} Airel=σrriμr

输出编号 r AirelA_i^{\text{rel}}Airel
1 2 (2−1.75)/0.43≈0.58(2 - 1.75)/0.43 ≈ 0.58(21.75)/0.430.58
2 2 ≈ 0.58
3 2 ≈ 0.58
4 1 (1−1.75)/0.43≈−1.74(1 - 1.75)/0.43 ≈ -1.74(11.75)/0.431.74

第四阶段:策略优化(GRPO核心目标函数)

我们用 GRPO 的目标函数优化策略:

✅ 4.1 策略比率计算

假设某个输出 xix_ixi 的新旧策略概率分别为:

  • πθ(xi)=0.01\pi_\theta(x_i) = 0.01πθ(xi)=0.01
  • πold(xi)=0.005\pi_{\text{old}}(x_i) = 0.005πold(xi)=0.005

策略比率:

ri=πθ(xi)πold(xi)=2.0 r_i = \frac{\pi_\theta(x_i)}{\pi_{\text{old}}(x_i)} = 2.0 ri=πold(xi)πθ(xi)=2.0


✅ 4.2 裁剪函数(Clipped Ratio)

clip(ri,1−ε,1+ε),ε=0.2 \text{clip}(r_i, 1-\varepsilon, 1+\varepsilon),\quad \varepsilon = 0.2 clip(ri,1ε,1+ε),ε=0.2

ri=2.0r_i = 2.0ri=2.0,则被裁剪为 1.21.21.2


✅ 4.3 GRPO 目标函数(单个样本)

Li=min⁡(ri⋅Airel,clip(ri)⋅Airel)−β⋅DKL[πθ∣∣πold] \mathcal{L}_i = \min(r_i \cdot A_i^{\text{rel}}, \text{clip}(r_i) \cdot A_i^{\text{rel}}) - \beta \cdot D_{\text{KL}}[\pi_\theta || \pi_{\text{old}}] Li=min(riAirel,clip(ri)Airel)βDKL[πθ∣∣πold]

其中:

  • 优势越大、奖励越高的输出,其 loss 趋于负(表示增加该样本概率)
  • 优势小的样本 loss 趋于正(抑制其概率)

🔁 第五阶段:循环迭代训练

每轮训练流程如下:

  1. 采样 N 个 Prompt,每个采样 8~16 个输出;
  2. 计算规则奖励,得出组内优势;
  3. 计算策略比率并裁剪;
  4. 优化策略模型(如使用 AdamW);
  5. 每若干轮评估模型能力是否进步(准确率/格式合规率)。

PPO与GRPO对比

1. PPO

✅ 核心依赖:
  • 策略模型(Policy):LLM
  • 奖励模型(Reward Model):通常用人类反馈训练
  • 状态价值模型(Value Model / Critic):单独训练的模型,用于估计某个“Prompt”在当前策略下的预期总奖励 V(s)V(s)V(s)
PPO 中 Advantage(优势)的计算:

At=rt−V(st) A_t = r_t - V(s_t) At=rtV(st)

也可以是 GAE 形式:At=A^t=∑l=0∞(γλ)lδt+lA_t = \hat{A}_t = \sum_{l=0}^{\infty} (\gamma \lambda)^l \delta_{t+l}At=A^t=l=0(γλ)lδt+l

-GRPO(Group Relative Policy Optimization):不使用价值模型

2.GRPO

不再需要 Value Function:
  • 不再拟合 V(s)
  • 不再计算 TD 误差;
  • 不再依赖 bootstrapping;
  • 优化目标只基于当前批次中各输出的相对排名

两者Advantage 计算方式对比

项目 PPO GRPO
优势估计 At=rt−V(st)A_t = r_t - V(s_t)At=rtV(st) Ai=ri−μσA_i = \frac{r_i - \mu}{\sigma}Ai=σriμ
是否使用 Critic 模型 ✅ 是 ❌ 否
需要拟合状态值 V(s) ✅ 需要 ❌ 不需要
是否可用于长期奖励估计 ✅ 是 ❌ 否,偏向短期任务(如文本生成)
优势依赖于状态 ✅(V depends on state) ❌(仅与组内 reward 相对关系有关)
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐