介绍
DeepSeek-R1是一个开源的大型语言模型,其复杂推理能力可与顶级专有系统相媲美。它的秘密武器是什么?一种名为组相对策略优化(GRPO)的新型强化学习(RL)算法。DeepSeek-R1不依赖于通常的监督微调(SFT)和大量人工反馈的流程,而是利用GRPO来增强推理能力,无需庞大的价值网络或大规模的人工标注。
GRPO方程的概述
从根本上讲,组相对策略优化(GRPO)的工作原理如下:
采样输出:对于每个问题(或提示)q,模型抽取一组候选输出。
通过从其当前(或“旧”)策略中进行采样。
评分:然后,奖励函数对每个输出进行评分,生成奖励:
基准与优势:组内的平均奖励作为基准,每个输出的优势是其奖励与基准的偏差程度,通过组的标准差进行归一化。
从数学上讲,GRPO的目标是通过以下方式最大化高于基准输出的概率,同时保持更新的稳定性:
正式地,我们可以将GRPO损失写为:
为何它有效
通过将每个样本与组内的其他样本进行比较,模型实现了“自我竞争”——超过组平均值的输出获得正优势,而低于平均值的输出则受到抑制。这种基于局部的、样本的基准消除了对单独价值函数的需求(不同于经典的行动者-评论家方法)。相反,组的平均奖励作为该提示预期性能的经验估计。
关键组件
基于组的优势估计:
GRPO不使用学习得到的评论家来获取优势(例如,广义优势估计,GAE),而是纯粹根据组的平均奖励来计算优势。输出i的优势为:
该输出中的所有标记共享相同的优势(对于基于结果的奖励,如“正确与错误”,这非常方便)。
这确保了优势值大致处于相同的尺度上,无论绝对奖励的大小如何。直观地讲,每个输出的奖励都是相对于其同伴来判断的:优于组平均值的输出获得正优势,差于平均值的则获得负优势。在基于结果的奖励的最简单情况下(当仅给出整个输出的最终分数时,优势统一应用于整个序列),该输出中的所有标记都被赋予相同的优势值。由于模型是与自己竞争,因此它因超出自己的预期得分(平均值)而获得奖励,因表现不佳而受到惩罚,这提供了一种自动课程形式,鼓励每次迭代都在模型当前能力的基础上有所提高。
GRPO中的基于组的优势估计:对于给定的问题,模型的当前策略生成多个答案(输出1、2、3)。奖励函数对每个答案进行评分(例如,准确性或简洁性)。基准是组的平均奖励(红色虚线)。每个答案的优势是其奖励减去这个基准(显示在每个条形图上方)。在实际操作中,这个差值会通过组的标准差进行归一化。在这里,输出1的得分高于平均值,因此具有正优势(+1.0),输出2低于平均值(–1.0),输出3接近基准值(~0)。GRPO将更新策略,以增加优势较高的响应的概率,同时降低低于基准值的响应的概率。*
不需要价值函数还带来了一个优势,即训练模型所需的训练资源显著减少。
深入推导
与策略梯度定理的关系
在经典的策略梯度理论(Sutton & Barto,Williams的REINFORCE等)中,我们有:
其中τ是一条轨迹(或在大型语言模型(LLM)上下文中的输出),A(τ)是优势。关键的是,优势可以写成A(τ)=Q(τ) — b,其中b是某个基准。如果奖励仅在轨迹结束时分配,那么Q(τ)就是该终端奖励。
在GRPO中,我们使用基于组的基准,这实际上是组的平均奖励:
因此
如果我们还除以组的奖励标准差,这只是增加了一个常数比例因子(减少方差而不影响无偏性)。因此,从理论角度来看,GRPO可以被视为标准策略梯度加上一个基于局部样本的基准(组均值)。
为何要减去组均值?
数学上,减少REINFORCE中方差的标准方法是减去任何基准函数b(s)。GRPO中的组均值方法基本上是对最优常数基准的基于样本的近似:
这实际上是该提示下旧策略的预期奖励。不同之处在于,我们是按每个小批量、每个提示来做的,这更加有针对性。我们不是使用所有可能提示的全局平均值,而是计算该组的局部平均值:
这种局部方法:
标记级别与序列级别的处理
通常,该方程被写成标记的总和:
但请注意,A_hat 对于输出 i 中的所有 token 都是恒定的,因为奖励只在最后给出。这意味着每个 token 都看到相同的优势。术语 ri,t(通常表示概率比或部分目标术语)可能因 token 而异。因此,我们实际上是通过相同的优势缩放每个 token 的梯度。对 token 求和并对组进行平均可得出:
如果我们展开梯度,就会得到:
“min(…)”部分与PPO的逻辑相同——一旦比率超出[1−ϵ,1+ϵ]的范围,该部分的更新就会被裁剪(忽略),从而防止过大的更新。在实践中,像PyTorch的“按值裁剪”函数或分段掩码这样的框架实现了这一逻辑。
关键超参数的敏感性
组大小(G)
定义与原理
组大小(G)——每个查询采样的输出数量——对GRPO中的学习信号有重大影响。较大的G能提供更可靠的基准奖励估计,因为对更多样本进行平均能更好地近似该查询的预期奖励。这种“基于组的基准”通过“平滑”输出之间的随机性来降低优势估计的方差。
随着G的增加,策略梯度的方差减小(因为减去预期奖励的良好估计是策略梯度中众所周知的方差减小技术),从而提高了训练的稳定性。有了更稳定的梯度,策略可以安全地采取更大的更新步长而不会发散,这可能加快每次迭代的收敛速度(达到给定性能所需的迭代次数减少)。
为何有效
如果奖励值的方差为σ²,使用组均值作为基准大约可以去除1/G的方差。因此,优势中剩余的方差比例大约为(1−1/G)(假设样本独立同分布)。方差较低意味着梯度估计更可靠——有助于策略稳步改进,而不是因噪声而波动。这就是为什么上图中曲线随着G的增大而趋近于1.0的原因——我们无法完全去除所有方差,但较大的组在渐近上能匹配理想基准的性能。优势估计的方差较低意味着梯度更新更可靠,有助于策略稳步改进,而不是因噪声而波动。从经验来看,较大G带来的这种稳定性可以导致每训练一步奖励分数的更快提升。另一方面,如果G太小,学习信号可能会被噪声淹没——策略可能需要许多更新(或较小的学习率)来平均掉随机性,从而减慢收敛速度。总之,增加G可以通过平均掉随机性来增强学习信号,从而获得方差更低的优势以及更稳定、更快的收敛,直到计算成本超过收益。
KL惩罚系数(β)
作用
KL惩罚系数β控制GRPO对新策略与参考策略(通常是预训练模型)之间差异性的惩罚力度。它有效地调整了探索(奖励最大化)与保持接近参考分布之间的权衡。较大的β意味着对改变策略的惩罚更强,导致更新非常保守:策略将保持在参考模型附近,每步漂移最小。这种高β状态提高了训练稳定性——它防止模型过度追求奖励信号,以至于过度扭曲其语言输出分布。在RLHF环境中,已知强KL惩罚可以限制策略漂移,保持基础模型的流畅行为,并避免模型通过产生奇怪输出来“黑入”奖励。然而,如果β设置得过高,策略可能会欠优化奖励——基本上被束缚在初始策略上。在这种情况下,学习可能会停滞,因为策略不会偏离到足以显著提高奖励分数。
相反,较小的β削弱了KL正则化,允许策略为了获得奖励而进一步偏离参考。这最初可以加快奖励的改进速度,因为模型更自由地利用奖励模型。但如果β太低(或为零),训练可能会变得不稳定:策略可能会漂移得太远,以至于过拟合代理奖励,并开始生成分布外或低质量的输出(一种奖励黑入的形式)。因此,低β存在大策略更新的风险,这会降低模型的一般语言质量——这正是KL惩罚旨在防止的。在实践中,人们寻求一个平衡点:适度的β允许有意义的策略改进,同时将策略保持在原始模型的“信任区域”内。从经验来看,RLHF实现通常调整β以针对每步或每集合目标一定的KL散度(确保模型不会漂移得太快)。例如,DeepSeek-Math实验固定β=0.04,这是一个相对较小的惩罚——足以温和地正则化策略,但不足以阻止提高准确性。如果他们使用了显著更大的β,模型可能会更接近其初始行为,且收益较小;如果使用小得多的β,模型可能会快速获得更高的奖励,但代价是不稳定或失去通用性。
在GRPO(Group Relative Policy Optimization,组相对策略优化)训练中,直接调整β会影响策略更新的规模和稳定性。每次策略更新都试图最大化奖励优势减去β。如果β较大,优化器将只允许较小的变化(以避免较大的KL项),从而导致每次迭代的策略变化很小(高稳定性,低漂移)。如果β较小,优化器可以更积极地推动pi_theta(策略参数化的表示)以增加奖励,而较少考虑KL散度,这可能导致每次更新时策略偏离更多。从控制的角度来看,β在分布空间中起着步长调节器的作用——类似于学习率,但专门用于KL距离。研究人员已经注意到,包含KL惩罚对于RLHF(强化学习与人类反馈)保持预训练模型的对齐是至关重要的;如果没有它,可能会发生“从基础模型的漂移”,从而降低性能。因此,β通常会被调整以确保新策略和参考策略之间的KL散度保持在合理范围内。总之,增加β会使训练更安全、更稳定(防止过度策略偏移),但β过高可能会减慢或阻止学习,而降低β则鼓励探索和奖励优化,但存在不稳定和漂移的风险。最优的β可以在策略有效提高奖励的同时,通过KL惩罚温和地引导它,避免无限制优化的缺陷,从而实现平衡。
二阶优化和几何视角
与信任区域策略优化(TRPO)的联系
组相对策略优化可以被视为一种信任区域风格策略更新的近似,很像TRPO。回顾一下,TRPO选择最大化优势的策略更新,同时受到与旧策略KL散度约束的限制。在实践中,TRPO通过解决一个约束优化问题(通常通过拉格朗日乘子)来确保新策略不会离旧策略太远。PPO(近端策略优化)最初是作为TRPO的一阶近似而推导出来的,使用KL惩罚或裁剪来以更简单的方式强制执行信任区域约束。GRPO继承了这一理念:它使用PPO风格的裁剪目标来防止任何给定概率比率的更新过大,并且它在目标中显式地包含了KL散度项。这个KL项的作用类似于TRPO中的约束,作为惩罚大策略变动的正则化项。实际上,如果我们将β解释为拉格朗日乘子,那么GRPO就是在优化一个拉格朗日函数:
锚定策略
在DeepSeek-R1中,参考策略πref通常是初始的预训练模型,并保持固定。因此,每次更新步骤都受到限制,因为偏离πref太远会触发较大的KL惩罚。这在起点周围创建了一个信任区域(而不是围绕前一次迭代),在参数空间中局部约束策略,并通过小而安全的步骤帮助确保单调改进。
将GRPO视为在底层执行类似TRPO的更新是很有启发性的。PPO的裁剪机制已经在迭代过程中保持pi_theta接近pi_old,而添加KL正则化项进一步确保pi_theta不会过度偏离pi_ref。我们可以说GRPO在一个由裁剪和KL惩罚共同定义的隐式信任区域内操作。值得注意的是,如果每次迭代后逐渐将pi_ref更新为pi_old(使参考策略成为像旧策略一样的移动目标),GRPO本质上将回归到带有KL惩罚的标准PPO形式——这是TRPO的已知代理。在这两种情况下,包含KL项意味着GRPO意识到每次更新在分布空间中移动的“距离”,而不仅仅是盲目地跟随参数空间中的梯度。这正是TRPO的原则:即使参数变化看起来很大,也可以确保策略分布的小变化,因为策略网络可能处于参数空间中非常敏感的部分。PPO/GRPO的机制通过测量概率比和KL的变化来处理这一点。从经验上看,这与TRPO产生了相同的益处——即训练稳定性和单调改进。性能突然下降是策略更新过大的迹象;GRPO的裁剪目标和KL项旨在避免这种情况,就像TRPO通过永不离开信任区域来做到这一点一样。因此,我们可以将GRPO视为针对大型语言模型(LLM)训练量身定制的近似TRPO:它实现了类似的信任区域效果(策略约束和逐步改进),但实现更简单,省去了单独的价值函数,并利用基于组的优势来提高效率。
费舍尔信息矩阵的联系
理解GRPO的KL惩罚为何具有二阶益处的一个有用方法是通过费舍尔信息矩阵(FIM)。在参考策略π_ref附近,KL散度的海森矩阵(相对于参数)正是费舍尔矩阵。形式上,如果我们考虑:
那么在 θ≈θref 时,
简单来说,那些显著改变词元概率的方向会导致较大的费舍尔曲率,因此KL项会强烈惩罚这些方向。
这反映了自然梯度方法背后的思想:更新不是在原始参数空间中进行的,而是相对于概率流形的几何结构进行的。具体来说,策略更新Δθ通过F^{-1}进行调整,其中F是费舍尔矩阵。这样得到的步骤更加稳定、对参数化不变,并且不易于产生破坏性的过拟合——这正是像TRPO(以及扩展而来的GRPO)这样的信任区域算法所追求的目标。
关于几何的简短说明
从黎曼几何的角度来看,GRPO的KL惩罚也有更深的解释,其中KL散度在策略空间上定义了一个局部度量。这实际上使得GRPO的更新近似于自然梯度。
结论:为什么GRPO的额外数学运算很重要
深入探究组相对策略优化(GRPO)背后的数学原理,会发现它是经典REINFORCE或PPO框架的自然扩展,并带有几个关键转折:
基于组的优势
消除了对学习评论员(critic)的需求,因为模型直接将其输出与局部基线(组的平均奖励)进行比较。
通过归一化减少方差
通过在每个组内归一化优势,GRPO比基于原始奖励的方法实现了更稳定的梯度。
裁剪与KL惩罚
双重保障:裁剪限制了过大的概率比更新,而KL项将策略锚定到参考分布——有助于防止奖励黑客攻击和灾难性漂移。
二阶意识
惩罚KL散度直接与自然梯度原理和信任区域思想(如TRPO)相关联。这种考虑几何特性的视角进一步稳定了训练,尤其是对于大型语言模型。
实际上,GRPO的表现就像“带有局部计算的组基线的PPO”,而不是学习价值函数。这种基于组的基线对于大型语言模型任务尤其强大,因为在这些任务中,最终奖励(例如,正确与错误答案)相当容易衡量。结果是训练更稳定、方差减少显著,并且无需维护庞大的评论员——所有这些都使得GRPO成为微调大型语言模型的实用且高效的选择。