仅用于站内搜索,没有排版格式,具体信息请跳转上方微信公众号内链接
来源|知乎
在强化学习(RL)中,如果我们只知道“做对了能拿多少分”,那往往还不够,因为单纯追求高分可能带来种种副作用,比如过度搜索、模型不稳定、甚至“走捷径”而偏离合理范围。
为了把这些概念讲得更生动,我们不妨打个比方:把RL模型的训练过程想象成小学里的考试场景。
我们(被训练的模型)就像努力考高分的学生,发奖品的人则像Critic或者其他调控机制。
接下来就让我们循序渐进地看看,为什么只靠最终成绩是不够的,为什么需要一步步引入Critic、Clip、ReferenceModel,最后又是如何引出GRPO的思路。
假设我和我弟弟都在小学同一个班上课。老师改卷后给出一个“绝对分数”,我的成绩一般80分以上,弟弟成绩大概30分左右。
然后我们把这个分数直接拿去找爸爸要零花钱——也就是用“分数本身”作为奖励(Reward)。谁考得分数高,零花钱就多。
一开始听上去没毛病,但结果就有两个问题:
不公平:如果弟弟从30分进步到60分,付出了非常大的努力,却依然比不过我平时随便考个80+。他得不到有效激励。
不稳定:我为了冲刺高分,可能会采取极端学习策略(比如疯狂刷题、考前通宵),偶尔考到95分,偶尔只有60分,成绩大起大落,导致奖励信号也忽上忽下。
这样一来,**只拿绝对分数当作Reward,奖励信号波动很大,弟弟也会觉得不公平,久而久之,就没动力进步了。
数学对应
在强化学习里,如果我们只用:
也就是“把最终Reward直接拿来做优化目标”,就容易出现高方差、激励不充分等问题。
换言之,Actor得不到一个和自身水平相称的参考线(baseline),进而影响学习效率。
针对上面的问题,爸爸很快意识到:“不能光看绝对分,而要看看每个人在自己水平线之上进步多少才是关键。”
于是爸爸决定:给我定一个“预期分数线”80分;给弟弟定一个“预期分数线”40分。考试时,只要超出自己那条线,就能得到更多零花钱;如果没有超出,那么零花钱就可能很少或者没有。
这样一来,弟弟如果努力从30分考到60分,超出自己预期分数线20分,就能得到可观的奖赏。
我如果还是80多分,增幅不明显,那就算分数比弟弟高,但并不一定多拿太多钱。
这样就鼓励了每个人以自己的水平为起点去进步,而不是一味比谁绝对分高。
当然,爸爸也很忙,不是说一旦定了分数线就一劳永逸——他得根据我们的学习状况来不断“自我调节”,因为如果弟弟水平已经到60分了,再给他设40分的线就不合理了。
反之,我要是一直考85分没什么波动,也可能需要微调我的分数线。所以,爸爸也需要不断学习,只不过他需要学习的是我和弟弟的学习进度。
数学对应
有了这个“分数线”去做差,我们能降低训练过程中的方差;也让高于预期的动作拿到更大的梯度,低于预期的动作被抑制。
有了“分数线”以后,效果确实好了很多。
但新的问题出现了:如果某一次考试我突然爆发,进了高分段,比如95或100分,爸爸会给我极高奖励,导致我在下一次考试前可能“走火入魔”,去尝试各种极端学习方法,成绩忽高忽低,奖励也随之剧烈波动。
为此,爸爸觉得要适度控制我更新学习策略的“步幅”——一次性冲太高也不一定要给我成倍加零花钱。给得太多,会让我产生极端探索心态;给得太少又会抑制热情。总之需要一个平衡。
数学对应
在PPO(ProximalPolicyOptimization)*中,这个“平衡”靠“Clip”操作来完成。
我们常见的PPO核心目标函数里,有这样一段:
其中:
表示新策略与旧策略在这个动作上的概率比值。如果这个比值离1太远,就会被Clip在【1-ε,1+ε】区间内,从而限制一次更新幅度别过大。
用故事的话讲,就是:我考到100分,可以多拿奖励,但爸爸会有个“封顶”的约束;下一次还要观察一下再做决定,这样保持学习的平稳性,防止出现一条极端的“歪路子”。
即便如此,如果我为了追求高分,不惜采取非常规手段——比如考试作弊、威胁老师改卷之类,那不就轻松拿下满分了吗?
这显然是违反原则的。而且如果在语言模型场景,可能出现生成有害言论、编造事实等“走歪”的行为。
于是爸爸又提出一个附加约束:“无论如何,你不能偏离最初正常学习的方法太多。否则即使你考了高分,我也判你不合格,零花钱也不给。”
这就好比我们在学期开始(也就是监督微调后)的“合规”状态那里画了一条“参照线”,新的行为不能和这个初始策略差太远,否则就要受到惩罚。
数学对应
有一天,爸爸说:“我没空天天衡量你的学习水平了,不想再手动给你画分数线。那你干脆先把试卷做5份模拟题,取这5次的平均分,这个平均分就是你的预期分数。真正考试时,如果你比这个平均分高,就说明你表现超出你自己的期望,我就给奖励;不够的话,说明你的表现没到平均线。”
如此一来,弟弟、我,甚至更多同学都可以用“自己多次模拟考试”的均值来做分数线,不需要依赖一个外部(爸爸)不断微调的“价值网络”。
前面几个环节,我们已经看到了PPO的思路:Actor+Critic+Clip+KL惩罚。
但在实际应用尤其是大型语言模型(LLM)上,Critic(价值函数)通常需要跟Actor同等大小的网络去估计,否则很难评估到位,成本很高,而且有些场景(比如只在回答末尾才有一个整体Reward)并不太适合训练出精细的价值函数。
这时候就出现了GroupRelativePolicyOptimization(GRPO)。
它的要点是:不用“学习”一个单独的价值网络当Critic;而是对同一道题目、同一个状态,先用旧策略采样多条输出,然后把这些输出的平均Reward当作baseline;超过平均值就相当于“正向Advantage”,低于平均值就是“负向Advantage”。
在GRPO里,除了这一步,还保留了PPO中的Clip和对ReferenceModel的KL正则,这些都可以保障更新的稳定性和合规性。
数学对应
DeepSeekMath的技术报告里给出了GRPO的目标函数(省略部分符号细节):
在大模型训练中你可能会遇到这个问题:GRPO很容易训飞,训到一半reward就很容易突然掉下来?
GRPO出现这个问题,需要详细了解强化学习(RL)的基本迭代架构,即Actor-Critic架构。
很多中文书籍将AC架构翻译为“演员-评论家”架构,真是感觉好low,信达雅的美感完全被破坏掉了。
我更加喜欢另一外中文翻译,即”知行互动”架构。译文的启发来自于王阳明先生的“知行合一”,更有中国文化的历史底蕴。
“知”为Critic,它是“行动”的评价与指导,“行”是Actor,它根据“认知”结果进行改进。”互动”两个字则反映了算法本身不断迭代的特性。
知行互动(AC)架构为什么要有Critic呢?这就涉及强化学习的算法稳定性问题。与监督学习(SL)相比,RL实际上是很难稳定的一类训练机制。
大致的原因如下:
RL本身是处理动态系统的最优控制问题,而SL是处理一个静态优化问题。动,就比静更难处理。
加上RL的数据非稳态,Env-agent交互机制的数据采集量少,这使得梯度计算的方差更大,方差一大就容易偏离预期目标,算法就容易跑飞了。
主流的强化学习算法是怎么解决这一问题的呢?加上Critic,使用State-valuefunction或者Action-valuefunction稳定策略梯度的计算过程。
更高级一些的算法是采用AdvantageFunction,也就是加上了Baseline,增加梯度计算的稳定性。这是AC算法总是优于REINFORCE算法的原因之一。
然而GRPO并没有Critic部分,原因比较简单,因为GRPO是用于训练大模型(1000亿级别的参数规模),若是使用“知行互动”架构的话,等于需要存储两个大模型。
一个是CriticNetwork,另外一个是ActorNetwork,这对存储要求是极高的。
怎么节约存储呢?把CriticNetwork去掉,替换为在线估计Advantagefunction的算法,采用了“时间(算力)”换“空间(存储)”的做法。这就是GRPO的设计思想。
与之对比,OpenAI提出的PPO算法(也是GRPO的基础算法),它的值函数通常是一个与策略模型大小相当的模型,这带来了显著的内存和计算负担。
考虑到OpenAI并不缺算力资源,不缺存储资源,即使PPO算法设计的如此糟糕,照样用的风生水起。
除了DeepSeek之外,国内不少大模型团队照猫画虎,有样学样,实际上是选择了一条次优的技术路径,因为恰恰忘记了我们与OpenAI的最大区别是什么。
回到最初的话题,从原理上看GRPO并非完美,与PPO相比实际上处于是半斤八两的水平,算法设计存在“稳定性”缺陷,但是为什么DeepSeek还能用的比较好呢?
因为DeepSeek的数据足够多,多到可以“完美”地避开GRPO的稳定性缺陷。
每次的PolicyGradient计算,只要Batch数据足够多,就能有效降低PolicyGradient的方差,就能获得比较稳定的迭代了。
很明显,对于高校科研团队,对于中小规模的RL训练(~百万或千万级别参数规模),GRPO并非一个好的选择,尤其是当每次使用的数据批量比较小的时候,它的稳定性缺陷将是致命的。
这类规模的策略训练,建议优先选择带有Critic的强化学习算法。
通过这个小学考试的比喻,我们逐步从只看绝对分数的朴素思路,演化到PPO的完整机制(Critic、Advantage、Clip、ReferenceModel),再到GRPO的创新思路(用一组输出的平均得分当基线,省去价值函数的繁琐)。
以下几点值得再次强调:
Critic的意义:它为每个状态或阶段提供“合理预期”,大幅降低了训练方差;
Clip&min机制:约束策略更新幅度,避免一次考试“爆发”带来的巨幅震荡;
ReferenceModel:限制“作弊”或极端行为,让策略不要过度偏离最初合规范围;
GRPO的优点:在大型语言模型中,省掉了价值网络,减少内存和计算负担,还与“对比式RewardModel”天然契合。
就像爸爸改用“让孩子自己多次模拟,然后以平均分当预期线”的思路一样,GRPO让我们不用再额外维护一个庞大的Critic,也能获得类似的相对奖励信号。
从结果看,这既保持了PPO原有的稳定性和合规性,又让训练更直接和高效。
希望这篇文章能帮助读者更自然地理解PPO与GRPO的原理,也能在实践中有所启发。
长按👇关注-数据STUDIO-设为星标,干货速递