GRPO in DeepSeekMath
GRPO 通过在生成组内进行比较来直接评估模型生成的响应,以优化策略模型,而不是训练单独的价值模型,这种方法显著降低了计算成本。GRPO 可以应用于任何可以确定响应正确性的可验证任务。例如,在数学推理中,可以通过将响应与基本事实进行比较来轻松验证响应的正确性。
The GRPO Algorithm
Step 1: Group Sampling
第一步是为每个问题生成多个可能的答案。这会产生一组可以相互比较的多样化输出。
- q q q : question
- G G G : group size
- π θ o l d \pi_{\theta_{old}} πθold : trained model(policy)
- { o 1 , o 2 , o 3 , . . . , o G ; π θ o l d } \{o_1, o_2, o_3, ... , o_G;\pi_{\theta_{old}}\} {o1,o2,o3,...,oG;πθold} : group outputs
Step 2: Advantage Calculation
一旦我们有多个响应(output),我们就需要一种方法来确定哪些响应比其他响应更好,这就是优势计算。
-
首先为每个响应输出分配一个奖励分数,可以使用奖励模型也可以使用奖励函数。例如:为每一个正确的输出分配一个奖励分数 1,错误的输出分配一个奖励 0。
-
优势计算:
A i = r i − mean ( { r 1 , r 2 , . . . , r G } ) std ( { r 1 , r 2 , . . . , r G } ) A_i = \frac{r_i - \text{mean}(\{r_1, r_2, ..., r_G\})}{\text{std}(\{r_1, r_2, ..., r_G\})} Ai=std({r1,r2,...,rG})ri−mean({r1,r2,...,rG})
Step 3: Policy Update
J G R P O ( θ ) = [ 1 G ∑ i = 1 G min ( π θ ( o i ∣ q ) π θ o l d ( o i ∣ q ) A i , clip ( π θ ( o i ∣ q ) π θ o l d ( o i ∣ q ) , 1 − ϵ , 1 + ϵ ) A i ) ] − β D K L ( π θ , π r e f ) J_{GRPO}(\theta) = \Big[\frac{1}{G}\sum_{i=1}^G \text{min}\Big(\frac{\pi_{\theta}(o_i|q)}{\pi_{\theta_{old}}(o_i|q)} A_i,\text{clip}\big(\frac{\pi_{\theta}(o_i|q)}{\pi_{\theta_{old}}(o_i|q)}, 1-\epsilon, 1+\epsilon\big)A_i\Big)\Big] - \beta D_{KL}(\pi_{\theta},\pi_{ref}) JGRPO(θ)=[G1i=1∑Gmin(πθold(oi∣q)πθ(oi∣q)Ai,clip(πθold(oi∣q)πθ(oi∣q),1−ϵ,1+ϵ)Ai)]−βDKL(πθ,πref)
- π θ ( o i ∣ q ) π θ o l d ( o i ∣ q ) \frac{\pi_{\theta}(o_i|q)}{\pi_{\theta_{old}}(o_i|q)} πθold(oi∣q)πθ(oi∣q) : Probability Ratio,比较了新模型的响应概率与旧模型的响应概率的差异程度,同时纳入了对改善预期结果的响应的偏好,这个比率使我们能够控制模型在每个步骤中的变化量。
- clip ( π θ ( o i ∣ q ) π θ o l d ( o i ∣ q ) , 1 − ϵ , 1 + ϵ ) \text{clip}\big(\frac{\pi_{\theta}(o_i|q)}{\pi_{\theta_{old}}(o_i|q)}, 1-\epsilon, 1+\epsilon\big) clip(πθold(oi∣q)πθ(oi∣q),1−ϵ,1+ϵ) : Clip Function,将上述比率限制为[1−ε,1+ε][1−ε.1+ε]以避免剧烈的变化/更新,以及远离旧的模型。换句话说,它限制了概率比可以增加的程度,通过避免将新模型推得太远的更新来帮助保持稳定性。
- β D K L ( π θ , π r e f ) = ∑ x ∈ X P ( x ) log P ( x ) Q ( x ) \beta D_{KL}(\pi_{\theta},\pi_{ref}) = \sum_{x\in X} P(x)\text{log}\frac{P(x)}{Q(x)} βDKL(πθ,πref)=∑x∈XP(x)logQ(x)P(x) : KL Divergence,KL 散度被最小化,以防止模型在优化过程中偏离其原始行为太远。这有助于在根据奖励信号提高性能和保持连贯性之间取得平衡。在这种情况下,最小化 KL 散度可以降低模型生成无意义文本的风险,或者在数学推理的情况下,产生极其错误答案的风险。
- β \beta β : 控制 KL 散度约束的强度:
- higher β \beta β : 模型更新限制更多,模型的输出仍然接近参考模型分布,难以探索更好的响应。
- lower β \beta β : 更自由的更新,存在不稳定风险,生成无意义的输出,可能会出现
reward-hacking
行为。 - Original β \beta β : 0.04(DeepSeekMath)
GRPO Example
问题: Q : Calculate 2 + 2 × 6 Q : \text{Calculate} 2 + 2 \times 6 Q:Calculate2+2×6, A = 14 A = 14 A=14
Step 1: Group Sampling
G = 8 G = 8 G=8 , O = { o 1 : 14 , o 2 : 13 , o 3 : 11 , o 4 : 14 , o 5 : 14 , o 6 : 15 , o 7 : 14 , o 8 : 10 } O = \{o_1:14, o_2:13, o_3:11, o_4:14, o_5:14, o_6:15, o_7:14, o_8:10\} O={o1:14,o2:13,o3:11,o4:14,o5:14,o6:15,o7:14,o8:10}
Step 2: Advantage Calculation
R = { r 1 = 1 , r 2 = 0 , r 3 = 0 , r 4 = 1 , r 5 = 1 , r 6 = 0 , r 7 = 1 , r 8 = 0 } R = \{r_1 = 1, r_2 = 0, r_3 = 0, r_4 = 1, r_5 = 1, r_6=0, r_7=1, r_8 =0 \} R={r1=1,r2=0,r3=0,r4=1,r5=1,r6=0,r7=1,r8=0}
Statistic | Value |
---|---|
Group Average | m e a n ( r i ) = 0.5 mean(r_i)=0.5 mean(ri)=0.5 |
Standard Deviation | s t d ( r i ) = 0.53 std(r_i)=0.53 std(ri)=0.53 |
Advantage Value (Correct response) | A i = 1 − 0.5 0.53 = 0.94 A_i=\frac{1−0.5}{0.53}=0.94 Ai=0.531−0.5=0.94 |
Advantage Value (Wrong response) | A i = 0 − 0.5 0.53 = − 0.94 A_i=\frac{0−0.5}{0.53}=−0.94 Ai=0.530−0.5=−0.94 |
Step 3: Policy Update
假设: π θ o l d = 0.5 \pi_{\theta_{old}} = 0.5 πθold=0.5, π θ = 0.7 \pi_\theta = 0.7 πθ=0.7 , ϵ = 0.2 \epsilon = 0.2 ϵ=0.2
Probability Ratio = 0.7 0.5 = 1.4 after Clip → 1.2 \text{Probability Ratio} = \frac{0.7}{0.5} = 1.4 \text{ after Clip } \to 1.2 Probability Ratio=0.50.7=1.4 after Clip →1.2
Summary
GRPO对于数学推理任务特别强大,因为在数学推理任务中,正确性可以得到客观验证。与需要单独奖励:模型的传统 RLHF 方法相比,GRPO 方法允许更高效的训练。
- GRPO 比较一组内的多个输出,以确定哪些输出比其他输出更好,而无需单独的价值模型。
- 优势计算对奖励进行标准化,以确定哪些响应高于或低于平均水平。
- 策略更新使用带有 KL 发散惩罚的裁剪目标函数来确保稳定学习。