简介
文章解析大模型强化学习的三种核心方法:PPO(高质量高成本)、DPO(简化流程需高质量数据)和GRPO(组内排名降低计算需求)。介绍了各方法原理、优缺点及适用场景,强调强化学习对齐模型偏好的重要性,帮助开发者根据实际需求选择合适方法。
关于大模型强化学习,网上已经有太多的硬核推导。但这篇不一样。我会用最直白的大白话和逻辑图,带你彻底搞懂 PPO、DPO 和 DeepSeek 背后的 GRPO 到底是怎么回事。
一、为什么SFT之后模型就能用了,还要上强化学习?
因为 SFT 只是模仿。模型知道“1+1=2”,也知道“一加一等于二”。但是 SFT 无法告诉模型哪一个更好。
这个时候强化学习的作用就是让模型知道前面的 1+1=2 是更符合我们人类从小学习数学的阅读习惯,大部分情况下是比后面的好的。
它不仅是为了校准模型的回答格式(比如偏好简洁的“1+1=2”),更关键的是要教会模型在面对危险提问时懂得拒绝(安全对齐),以及在面对复杂逻辑时学会推理深度(DeepSeek-R1)。
二、SFT 的局限:它是个概率选择机
SFT 的本质是 Next Token Prediction 预测下一个 token。它的训练目标是模仿拟合你喂给模型的训练数据及其分布。
举个例子,你问模型一道数学题,想要专业风格的回答:“求解方程:3x+5=20”。
在 SFT 阶段,因为模型在预训练数据里见过各种各样的网页、教材和作业,它脑子里可能会蹦出好几条路,而且它觉得这些都是对的:
路径 A(直接蹦答案):“答案是 x=5。”(概率 30%。这种回答虽然对,但对于复杂问题容易算错,且无法检查。)
路径 B(口语化唠嗑):“嗯,我们可以先把5移到右边,变成15,然后再除以3,就算出来了,是5。”(概率 30%。这种回答虽然逻辑对,但太口语了,缺乏专业性。)
路径 C(标准步骤):“解:移项得:3x=20-5,合并得:3x=15,解得:x=5。"(概率 30%。这是我们最想要的,但 SFT 并不认为它比前两个更高贵。)
路径 D(Python 代码):
print((20-5)/3)(概率 10%。也没错,但如果我是要数学辅导,这就不合适。)
对 SFT 模型来说,这四个答案都是“正确答案”,它只是根据概率在掷骰子。
三、强化学习的作用:注入偏好
这时候,强化学习(RL)就登场了。它的作用不再是让模型学会算数(预训练完就会),而是对 SFT 产生的概率分布进行“挤压”和“拉伸”。
强化学习通过奖励机制(Reward Model)告诉模型:“嘿,虽然路径 A 和 B 也没算错,但我给路径 C 打 99 分!下次再遇到这种题,把路径 C(分步骤推理)的概率给我拉满,把直接蹦答案的还有说外语解题的回答概率给我压低!”
这就是为什么现在的模型(如DeepSeek-R1)不仅仅是“算出答案”,而是学会了展示“思考过程”——这正是 RLHF/RL 在背后施加的魔法。
四、再强调一遍:RL 的本质是对齐你想要的意图
意思是强化学习并不是非要教出一个死板的老学究。
假如这次你的产品定位不是数学辅导软件,而是一个温柔的教学老师或者是一个语音助理,你完全不需要那种冷冰冰的标准步骤(路径 C)。
这时候,你只需要修改奖励函数(Reward Function)的规则:“嘿,这次我们要亲切一点!给路径 B(口语化唠嗑)打 100 分,那个写公式的路径 C 太严肃了,给它 0 分!”
经过这轮训练,模型就会立刻调转车头,明白:“哦!原来训练师这次想要这种风格!”,从而把唠嗑模式的概率拉满。
这就是强化学习的灵活性:它不定义什么是绝对的好,它只负责把模型变成你心中想要的样子。
OK 下面就正式讲解这三个 O 了。
五、PPO:不计成本的特训班
PPO (Proximal Policy Optimization) 是 ChatGPT 早期版本的功臣。虽然现在大家嫌弃它显存占用大、训练慢,但它是理解强化学习的基石。
在 PPO 的架构里,为了教好这一个模型,我们需要同时维护四个模型。
没错,是四个,这就是为什么它只有 OpenAI 等厂家玩得起的原因(占显存贵啊,以及用了好多个数据外包团队造高质量 RL 数据)。
接下来先介绍一下这四个模型分别是什么,用来干嘛的,再看图理解:
I. Actor(需更新参数):
- 角色:主角。这就是我们正在训练、希望它变符合我们预期的那个模型。
- 任务:负责根据问题生成回答。
II. Reference Model 参考模型(冻结参数):
- 角色:SFT 后的原始模型副本。
- 任务:它不参与打分,而是作为约束。它时刻提醒 Actor:“你别为了拿高分就乱说话,要保持原本的语言能力,不要偏离太远(计算 KL 散度)。”
III. Reward Model 奖励模型(冻结参数):
- 一般用什么:通常直接拿 SFT 训练好的模型(比如 Llama-3-8B-Instruct 或 Qwen3-14B-Instruct)来改。
- 角色:代表人类偏好的判卷人。
- 任务:它是个哑巴,平时不说话,只有等 Actor 把整句话写完了,它才给出一个最终分数(比如 8.0 分)。
IV. Critic 评判模型(更新参数):
- 一般用什么:和 Reward Model 一样,通常也是由 Actor 同款的 Transformer 改出来的(比如 Actor 是 7B,Critic 通常也是 7B)。
- 维度的大不同:Critic 的独特之处在于它输出的形状,它的最终输出是[Batch_Size, Seq_Len, 1],也就是 Actor 的每一个token都会有一个当下分。
举个例子结合理解:四个模型是如何配合写出一封“拒绝信”的?
这大概是初学者最大的疑惑:Reward Model 既然能打分,还要 Critic 干嘛?为了彻底理解这四个模型是如何配合的,我们来模拟一次 PPO 的训练过程。
题目 (Prompt):“请帮我给重要客户写一封邮件,礼貌地解释发货延迟的原因。”
假设模型此次的回答是:“尊敬的王总,关于订单延迟我们深表歉意,原因是我完全忘了这事。”
第一阶段:Actor 开始推理
Actor 开始一个字一个字地推理:
第 1-5 步:“尊敬的王总,关于订单延迟…”
- Critic (评判模型) 看着前几个字,心里想:“嗯,称呼得体,直奔主题,这种开头通常能拿高分。”
- Critic 打分:[5.0, 5.2, 5.5, 5.8, 6.0] (分数稳步上升)
第 6-10 步:“…我们深表歉意,原因是…”
- Critic (评判模型):“态度诚恳,接下来只要给出一个合理的理由(比如物流积压),这题就稳了。”
- Critic 打分:[6.2, 6.5, 6.7, 6.8, 7.0] (7 分对 5 分,优势在我)
第 11-12 步 (突然崩坏):“…我完全忘了这事。”
- Critic (评判模型) 瞬间崩溃:“什么?!这种大实话能跟客户说吗?这属于极度不专业!要扣大分!”
- Critic 打分:[7.0, -8.0, -8.2, …] (📉 分数暴跌!)
第二阶段:Reference Model 默默注视
Ref Model 全程也在计算概率。
它发现 Actor 在输出“我完全忘了”这几个字时,概率和自己(SFT 模型)差别极大。因为 SFT 模型受过职业训练,在这个语境下通常会说“由于物流不可抗力”。
Ref Model 的作用:虽然它不说话,但它计算出的KL 散度瞬间飙升。这意味着 Actor 这一步不仅会被扣分,还会因为偏离职业人设被额外罚分。
第三阶段:Reward Model 秋后算账
Reward Model (奖励模型) 终于拿到整个模型回复了:“尊敬的王总,关于订单延迟我们深表歉意,原因是…我完全忘了这事儿。”
RM 的动作:读完最后,判定为严重公关事故,直接打低分。
RM 打分 (Reward):-10 分 (最终标量)。
第四阶段:PPO 怎么更新?(Critic 与 Reward 的区分)
在复盘(Backpropagation)的时候:
对于前半段(“尊敬的王总…”):Reward Model 给了 -10 分(总分很差)。 但 Critic 会站出来帮 Actor 辩护:“R 老师,这学生前 10 个字写得挺好的啊!那时候我预测能得 7 分呢,是好苗子!”
结论:Actor 不需要修改前 10 个字的策略,那是好动作,需要保留。
对于后半段(“我完全忘了…”):Critic 指着第 11 步说:“就是从这个‘我’字开始,我的预测分从 7 分直接跳水到了 -8 分!”
结论:Advantage (优势) = 实际得分(-10) - 预期得分(7) = -17。
最终结果:模型会受到一个巨大的负向梯度,尽量压低在“原因是…”后面接“我完全忘了”的概率。下次它就会学乖,改成接“由于物流高峰”了。
这就是 Critic 的意义:它像心电图一样精准定位了“病情”发生的那一瞬间,而不是让 Actor 对着一张 0 分的卷子一脸懵逼,不知道自己前面写的那句“尊敬的王总”到底是对还是错。
PPO 流程图以及公式
有了上面的铺垫,这个时候再上流程图和公式就不会一脸懵逼了。
PPO 流程图
忘了之前在哪里看过的,说一本书或者一篇文章,只要加一条数学公式就会失去 90% 的读者,再加一条就是继续损失剩下的 90%。
但没办法,上面讲得这么清楚了,不结合公式还是不够完整,数学公式就是我上面用文字描述这个过程的最简约表示。
我尽量用大白话给各位解释清楚。当然如果不感兴趣就可以直接下拉到 DPO 章节。
PPO 的核心公式其实就是个分段函数。它的目标是最大化以下内容:
1. 首先是 r_t(θ)(比率 Ratio):****
π**_θ:当前正在更新的 Actor 模型(新策略)。****
π**_θold:更新这一步之前的 Actor 模型(旧策略)。注意:这里不是 Ref Model 的输出,还是 Actor 模型,只不过是上一轮没更新梯度前的 Actor。****
作用:用来衡量参数更新后,产生当前动作的概率变成了原来的多少。
这就是 Critic 和 Reward Model 联手算出来的那个数。正数(+)表示是好动作,负数(-)表示是坏动作。代表梯度更新方向。
公式不解释了,总之它的作用就是算差值,用来衡量你刚才那一步操作,到底是比我预期的更好(A 为正),还是更差(A 为负),从而决定对参数是该奖励还是惩罚。
- ϵ(限制范围 Epsilon):通常设为 0.2。意思是允许你变动 20%。
4. clip函数:clip( r_t(θ),1-ϵ,1+ϵ))
clip 函数的核心作用是截断。它将新旧策略的概率比率 r 强制限制在 [1−ϵ,1+ϵ] 这个区间内。
这意味着我们只允许模型在旧策略的基础上进行小步调整,防止模型因为一次性更新幅度过大(步子迈太大)而导致训练崩溃(扯着蛋),从而保证了强化学习过程的稳定性。
代码解释:
# 所谓的截断,其实就是把比率 r 强行锁在 [0.8, 1.2] 之间(假设 epsilon=0.2) r_clipped = min(r, 1.2) # 上限:就算你进步神速,最多也只算你进步了 20% r_clipped = max(r_clipped, 0.8) # 下限:就算你退步很大,最多也只算你退步了 20% # 在实际 PyTorch 代码中,通常直接用一句话搞定: r_clipped = torch.clamp(r, 0.8, 1.2)5. 大写的 E
在数学公式里,E 代表数学期望(Expectation)。说这么复杂,其实在写代码的时候,它的意思极其简单粗暴,就是mean()求一下平均值。
PPO 的流程就是不断重复 “旧模型采样 -> 算优势 -> 新模型学习 -> 强制截断防更新太多” 的过程。它用最简单的数学技巧(Clip),解决了强化学习中最难的稳定性问题。
现在推荐再翻上去看看 PPO 流程图,应该理解会更深。
PPO 的痛点
太™奢侈了。你想想要训练一个 70B 的 Actor,训练过程中你需要同时把 Actor、Ref Model、Reward Model 和 Critic 这四个 70B 全部塞进显卡里。
这意味着,训练一个 70B 的模型,你实际上需要准备近乎 >4 倍的显存资源(这还没算上 Actor 和 Critic 训练所需的梯度、优化器状态,以及所有模型在推理时产生的激活值这个大头)。
这种四倍带来的恐怖硬件门槛和复杂的工程维护成本,直接把绝大多数普通实验室和中小公司拒之门外,只有那几个钞能力公司才玩得转。
这份完整版的大模型 AI 学习和面试资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】
六、DPO:穷哥们的福音
DPO(Direct Preference Optimization)说白了就是为了省显存省算力省钱,把 PPO 优化后的产物。
斯坦福的研究人员发现:其实我们不需要 Critic,也不需要显式的 Reward Model。
既然我们想要的是“让好答案的概率变大,坏答案的概率变小”,那为什么不直接对着概率下手呢?
最大的变革:省硬件
DPO 最大的贡献在于它把 PPO 里的 Reward Model 和 Critic 全都干掉了。 现在,你只需要维护两个模型:
- Actor(还是需要训练):负责学习。
- Ref Model(依旧保持冻结):负责当参照物(防止学偏)。
哈,现在知道为什么要大力气的讲解 PPO 了吧,Actor 和 Ref Model 都一样的意思。都是一个师傅教的,要破招你也得先学辟邪剑法→ →。
DPO 的核心方法:没有对比就没有伤害
DPO 不再给单个答案打分,而是拿出一对答案:
- Chosen(好答案 y**_w)**
- Rejected(坏答案 y_l)
它的目标非常简单粗暴:让模型生成 y_w 的概率,远远大于生成y_l 的概率。
DPO 流程图
这里又有个数学公式,别怕,看结论就行。DPO 直接利用概率的比值来作为隐式奖励:
也就就是:最大化(好答案相对于基座模型的提升量 - 坏答案相对于基座模型的提升量)。
OK继续公式解释,不想看的跳到 GRPO 章节就行。
(1)看那个比率π_θ/π_ref************
这的意思和 PPO 里一样:“对于这个答案,现在的我(Actor)比起刚出厂的我(Ref),是更想说了,还是更不想说了?”
(2)β
这是一个超参数(通常设为 0.1),你可以把它理解为严厉程度。
- β 越大,模型就越保守,稍微偏离 Ref Model 一点点,算出来的数值就会被放大,导致巨大的惩罚(不敢乱改)。
- β 越小,模型就越放飞自我,允许偏离 Ref Model 更多。
(3)看括号里的减法
左边:对于好答案 y_w,我希望现在的我比原来的我概率更高(数值越大越好)。
右边:对于坏答案y_l,我希望现在的我比原来的我概率更低(数值越小越好)。
中间的减号:好答案的优势 - 坏答案的优势 = 差距。
(4)σ(Sigmoid) 函数
括号里算出来的差距是一个没有边界的数字(可能是 -0.1,也可能是 +10000,甚至是 +98456782645872634856237)。但是,后面的 Loss 函数只接受 0% 到 100% 的概率。
这时候就需要 Sigmoid 函数登场了,它的公式是:
但你不用记公式,只需要记住它是一个映射函数:把 σ(x)的值映射到[0, 1]之间。
(5)翻译成人话:公式背后的“拔河”逻辑
别被这四个数学符号吓到,它们其实构成了 DPO 的三道关卡。首先,括号里的减法就像一场拔河:我们希望好答案的分数越高越好,坏答案的分数越低越好(甚至是负无穷),这样两者算出来的差距就会极大。
接着,Sigmoid 函数 (σ) 充当裁判,负责把这个分差转化成“好答案的胜率”(范围 0-1)。如果分差很大,胜率就接近 100%;如果分差很小或为负,胜率就惨不忍睹。
最后,最外层的 -log 是机器学习中经典的负对数似然(Negative Log Likelihood)。
它的作用是将概率转化为优化所需的损失值(Loss):如果裁判判定胜率接近 1,Loss 就趋近于 0,模型参数保持稳定;但如果胜率很低(接近 0),-log 会让 Loss 数值瞬间激增趋向无穷大。
这种指数级的惩罚机制会产生巨大的梯度,驱动模型剧烈调整参数。
这就是 DPO 的核心逻辑:通过极端的损失惩罚,逼迫模型在概率空间里把好答案和坏答案彻底拉开距离,从而在不用 Reward Model 的情况下实现直接对齐。
TIP:为什么公式最前面要加一个负号?因为 log() 函数里面的值越大,最终的结果也越大,然后我们的优化器只用来算最小化 Loss 的,最大变最小加一个负号就搞定。
为什么 DPO 要同时看 Rejected?只学好答案不行吗?
如果你只告诉模型“学这个好的”,模型可能会偷懒——它会简单粗暴地把所有看起来像人话的句子概率都提高,或者找到一种讨巧的通解(比如只学会了说漂亮的车轱辘话,但不管逻辑对错)。
DPO 的本质是对比学习。Rejected 答案(坏答案)通常是模型很容易犯的错(比如一本正经地胡说八道)。DPO 通过负向梯度告诉模型:
“看清楚了!这种语气虽然很像你平时说话的风格,但是内容是错的!下次遇到这种情况,把这句话的概率给我狠狠压下去!”
只有同时看到了“正解”和“错误”,模型才能真正学会分辨是非,而不仅仅是模仿语气。
DPO 为什么要用同分布数据?
在搞 DPO 时,很多人会踩一个坑:拿 GPT-5 的数据去 DPO 一个 7B 的小模型,结果发现效果并不好。
为什么?这里就涉及到一个核心概念:同分布(On-Policy / Near-Policy)。通俗点说,DPO 的数据最好是自己改自己的错题集。
别人的错题(分布差异大):如果你拿 Gemini3 Pro 生成的“坏答案”给 7B 小模型看,小模型可能会一脸懵逼:“这句坏答案写得文采飞扬、逻辑复杂,有没可能虽然它是错的,但我本来就写不出来啊?”
既然模型本来生成这句话的概率就极低,那你再去压低它的概率,对模型来说就是无效补课,梯度几乎为 0。
自己的错题(同分布):只有拿模型自己(或者能力相近的模型)生成的坏答案,它才会恍然大悟:“哎呀,这确实是我经常忍不住想说的那句蠢话!原来这是错的,我改!”
所以,DPO 想要效果好,最好是用当前模型去采样数据,然后让人类(或强模型)去标注好坏。这种量身定做的错题集,才是提分的关键。
老样子,看完这里就翻上去看 DPO 流程图,此时理解会更深。
DPO 的痛点
天下没有免费的午餐,它DPO的成本实际上全部转移到了数据构造这个隐形大坑上。
你必须准备极其高质量的偏好对数据(Chosen vs Rejected),这远比单纯收集 SFT 语料要难得多:因为 DPO 对数据噪声极度敏感,一旦你的数据里“好答案”其实没那么好。
或者“坏答案”和“好答案”差距不明显(甚至标注人员手滑标反了),DPO 这种强力算法就会立刻把模型带到沟里去。
可以说,PPO 考验的是你的显卡财力,而 DPO 考验的是你的数据清洗能力。
七、GRPO:DeepSeek 的潘朵拉盒子
好了,终于到了2025年初大火的 GRPO(Group Relative Policy Optimization)。这是 DeepSeek-R1 能够在此刻惊坐全球的关键技术。
如果说 PPO 是请私教,DPO 是做改错本,那 GRPO 就是内部赛马机制。
(1)告别 Critic,拥抱 Group
DeepSeek 团队心想:PPO 的 Critic 太贵,DPO 需要配对数据(还要标注哪个好哪个坏)太麻烦。有没有一种既省钱又不用搞配对的方法?
GRPO 的逻辑是:我不要绝对的裁判,我要相对的排名。
它的操作流程是这样的:
输入问题:比如“9.11 和 9.8 哪个大?”
群发 (Sampling):让模型一口气生成一组答案,比如 8 个。
* 有的回答:9.11 大。 * 有的回答:9.8 大。 * 有的回答:一样大。 * ……- 对于理科题(Math/Code):用规则硬解
这是 DeepSeek-R1 最擅长的部分:
- 规则打分器 (Rule-based Reward):不需要神经网络,写个脚本就行。
- 数学:答案是 9.8 就是 1 分,否则 0 分。
- 代码:能通过 Test Case 就是 1 分,报错就是 0 分。
- 特点:快、准、狠。
- 对于文科题(Text):请外援打分
如果是写摘要、写小说这种没有标准答案的任务,脚本没法判断对错,怎么办?
- 模型打分器 (Model-based Reward):这时候就可以直接调用一个已经训练好的 Reward Model(或者用更强的模型如 GPT-5)来当裁判。
- 它会读一遍这 8 个回答,然后给每个回答打个分(比如 0.9, 0.6, 0.3)。
(2)组内归一化:全靠同行衬托
GRPO 不关心你考了多少分,只关心你在这一组 8 个答案里排第几。
它计算每个答案的优势(Advantage)是基于组内平均值的:
如果这一组里,大家都很烂(都得 0 分),你的 A****_i 就是 0,模型参数基本不动。****
如果这一组里,7 个都错了,就你 1 个对了。那你的 A****_i 会非常巨大(正向),其他 7 个是负向。****
模型更新的逻辑变成了:“为了让这一组的平均分变高,我要拼命提高那个高分答案的概率,同时把那些拖后腿的低分答案的概率狠狠踩下去!”
(3)GRPO 的目标公式
有了上面的优势 A_i,GRPO 实际上就变成了一个省去了 Critic 模型的 PPO。
它的最终优化目标公式如下,是不是看着很眼熟?
别怕,都到这了,我们继续拆解这个公式,它其实只做了三件事:
1. 平均化(1/G Σ)
不再是盯着一个数据点看,而是把这一组(Group)里生成的 G 个样本放在一起看。通过最大化这一组的综合表现,来优化策略。
- 这里的 PPO 遗产:Clipping(截断)
DeepSeek 的研究员非常清醒,他们知道强化学习最怕的就是Roller Coaster(过山车效应)。
如果某一次模型运气好猜对了一次,我们不能让它立刻把这个策略奉为真理,一下走太深。
所以这里保留了 PPO 的 clip 机制(也就是公式里的 min 和 clip 部分):
- 限制策略更新的幅度通常在 (1-ϵ, 1+ϵ) 之间(熟不熟悉?!)。
- 确保模型是小步快跑,而不是从悬崖上跳下去。
- 这里的 DPO 遗产:KL 散度(Regularization)
虽然 GRPO 没有 Critic 模型,但它依然保留了 Reference Model 的 KL 散度约束。公式最后的 -βKL 就是为了提醒模型:
“你可以创新,可以去探索解题的新路径,但你的语言风格、基本语法不能偏离原本锚定的模型太远。你可以内部赛马,可以创新,但还是不能大步扯着蛋。”
- 总结一下 GRPO 的公式逻辑:
“大家(Group)一起上,根据刚才算出来的相对排名(Advantage),好的奖励、差的惩罚。但是!奖励和惩罚都别太激动(Clip),而且千万别把原来的语言底子给丢了(KL)。”
GRPO 流程图
这个时候再看流程图,应该就很清晰了。
为什么 GRPO 这么强?
省显存:它彻底扔掉了 Critic 模型(和 Actor 一样大的评判模型)。这意味着你只需要训练 Actor 自身这一个模型。
相比 PPO 那种需要同时把 Actor 和 Critic 塞进显存里进行梯度更新的富贵仗,GRPO 的显存占用直接砍半还多。
这对于像 DeepSeek 这种 671B 的巨型模型来说,省下的钱都是真金白银。
基线更稳:PPO 的 Critic 还需要训练,有时候 Critic 自己都看不准。而 GRPO 的基线是当下生成的这一组的平均分,这是最真实的当前水平。
适合推理:对于数学和代码这种非黑即白的任务,只要生成的一组里有一个“开窍”了做对了,GRPO 就能敏锐地捕捉到这个正向信号,并迅速放大。
GRPO 的痛点
GRPO 虽然被称为“穷哥们的福音 Pro 版”,但它也不是万能的,它其实是用时间换空间。
- 采样成本极高 (High Inference Cost)
虽然你省去了 Critic 模型的显存,但训练过程中 Actor 的负担变得超级重。
PPO 可能只需要生成 1 个答案就开始算梯度了,而 GRPO 每一轮训练都必须针对同一个问题生成 G 组(比如 8 个或 16 个)长答案。
这就好比以前是“写完一份卷子就改”,现在是“必须一口气写完 16 份卷子,才能算一次分”。
这会导致训练时的推理等待时间变得非常长,虽然显存没爆,但训练时长可能会被拉长。
- 对冷启动要求高
GRPO 的核心逻辑是矮子里拔将军。但如果你的 SFT 模型太烂,生成的 8 个答案全都是错的(全是 0 分),那怎么办?
- 平均分是 0,标准差是 0。
- 公式里的 A****_i 就算不出来(或者没有意义)。****
- 模型这一步就学不到任何东西。
所以,GRPO 非常依赖 SFT 阶段模型就已经具备了一定的答对率(比如至少要有 10% 的概率蒙对),如果模型基础太差,GRPO 就会原地空转。
怎么解决?这里就看你模型 Mid-training 了(结尾有彩蛋)。
3. 奖励函数的难设计性
DeepSeek-R1 的成功主要集中在数学和代码领域,因为这两者的奖励非常客观(对就是对,错就是错)。
一旦切换到“写创意”、“写文案”这种主观领域,GRPO 就又得依赖一个额外的 Reward Model 来打分。
这时候,Reward Model 如果不准(比如甚至不如 Actor 聪明),那么 GRPO 就会陷入盲人骑瞎马的困境,甚至可能因为过度优化这一组的排名,导致模型开始钻牛角尖(Reward Hacking)。
GRPO 的进阶:DeepSeek-V3.2 的稳定魔改
GRPO 虽然牛,但当你把 RL 算力推到预训练的 10% 以上时,问题就来了:梯度容易炸,策略偏移像脱缰野马,MoE 模型还爱抽风。
DeepSeek 团队在 V3.2 里对 GRPO 动了手术,加了四个补丁,让它在巨型规模下稳如老狗。这些优化是针对实际痛点来的。下面我们一个一个拆。
1. 无偏 KL 估计:别让梯度炸锅
标准 GRPO 的 KL 散度(上面有写)它有个毛病:如果当前策略 π_θ 对某个词的概率超级低(远低于参考模型 π_ref),梯度就会像气球一样炸开,导致训练崩盘。
DeepSeek 的解法是加个重要性采样比率(用旧策略 π_old 修正),让梯度变成无偏的。
公式是这样的:
说人话就是外面的比率(π_θ / π_old)像个保险丝,把里面的分母(1/π_θ)约掉,防止梯度无限大。
结果?训练更稳,尤其在数学这种极端分布的任务上,甚至可以把 KL 罚项调弱或干脆去掉,还能提性能。
2. Off-Policy 序列掩码:别学前任的错
大规模 RL 里,数据生成(用旧策略 π_old)和训练(用当前 π_θ)往往脱节——推理引擎和训练框架精度不一样,一次生成大批量数据再分 mini-batch 更新,就容易 off-policy(教非所学)。
DeepSeek 加了个掩码 M,只针对“坏样本且偏移太大”的序列捂眼睛。
公式里的 GRPO Loss 改成:
其中掩码:
还是说人话:如果这个序列的分数负(坏样本),且当前模型觉得它太离谱(KL > δ),就直接忽略。
直觉?好样本尽管学,坏样本如果是旧策略犯的错,你本来就不爱犯,就别费劲纠错了——这会引入噪声。结果:对 off-policy 更包容,训练不抖了。
3. Keep Routing:MoE 别抽风
MoE 模型(混合专家)在推理时挑专家路由,但训练时参数一变,路由就可能跳槽,导致训的不是用的。
DeepSeek 的招:采样时记下路由路径,训练时强制锁死,确保训谁用谁。这招从 V3-0324 就开始用了,是 MoE RL 的定心丸。
4. Keep Sampling Mask:Top-p 别作妖
用 top-p/top-k 采样时,推理会砍掉低概率词尾,但训练 KL 算全词表,就违反重要性采样了。
DeepSeek 的解:采样时记下掩码,训练时同步套上,确保动作空间一致。结果:语言一致性稳了,采样质量不崩。
这些魔改加起来,让 DeepSeek-V3.2 的 RL 能放心烧算力,推理能力直追 GPT-5。核心哲学:稳定性大于一切,别让小偏差酿大祸。
08
后记:PO 家族还在进化
强化学习的PO家族还在增加,就在大家还在消化 GRPO 的时候,工业界和学术界又针对它的痛点搞出了新花样:
1. DAPO:GRPO 的补丁包
DAPO (Dynamic sAmpling Policy Optimization) 的出现是因为有人发现 GRPO 有点浪费。
在实际训练里,GRPO 有时候因为 Clip设置得太死板,或者长文本的梯度被稀释了,导致很多原本有用的训练信号被扔掉了。
DAPO 的作用就是做一个精打细算的管家,通过动态调整采样策略,把这些被浪费的信号重新捡回来,让模型学得更有效率。
2. GSPO:MoE 模型的镇静剂
GSPO(Group Sequence Policy Optimization)主要是为了解决 MoE(混合专家模型)架构水土不服的问题。
研究人员发现,用 GRPO 训练 MoE 时,因为它是盯着每一个 Token 算比率,容易导致训练过程极其不稳定(方差爆炸)。
GSPO 索性就把格局打开,不再纠结单个 Token 的得失,而是直接看整条序列(Sequence) 的表现。这种抓大放小的策略,成功治好了 MoE 训练时的狂躁症。
3. SAPO:Qwen 团队的蓄意轰拳
这是 Qwen 团队针对 Qwen3 系列提出的 SAPO (Soft Adaptive Policy Optimization)。
它觉得 PPO 和 GRPO 用的那种硬截断(Hard Clip,超过 20% 就一刀切)太暴力了。
SAPO 提出了一种“软门控”(Soft Gating),用平滑的曲线代替生硬的墙,让梯度衰减得更自然。
同时它还搞了个双标对待(非对称温度):对好答案宽容,对坏答案严厉。据说在 Qwen3 的数学和多模态任务上,比 GRPO 更稳更强。
八、总结一下
RL 的进化速度比我写文章的速度还快。但万变不离其宗,无论是 P、D、G 还是 S,核心逻辑依然是在“怎么更稳、更省钱地让模型学会人类的偏好”这件事上不断微调。
掌握了 PPO 和 GRPO 的核心思想,后面这些新出的 X-PO 你一眼就能看懂它的思想。
在 PPO/GRPO 之前,大模型都在偷偷做 Mid-training?
细心的同学可能发现了,无论是 Llama 技术报告中提到的 “Annealing”(退火阶段),还是 DeepSeek-V3/R1 强调的 “Cold Start”(冷启动阶段),大模型在进入 SFT 和强化学习之前,似乎都多了一个神秘的步骤。
业界通常称之为 Mid-training。为什么大家不直接拿预训练模型去跑 RL?因为没学会走之前,是没法通过强化学习教它跑的。
Mid-training 并不是单纯的过渡,它是连接“读万卷书”(Pre-train)和“行万里路”(RL)的关键桥梁:
- 机制视角:目标不变,数据质变
Mid-training 的核心训练目标依然是 Next Token Prediction(预测下一个词),这点和预训练(Stage 1)一样。
但关键变量在于数据:
- Stage 1 是广撒网式的海量数据(Web Crawl),目的是覆盖语言统计规律,说人话就是灌水,让模型学会说话。
- Mid-training 则是通过清洗、合成、精选,将数据变成了高密度的教科书级语料。
- 在这一阶段,模型不再是漫无目的地看网页,而是开始大量阅读高质量的合成数据、STEM(理工科)习题。在 Stage 1 是在学语文,在 Stage 2 则是在学逻辑。
- 梯度视角:从抗噪到提纯
Llama 的论文中专门提到了这个阶段对梯度的影响。 从梯度噪声尺度 (Gradient Noise Scale) 的角度看:
- Stage 1 的数据量大但噪声极其高,梯度方向是发散的,模型在嘈杂的集市里艰难辨认规律。
- Stage 2 的数据经过了严苛的清洗,数据质量极高(High Signal)。 这就像炼丹到了最后一步,火候(学习率)调小,原料(数据)极纯。规整的数据让梯度更新方向高度一致,使得模型能够快速收敛到更优的局部极小值。
- 能力视角:为 RL 打地基
这与我们要讲的 GRPO 息息相关:
- Pre-train 追求的是广度,模型记住了“1+1=2”,也记住了“地球是圆的”。
- Mid-training 追求的是深度推理。通过引入包含思维链(CoT)的合成数据,模型开始学习:“遇到问题 -> 先拆解 -> 再分步计算 -> 最后得出结论” 的模式。
- 为什么要专门做这个? 因为如果模型在进 RL 之前连基本的 CoT(思维链)都写不出来,那 GRPO 就算想奖励它,也采不到正确的样本(全是错的,奖励个寂寞)。Mid-training 就是为了给 RL 提供一个稍微懂点事的 Base Model。
- 效率视角:长窗口的最佳窗口期
为什么不在一开始就做 128K 甚至 1M 的长文本训练?还不是因为穷。 根据 Attention 机制 O(N)² 的复杂度,在 T 量级的 token 上跑超长上下文是烧钱机器。
Mid-training 是做 Context Extension(上下文扩展) 的黄金时段: 此时数据量相对较少(相比几 T 的预训练数据,这里可能只有几百 B),但质量极高。
配合 YaRN 等插值技术,开发者可以在可控的算力成本下,高效地将模型的注意力距离拉长。
九、如何学习AI大模型?
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
这份完整版的大模型 AI 学习和面试资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】
第一阶段:从大模型系统设计入手,讲解大模型的主要方法;
第二阶段:在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;
第三阶段:大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;
第四阶段:大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;
第五阶段:大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;
第六阶段:以SD多模态大模型为主,搭建了文生图小程序案例;
第七阶段:以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。
👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;
• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;
• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;
• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。
1.AI大模型学习路线图
2.100套AI大模型商业化落地方案
3.100集大模型视频教程
4.200本大模型PDF书籍
5.LLM面试题合集
6.AI产品经理资源合集
👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓