西安做网站的公司排名seo服务套餐

张小明 2025/12/24 3:26:10
西安做网站的公司排名,seo服务套餐,网络营销型网站策划,蜀通建设集团前言#xff1a;GRPO 宏观视角1. 为什么我们需要 GRPO#xff1f;#xff08;Motivation#xff09;在DeepSeek-Math和DeepSeek-R1等前沿工作中#xff0c;GRPO被证明是一种极其高效的强化学习算法。要理解它#xff0c;我们必须先看一眼它的前辈——PPO (Proximal Polic…前言GRPO 宏观视角1. 为什么我们需要 GRPOMotivation在DeepSeek-Math和DeepSeek-R1等前沿工作中GRPO被证明是一种极其高效的强化学习算法。要理解它我们必须先看一眼它的前辈——PPO (Proximal Policy Optimization)。在标准的RLHFReinforcement Learning from Human Feedback流程中PPO是绝对的王者但它有一个巨大的痛点显存占用极大计算资源昂贵。请看下面这个内存占用对比图------------------------------------------------------- | 传统 PPO (Standard RLHF) | | ----------------------------------------------------- | | 1. Actor Model (策略模型即我们要训练的LLM) | --- 梯度更新 | 2. Critic Model (价值模型估算状态价值 V(s)) | --- 梯度更新 | 3. Reference Model (参考模型用于计算 KL 散度) | --- 冻结参数 | 4. Reward Model (奖励模型用于给 Answer 打分) | --- 冻结参数 ------------------------------------------------------- ↓↓↓ (演变为) ↓↓↓ ------------------------------------------------------- | GRPO | | ----------------------------------------------------- | | 1. Actor Model (策略模型) | --- 梯度更新 | 2. Reference Model (参考模型) | --- 冻结参数 | [Critic Model 被移除了!] | | [Reward Model 依然存在但通常是轻量级或规则基] | -------------------------------------------------------核心痛点PPO 需要维护一个和 Actor 一样大的 Critic 模型通常是同等规模的 Transformer。如果你在训练一个 70B 的模型PPO 意味着你需要加载 70B (Actor) 70B (Critic) 70B (Ref) RM这对显存是灾难性的。GRPO 的核心洞察我们真的需要一个单独的神经网络Critic来告诉 Actor “你做得好不好”吗能不能直接通过“这一组生成结果的内部比较”来判断优劣2. GRPO 的核心机制自顶向下的直觉GRPO 全称Group Relative Policy Optimization。顾名思义它由两个关键词组成Group组Relative相对想象一下考试评分PPO (Value-based):学生 A 回答了问题。老师Reward Model打分 80 分。但是这个 80 分好不好我们需要一个“预言家”Critic Model来预测“这道题通常大家能拿 75 分”。优势Advantage 80 - 75 5。结论Critic 必不可少用来提供 Baseline基线。GRPO (Group-based):我就不请“预言家”了。我让学生 A 针对同一个问题生成 8 个不同的答案Group。 这 8 个答案的得分分别是[80, 70, 90, 60, 85, 75, 95, 65]。 算出这组的平均分77.5 分。答案1 (80分) 的优势 80 - 77.5 2.5答案3 (90分) 的优势 90 - 77.5 12.5答案4 (60分) 的优势 60 - 77.5 -17.5结论GRPO 通过采样一组输出计算组内的平均值作为 Baseline。不需要额外的 Critic 模型参数。3. GRPO 的系统脉络图 (Architecture Flow)为了让你建立最直观的印象我绘制了 GRPO 的数据流转图。请仔细观察“Group Sampling”这一步。User Prompt (Question) │ ▼ --------------------- | Actor Model | -- 也就是我们要训练的 LLM --------------------- │ │ (生成 N 个不同的回答) ▼ --------------------------------------------------------------- | Group Sampling (N4 示例) | | | | Output 1: The answer is A... ---- Reward Model -- r1 | | Output 2: Calculated as B... ---- Reward Model -- r2 | | Output 3: Let x y, so A... ---- Reward Model -- r3 | | Output 4: Based on logic C... ---- Reward Model -- r4 | --------------------------------------------------------------- │ ▼ --------------------------------------------------------------- | Advantage Calculation (核心) | | | | 1. 计算均值 (Mean): μ (r1r2r3r4) / 4 | | 2. 计算标准差 (Std): σ | | 3. 计算相对优势 (Advantage): A_i (r_i - μ) / σ | --------------------------------------------------------------- │ ▼ --------------------- | Policy Optimization| -- 使用 PPO 的 Clip Loss 公式 | (Update) | 但在 Advantage 项上使用了上述 A_i ---------------------本讲核心 takeaway省资源GRPO 去掉了 Critic 模型极大地节省了显存和计算量使得训练超大模型变得更加可行。基线Baseline的转变从“神经网络预测的基线”Value Function转变为“当前Batch内的统计基线”Group Mean。原理通过对同一个问题采样多条路径用组内归一化Group Normalization的方式来确定哪个答案是好的哪个是差的。GRPO 深度剖析PPO 昂贵且脆弱的 Critic在经典的强化学习RL理论中Actor-Critic 架构几乎被奉为圭臬。但在大语言模型LLM的场景下这个架构显得愈发笨重且低效。我们要解决的问题是为什么训练一个好的 Value Function (Critic) 如此困难且昂贵1. 回顾 PPO 的核心数学依赖要理解痛点先看公式。PPO 的核心在于最大化以下目标函数简化版在标准 PPO 中我们通常使用GAE (Generalized Advantage Estimation)来计算它而 GAE 高度依赖于 TD Error ()请注意这里出现的。这就是 Critic 网络它的任务是预测状态的预期回报。致命逻辑链条Actor 的更新方向取决于。的准确性取决于的预测精度。如果 Critic也是一个刚开始训练的神经网络它的预测是充满了噪声和偏差的。2. 痛点一计算与显存的“双倍惩罚” (The Computational Tax)在传统的 RL如玩 Atari 游戏或机器人控制中Actor 和 Critic 通常只是几层 MLP 或小型 CNN参数量很少。但在 LLM 中情况发生了质变状态空间State Space极度复杂输入是 token 序列语义极其丰富。理解“价值”需要“智能”要判断一句话“好不好”Critic 网络必须具备和 Actor 相当的理解能力。这意味着如果你的 Actor 是一个7B的 Llama-3你的 Critic 通常也必须是一个7B的 Transformer或者至少共享大部分主干参数。显存账单Training a 7B modelActor (7B):权重 梯度 优化器状态 很大。Critic (7B):权重 梯度 优化器状态同样大。这就是为什么在 RLHF 阶段显存占用往往是 SFT 阶段的 2-4 倍。Critic 不仅占据了显存还占据了大量的 FLOPs前向传播和反向传播使得训练吞吐量Tokens/sec直接减半。3. 痛点二价值函数的“训练困境” (The Optimization Difficulty)这才是更深层的学术痛点。在 LLM 生成任务中训练 Critic 往往比训练 Actor 更难。3.1 奖励的稀疏性与主观性在围棋中输赢是客观的。但在对话中Reward Model 给出的分数比如 0.85 或 0.92往往带有很强的主观噪声。Critic 试图去拟合这个充满噪声的 Reward Model极易过拟合或欠拟合。3.2 价值评估的难度比如以下场景Prompt: 请证明黎曼猜想。Token 1: 黎Token 2: 曼Token 3: 猜...Critic 需要在看到 黎曼猜 这几个字的时候就预测出这句话最终能得多少分Value。这几乎是不可能的任务因为后续生成的质量完全未定。结果 在 LLM 训练初期Critic 的 Loss 通常非常高且收敛极慢。后果 如果 Critic 预测不准V(s) 瞎猜那么计算出的优势就是错误的。Actor 会根据错误的信号进行更新导致模型性能震荡甚至崩塌Collapse。4. GRPO 的降维打击用“统计”替代“预测”既然训练一个神经网络Critic去预测 BaselineV(s)既贵又难GRPO 选择了一个统计学的方法。我们不再问 Critic“这一单大概能得多少分”而是直接做实验“既然我不知道基线那我就多跑几次取平均值当基线。”让我们对比一下Baseline的来源特性PPO (Standard)GRPOBaseline 来源参数化模型(Critic)蒙特卡洛采样的组均值 (Group Mean)计算成本高 (需前向/反向传播整个 Critic 网络)低 (仅需对 Reward 标量求平均)准确性依赖依赖 Critic 训练得好不好依赖 Group Size (N) 是否足够大无偏性Critic 可能有 Bias组内均值是当前策略的无偏估计【PPO 的视角预言家模式】 学生(Actor): 我写完了看我这篇作文 │ ▼ 预言家(Critic): (甚至还没看别人的) 基于我对你过往表现和题目难度的深奥计算 我觉得这种题目的平均分应该是 75 分。 │ ▼ 老师(Reward): 这篇实际得分 80 分。 │ ▼ 结果: 优势 80 - 75 5 (你比预言的要好) ---------------------------------------------------- 【GRPO 的视角赛马模式】 学生(Actor): 分身成 4 个人写了 4 篇作文。 │ ▼ 作文A (80分) | 作文B (60分) | 作文C (85分) | 作文D (75分) │ ▼ 统计员(Math): 大家停一下算个平均分。 平均分 (80608575)/4 75 分。 │ ▼ 结果(A): 优势 80 - 75 5 (你比这一组的平均水平好)本质总结GRPO 利用大数定律虽然 N 通常只有 8-64但在统计上已足够有效来实时的、动态的构建 Baseline从而彻底删除了那个笨拙的 Critic 网络。本讲核心 TakeawayPPO 的 Critic 在 LLM 时代不仅仅是增加了显存更重要的是它引入了优化难题。Value Function 在长文本生成任务中极难收敛不准确的 Value 会误导 Actor。GRPO 通过Group Relative组相对的方式用“采样均值”替代了“参数预测”在数学上依然构成了有效的 Advantage 估计同时将计算成本砍半。GRPO 深度剖析数学形式化—目标函数的重构在强化学习中所有都蕴含在那个我们需要最大化的之中。GRPO 的美妙之处在于它在 PPO 的基础上做了一次手术切除了植入了一个基于组Group的归一化算子。1. 符号定义 (Notation Setup)为了保证严谨性我们先定义这一讲的数学符合: 我们要训练的策略模型Actor即当前的 LLM。: 参考模型Reference Model通常是 SFT 后的初始模型用于防止模型跑偏。: 用户的问题Prompt从数据集 P(Q) 中采样。一组输出Outputs。这里 G是组的大小Group Size比如 8 或 16。: 第个输出对应的奖励值Reward由 Reward Model 给出。2. 核心变革组相对优势在 PPO 中优势依赖于 Critic。而在 GRPO 中优势则依赖于同行衬托。对于同一个问题模型生成了一组输出对应的奖励为。第个输出的优势函数定义为深度解读Mean (): 这一组输出的平均水平。如果说明这个回答比你自己生成的平均水平好应当鼓励。Std (): 标准差用于缩放。这非常关键如果某次生成大家的差别很大比如 [10, 90, 50]标准差大优势会被缩小梯度的更新幅度会变稳。如果差别很小比如 [80, 81, 79]说明模型对这个问题的表现很一致标准差小微小的分数差异会被放大模型能学到细微的区别。: 一个极小的数如防止分母为 0。[原始奖励空间 Reward Space] Group A (简单题): [0.9, 0.92, 0.88, 0.95] -- 分数都很高 Group B (困难题): [0.1, 0.05, 0.20, 0.15] -- 分数都很低 如果不做归一化模型会拼命学习 Group A (Reward大梯度大) 而忽略 Group B (Reward小梯度小)。这显然不合理。 ------------------------------------------- [GRPO 归一化空间 Normalized Advantage] Group A: [-0.4, 0.3, -1.1, 1.2] Group B: [-0.4, -1.2, 1.2, 0.4] ↑↑↑ 你看无论是简单题还是困难题 都被拉到了同一个“相对起跑线” (均值为0方差为1)。 模型现在只关注在这个场景下哪个答案相对更好3. 终极公式GRPO 目标函数有了上面的我们可以写出 GRPO 需要最大化的完整目标函数3.1 期望与采样 (Expectation Sampling)这告诉我们训练的循环逻辑采样一个 Prompt。用旧策略采样个输出。接下来的计算都是基于这个样本的平均值。3.2 代理损失 (Surrogate Loss with Clipping)这是直接继承自 PPO 的部分但在 $A_i$ 上用了 GRPO 的定义比率 (Ratio)衡量当前策略和采样时的策略差了多少。Clip: 限制更新幅度防止一次更新步子迈太大把模型扯坏了。这是 PPO 家族稳定性的基石。3.3 KL 散度惩罚 (KL Divergence Penalty)为什么要减去它这是一个正则化项 (Regularization)。是我们的 SFT 模型它是懂人话的。是我们在训练的模型。如果为了拿高分Reward Hacking开始输出乱码或者极端的欺骗性文本它和的分布差异会变大KL 散度飙升。因为公式前面是负号最大化目标函数就意味着要最小化KL 散度。4. Token 级 vs 样本级 KL在实际实现中如 DeepSeekMath 的论文KL 散度通常使用如下近似计算方式(注具体实现有多种近似公式Schulman 的近似最为常见)关键点在于GRPO 通常将 KL 散度作为一个 Loss 项直接加在目标函数里而不是像某些 PPO 实现那样作为 Reward 的一部分PPO-reward-shaping。这使得训练更加直观我们明确地知道模型在优化什么“相对优势”减去“偏离代价”。本讲核心 Takeaway公式的核心是 PPO Clip Loss 的变体唯一的区别在于 Advantage 的来源。归一化的魔力使得模型在面对不同难度的 Prompt 时梯度尺度保持稳定这是 GRPO 训练稳定的关键。正则化KL 惩罚项是防止模型“走火入魔”的必选组件。现在公式已经摆在桌上了。但在实际把代码跑起来之前我们面临一个极其具体且棘手的超参数选择问题(Group Size) 到底取多少取 4取 16还是 64如果太小统计均值不准确怎么办如果太大显存爆了怎么办在下一讲我们将深入探讨Group 的奥秘从统计学角度分析的大小如何决定了 GRPO 的成败以及如何根据你的显存大小来权衡这个参数。GRPO 深度剖析组Group——统计方差与采样策略1. 为什么不能太小——基线估计的方差问题我们知道GRPO 用组内均值来近似真实的 State Value。从蒙特卡洛Monte Carlo的角度看这是一个无偏估计但方差Variance可能极大。1.1 统计学直觉假设真实的价值。如果极端的例子我们只采样两个样本Case 1:运气好采到 [74, 76]。均值 75估计完美。Case 2:运气差采到 [50, 60]模型发挥失常。均值 55。在这个 Case 2 中60 分的样本会被认为具有“巨大优势”5分 relative to 55而在真实基准75分下它其实是很差的。结论当太小时Baseline () 的波动极其剧烈。这会导致梯度的方差变大训练过程像是在“走醉鬼步”Random Walk难以收敛。1.2 文献中的经验值DeepSeek-Math 和 DeepSeek-R1 的论文中通常倾向于较大的。DeepSeek-Math:推荐。经验法则:对于复杂的逻辑推理任务如数学题解空间的方差本身就大对就是1错就是0需要更大的来稳定均值。2. 为什么 $G$ 不能无限大——边际递减与显存墙你可能会问“既然 G 越大估计越准为什么不设成 1024”这里有两个制约因素显存墙The VRAM WallGRPO 需要在一次 Forward Pass 中生成 G 个完整的长序列。如果你训练 70B 模型Context Length 4096。G64 意味着你需要同时显存驻留 64 条 4096 长度的 KV Cache 和中间激活值。这对显存是毁灭性的打击。边际效益递减Diminishing Returns根据中心极限定理标准误Standard Error随下降。从 4 增加到 16误差减半收益巨大。从 64 增加到 256误差只减半但计算成本翻了 4 倍。3. 致命陷阱模式崩塌Mode Collapse与标准差在 GRPO 公式中分母是标准差。这引入了一个在 PPO 中不存在的风险。如果会发生什么这意味着模型生成的个回答完全一样或者得分完全一样。此时分子也是 0。结果。梯度消失模型学不到任何东西。对于这个 Batch训练是无效的。3.1 采样策略的重要性 (Temperature is Key)在 SFT 中我们有时会用 Greedy Search (Temp0) 来追求最稳妥的回答。但在 GRPO 中Temperature 绝对不能为 0。你需要强制引入多样性Diversity。Temperature:通常设为 0.6 - 1.0。Top-P / Top-K:适当放宽。我们必须迫使模型在一个Prompt下探索不同的路径。只有产生了差异ContrastGRPO 才能通过比较Comparison来学习。【无效的组 (Low Variance)】 - 训练停滞 Temperature 0.1 Prompt: 11? Output 1: 2 (Reward: 1.0) Output 2: 2 (Reward: 1.0) Output 3: 2 (Reward: 1.0) Output 4: 2 (Reward: 1.0) Stats: μ1.0, σ0.0 Advantage: [0, 0, 0, 0] -- 没有任何信号告诉模型“保持这样”或“改变” --------------------------------------------- 【有效的组 (High Variance)】 - 高效学习 Temperature 1.0 Prompt: 11? Output 1: 2 (Reward: 1.0) - Adv: 0.8 Output 2: 3 (Reward: 0.0) - Adv: -1.2 Output 3: 11 (Reward: 0.0) - Adv: -1.2 Output 4: Two (Reward: 1.0) - Adv: 0.8 Stats: μ0.5, σ0.5 Advantage: 产生了强烈的正负反馈信号4. 进阶技巧Iterative GRPO (在线生成 vs 离线生成)处理带来的显存压力学术界和工业界有两种做法4.1 Online Generation (标准 GRPO)在训练步中实时生成个样本。优点数据是完全 On-Policy 的完全符合数学推导。缺点慢显存占用大。4.2 Offline / Hybrid Generation (变体)先用当前模型跑 inference把数据存到 Buffer 里比如存 64 个然后训练时从 Buffer 里拿数据计算 Loss。风险变成了 Off-Policy。如果模型更新了Buffer 里的数据就“过时”了Stale。修正需要引入 Importance Sampling (IS) 或者限制 Buffer 的刷新频率。DeepSeek 的实现通常倾向于高效的 Online 生成或者极短周期的 Buffer。本讲核心 TakeawayGroup Size ()是权衡“估计方差”与“显存成本”的杠杆。一般推荐。多样性是生命线GRPO 依赖组内差异来提取信号。必须使用非零的 Temperature 采样。如果模型坍缩到单一输出GRPO 将失效。标准差的意义不仅仅是分母它是一个“自适应的各种系数”。当大家都很烂时微小的差异会被放大当大家都很好时差异会被缩小。明白了的设定我们其实只解决了一半的问题。公式里的算出来了但不要忘了我们并没有 Critic。这就引出了一个深刻的问题没有 Value Function 的情况下我们如何确保 Advantage 的计算真的是“优势”而不是“噪声”尤其是当 Reward 本身很稀疏的时候比如做数学题全错就是0很难拿到1。下一讲我们将深入优势函数Advantage Function的重构探讨在 Reward 稀疏或密集场景下GRPO 具体的数值表现和潜在的改进技巧如 Outcome Reward vs Process Reward。在传统的 PPO 中优势函数是极其复杂的它通常利用 GAEGeneralized Advantage Estimation进行时间步Token级别的细粒度指派。而在 GRPO 中由于移除了 Critic我们的评价体系发生了根本性的范式转移从“基于价值预测的绝对评价”转向了“基于群体竞争的相对评价”。GRPO 深度剖析优势函数Advantage Function的重构——零和博弈与稀疏奖励1. 零和博弈归一化的深层含义让我们再次审视那个看起来人畜无害的公式如果你对这一组求和你会发现一个惊人的性质(注在极小的情况下加权后的均值严格为 0标准差严格为 1)1.1 物理意义组内“内卷”这意味着 GRPO 构建了一个局部的零和博弈Zero-Sum Game环境。在一个 Batch 中无论大家的回答质量整体有多高比如都是 99 分或者整体有多烂比如都是 1 分总有一半的回答会被“惩罚”Adv 0另一半会被“奖励”Adv 0。绝对分数的“消逝”模型不再关心“我是否考了 60 分及格”模型只关心“我是否考得比隔壁的同学高”。1.2 这种设计的利弊利鲁棒性Reward Model 有时候会发生 Drift整体分数虚高或虚低组内归一化直接消除了这种整体性的 Bias。弊错误信号如果一组回答全是垃圾Reward 都是 0.0但有一个稍微沾点边Reward 0.01那个 0.01 的回答会被赋予巨大的正优势导致模型过度强化这个“矮子里拔将军”的行为。这也是为什么我们需要上一讲提到的 KL 散度约束防止模型跑偏2. 信号粒度的问题轨迹级 vs Token 级这是一个学术界非常关注的细节。PPO (Critc-based):每一句话的每一个 TokenCritic 都会给出一个价值评估。因此 PPO 可以精确地说“虽然你最后答错了但你中间推理的第三步是很棒的。”Temporal Credit Assignment。GRPO (Outcome-based):通常情况下我们只有一个最终的 Reward比如答案对不对。这意味着我们将把这个产生的优势广播Broadcast给这条回答中的每一个 Token。这听起来很粗糙对吧如果我写了 1000 字的推理只有最后一步错了导致难道这 1000 字都要被惩罚吗DeepSeek 的解决方案过程奖励与格式奖励为了缓解这个“一刀切”的问题GRPO 极其依赖Reward Engineering。在 DeepSeek-R1 中Reward不再是一个单一的标量而是多个部分的组合结果奖励 ():最终答案对不对LeedCode 通过率数学答案匹配。格式奖励 ():这就是“过程”的一种体现。比如强制模型必须输出think.../think标签。如果模型写了标签即便答案错它也能拿到一部分格式分避免全盘否定。通过这种方式GRPO 在没有 Critic 进行逐词评估的情况下依然引导模型学习到了结构化的推理能力还是挺逆天的。【场景做一道数学题过程完美但最后算错了】 Prompt: 2 * 3 4 ? Model: 2*3得6, 64得... 9! (错误答案) --------------------------------------------------- [PPO 的视角 - 精细化打击] Token序列: [2*3得6] - [64得] - [9!] Critic V(s): ↑高 ↑高 ↓骤降 Advantage: (0.5) (0.6) (-2.0) 更新结果: 2*3得6 被鼓励 (保留正确逻辑) 9! 被狠狠惩罚 (修正错误结果) --------------------------------------------------- [GRPO 的视角 - 连坐制度] Token序列: [2*3得6] - [64得] - [9!] Group Mean: 0.5 (假设别人做对了) 此样本 Reward: 0.0 (因为答案错了) Advantage: -1.0 (全序列统一惩罚) 更新结果: 2*3得6 被惩罚 (无辜躺枪) 64得 被惩罚 (无辜躺枪) 9! 被惩罚 (罪有应得) [思考]: 为什么 GRPO 依然能工作 因为在海量的采样中 (Big Data Large Steps) 2*3得6 这一步出现在正确样本中的概率远高于错误样本。 虽然单次更新有噪声但期望值 (Expectation) 最终会收敛到正确方向。 这就是大数定律的暴力美学。4 处理稀疏奖励 (The Sparse Reward Problem)在数学或代码任务中Reward 往往是二值的0 或 1。这在 GRPO 中会制造麻烦。极端情况个样本全错全是 0或全对全是 1。此时公式退化。虽然有保护不报错但会变成 0。梯度消失训练空转。工程上的应对策略冷启动Cold Start在使用 GRPO 纯 RL 之前必须有一个足够强的 SFT 模型保证它至少有 10%-20% 的概率能答对题。如果模型一开始什么都不会GRPO 是推不动的。混合奖励如前所述加入 dense reward如格式检查、长度惩罚、语言流畅度分确保存活下来的样本之间即使答案都错了分数也有高低之分比如写了步骤的 0 分比啥都没写的 0 分要稍微好一点点。本讲核心 Takeaway相对评价GRPO 构建了一个组内竞争机制Advantage 均值为 0。这消除了绝对 Reward 的波动影响。粗粒度信号相比 PPO 的 Token 级评价GRPO 默认是 Trajectory 级评价。它依赖海量数据的统计规律来区分哪些 Token 是真正导致错误的。对初始能力的依赖因为没有 Critic 指导“这一步走得好”GRPO 要求模型自身必须具备一定的成功率否则无法从全 0 的反馈中学习。现在我们有了目标函数有了采样策略也有了奖励计算方法。 但是强化学习最怕的就是模型为了拿高分而“走火入魔”Reward Hacking。比如为了让回答变长如果Reward和长度正相关模型开始疯狂重复废话。虽然我们在公式里写了 KL 散度项但在实际代码和训练中如何精确计算和控制 KL 散度是一门极深的学问。在 RLHF 的世界里有一个著名的诅咒叫Goodharts Law古德哈特定律“当一个指标变成目标它就不再是一个好的指标。”如果我们完全放任 GRPO 去最大化我们定义的 Reward比如数学题做对得 1 分而没有任何约束模型很快就会发现一些人类意想不到的“捷径”Reward Hacking。为了防止模型变成一个“为了得分不择手段的疯子”我们需要一个锚点。这个锚点就是KL 散度Kullback-Leibler Divergence。GRPO 深度剖析KL 散度的处理1. 为什么要加 KL想象我们在训练模型写诗。 Reward Model 倾向于给押韵的句子高分。如果没有 KL 散度约束GRPO 训练出来的模型可能会变成这样Prompt:写一首关于春天的诗。Model:猫 猫 猫 猫 / 喵 喵 喵 喵 (押韵满分语义崩坏)这就是Reward Hacking。模型利用了 Reward Model 的漏洞比如对某些特定 Token 的偏好牺牲了语言的可读性和逻辑性来换取高分。(Reference Model)的作用就是那个拿着教鞭的老师。它通常是 SFT 阶段得到的模型。它的潜台词是“你可以去尝试拿高分但你的说话方式概率分布不能离我太远。你首先得像个正常人说话其次才是答对题。”2. KL 散度的数学计算Token 级别的微操在 LLM 中KL 散度不是算整个句子的而是算每一个 Token的。对于第个 Token模型预测的概率分布是参考模型预测的概率分布是。 理论上的 KL 公式是。但在 GRPO 的实际工程实现中参考 DeepSeekMath 和常见的 PPO 实现我们通常使用Schulman 近似或者简单的Log-Ratio。最常用的近似公式对于生成的某个特定 token注意如果比高很多模型过度自信地输出了这个词差值为正KL Loss 变大惩罚模型。如果变小了模型不敢说 SFT 原本会说的词差值为负但这通常由期望项平衡。汇总到 Loss 中在 GRPO 的目标函数中我们将这个 KL 值作为一个惩罚项Penalty减去这里 T 是生成的序列长度。这意味着每一个偏离 Reference 的 Token 都要付出代价。3. 两种流派KL in Reward vs KL in Loss在代码实现层面你会看到两种处理 KL 的方式这点非常容易混淆你需要特别注意流派 APPO 经典做法 (Reward Shaping)直接把 KL 惩罚扣在 Reward 里。逻辑这里的 Reward 变成了“综合得分”。在 GRPO 中的问题如果我们把 KL 加到里再进行 Group Normalization ()KL 的物理意义会被方差缩放扭曲。这通常不是 GRPO 的最佳实践。流派 BDeepSeek-Math 做法 (Direct Loss Term)保持 Reward 纯净把 KL 放在目标函数里作为正则项。逻辑负责指引方向哪个答案好负责拉住缰绳别走太远。优势这种分离让优化更可控。可以独立调节不受 Reward 数值范围的影响。我们可以把想象成地球是风筝。[ 崩坏区 / Collapse Zone ] (模型输出乱码但可能偶然骗过 Reward Model) WARNING: KL 1.0 / / -- 巨大的 KL 惩罚 (强引力) / ----------------------- | 训练中的模型 | --- 试图往高 Reward 方向飞 | Policy (Actor) | ----------------------- \ \ -- Beta (β) 决定了引力绳的粗细 \ [ 安全区 / Trust Region ] (语言通顺符合人类语法由 SFT 模型定义) Reference Model如果太大 (Beta1.0)引力太强风筝飞不起来。模型会死死守着 SFT 的参数不敢做任何探索。训练 Loss 下降但 Reward 不升。如果太小 (Beta0.0)绳子断了。风筝飞入太空崩坏区。模型为了优化 Reward 开始胡言乱语。黄金甜点 (Beta0.01 - 0.05)既允许模型探索新的解题路径又强迫它用“人话”把答案写出来。动态 Beta (Adaptive KL) —— 进阶技巧在长时间的训练如几万步中固定的往往不好用。训练初期模型很容易偏离需要强 KL 约束。训练后期模型已经学乖了可以适当放松让它冲击更高分。或者反过来PPO 中常用设定一个目标 KL 值比如。如果当前 KL 说明跑太远了调大。如果当前 KL 说明太保守了调小。虽然 GRPO 论文中较少强调这一点但在工程实践中监控 KL 曲线是判断训练是否健康的唯一标准。健康的曲线KL 缓慢上升然后稳定在一个小数值如 0.01-0.05。暴雷的曲线KL 指数级爆炸或者突然变成 0。本讲核心 Takeaway安全锚点KL 散度约束是 RLHF 区别于普通 Fine-tuning 的关键它保证了生成的语言质量。公式选择在 GRPO 中建议将 KL 作为 Loss 的独立正则项而不是混入 Reward以避免被 Normalization 干扰。计算粒度KL 是 Token-level 的。每一个“标新立异”的词都会累积罚分。理论闭环已经完成。现在我们需要把这些积木拼成一个完整的、会动的机器。 下一讲我们将进入系统级的整合我们将像拆解引擎一样一步步拆解GRPO 的完整训练循环 (Training Loop)。我们将看到数据是如何在 GPU 之间流转以及梯度是如何反向传播的。GRPO 深度剖析·训练循环详解GRPO 的训练过程可以被切割为两个截然不同的阶段Rollout Phase (采样阶段)只做推理不传梯度极度消耗显存带宽。Training Phase (学习阶段)反向传播更新权重极度消耗算力。1. Step 1: 采样 (Rollout / Generation) —— 最昂贵的开销一切始于一批 Prompts。假设我们的 Batch Size (of Prompts) Group Size 。我们需要生成条完整的回答。输入个问题例如[11?, 解释量子力学, ...]。动作模型当前的 Actor进入eval()模式。操作复制每个 Prompt次。并行生成个回答。关键数据留存在生成的过程中我们要顺手把每个 Token 的Log Probability (LogProbs)存下来为什么要存因为计算 Loss 里的比率时分母就是这个时候算出来的。如果不存训练时就要多做一次前向传播太亏了。注意这是 GRPO 训练中最慢的一步。对于 70B 模型生成长文本COT可能占据整个训练时间的 70%-80%。所以这里通常会用到 vLLM 等加速推理框架。2. Step 2: 评分与归一化 (Evaluation Advantage)生成结束后GPU 显存里躺着条轨迹Trajectories。现在的任务是给它们打标签。动作打分调用 Reward Function可能是代码解释器也可能是另一个 Reward Model得到个标量奖励。分组归一化核心将数据切分为组每组个轨迹。对每组计算均值和标准差。计算优势。释放显存此时原始的 KV Cache 可以扔掉了除非你用 PPO 的特殊实现我们只需要 Input IDs, Masks, Old LogProbs 和 Advantages。3. Step 3: 学习 (Optimization) —— 内层循环数据准备好了现在进入真正的“训练”环节。这通常是一个内层循环Inner Epochs。也就是说我们辛辛苦苦生成的这批数据不会只用一次通常会反复用它更新模型 1-4 次Update Epochs。对于每一次更新迭代Actor Forward (新策略前向传播)把刚才那条数据喂给当前正在更新的 Actor 模型。计算 New LogProbs。注意这一步需要梯度requires_gradTrue。Reference Forward (参考模型前向传播)把同样的数据喂给 Reference Model冻结参数。计算 Ref LogProbs。用途用于计算 KL 散度。优化技巧如果显存不够这一步可以预先算好存起来牺牲磁盘/内存换显存。Loss Calculation (损失计算)Ratio:。Surrogate Loss:用 Clip 公式结合 Advantage 计算策略梯度。KL Loss:。Total Loss:Surrogate Loss KL Loss。Backward Step (反向传播与更新)loss.backward()optimizer.step()实例Prompt (输入): “2 2 ?”Group Size (): 4 我们让模型生成 4 个回答模型生成了以下 4 条数据为了方便理解我把 Token 拆开了回答 A:[是, 4, EOS](正确简洁)回答 B:[等, 于, 5, EOS](错误)回答 C:[答, 案, 是, 4, EOS](正确啰嗦)回答 D:[不, 知, 道, EOS](错误拒绝回答)第一步打分 (Scoring) —— 此时与 Token 长短无关GRPO 并不是看一个字打一次分而是看完整个句子打一次分。假设 Reward Model 只看结果对不对对1.0错0.0回答 A 得分 ():1.0回答 B 得分 ():0.0回答 C 得分 ():1.0回答 D 得分 ():0.0注意此时我们手里的 Reward 只是 4 个简单的数字[1.0, 0.0, 1.0, 0.0]。完全不涉及 Token 的切分。第二步计算均值与标准差 (Group Statistics)现在我们在组内Group计算统计量均值 ():标准差 ():计算可得计算优势 ():公式回答 A (Adv):回答 B (Adv):回答 C (Adv):回答 D (Adv):关键点到目前为止我们只得到了4 个标量值。第三步广播 (Broadcasting)现在的难题是回答 A 有 3 个 Token回答 C 有 5 个 Token长度不一样怎么把这一个标量用到计算里这就叫广播。我们将这个优势值像“淋雨”一样均匀地淋在每一个 Token 头上。看看【回答 C】的内部视角Token 序列[答, 案, 是, 4, EOS]优势值1.0在计算 Loss 时我们会展开成这样时间步 (t)Token (xt​)模型预测概率 (π)这一步的优势 (A^t​)解释t1答0.21.0既然结果对了鼓励你说“答”t2案0.91.0既然结果对了鼓励你说“案”t3是0.81.0既然结果对了鼓励你说“是”t440.91.0既然结果对了鼓励你说“4”t5EOS0.991.0既然结果对了鼓励你结束哪怕 答 和 案 这两个字本身和数学没关系它们也会被同样地奖励。再看看【回答 B】的内部视角Token 序列[等, 于, 5, EOS]优势值-1.0时间步 (t)Token (xt​)模型预测概率 (π)这一步的优势 (A^t​)解释t1等0.6-1.0既然结果错了惩罚你说“等”t2于0.8-1.0既然结果错了惩罚你说“于”t350.3-1.0既然结果错了惩罚你说“5”t4EOS0.9-1.0既然结果错了惩罚你结束第四步Masking (对齐与遮盖) —— 工程实现的最后一步在 GPU 里因为 tensor 必须是方方正正的所以短的句子后面会补 0 (Padding)。同时我们不能计算 Prompt 的 Loss。假设 Prompt 长度为 5。 回答 A 长度为 3。 回答 C 长度为 5。 最大长度为 5。优势矩阵 (Advantage Tensor) 的形状是[Batch, Group, Max_Seq_Len]Prompt 部分 (Mask掉不算分) | Response 部分 (参与计算) ------------------------------------------------------------ [ 0, 0, 0, 0, 0, 1.0, 1.0, 1.0, 0, 0 ] - 回答 A (补了2个0) [ 0, 0, 0, 0, 0, -1.0, -1.0, -1.0, -1.0, 0 ] - 回答 B (补了1个0) [ 0, 0, 0, 0, 0, 1.0, 1.0, 1.0, 1.0, 1.0 ] - 回答 C (填满) [ 0, 0, 0, 0, 0, -1.0, -1.0, -1.0, -1.0, 0 ] - 回答 D (补了1个0)[ Prompts (BatchB) ] │ ▼ ----------------------------- | Generation Phase | --- ️ 耗时最长 | (No Grad, Temp 0) | | Outputs: B * G trajectories | | Save: Old LogProbs | ----------------------------- │ ▼ ----------------------------- | Scoring Phase | | 1. Calculate Rewards (r) | | 2. Group Normalization | --- GRPO 魔法发生地 | 3. Compute Advantage (A) | A (r - μ) / σ ----------------------------- │ ▼ [ Training Buffer ] (包含: InputIDs, Old_LogProbs, Advantages) │ ▼ ----------------------------- --循环 N 次 (Inner Epochs) | Optimization Phase | | | | Current Policy (Actor) -- New LogProbs (with Grad) | Reference Model -- Ref LogProbs (No Grad) | | | Loss PPO_Clip(A) β*KL | | Backprop | ----------------------------- │ ▼ [ Updated Actor Model ] -- 准备下一轮采样工程细节显存优化的关键点GRPO 虽然去掉了 Critic但倍的数据量依然庞大。Gradient Checkpointing (梯度检查点)必须开。用 30% 的额外计算时间换取 4-5 倍的显存空间。否则的长序列直接 OOM。Micro-Batching (微批次)虽然我们采样了个样本比如在 Optimization 阶段我们不需要一次性把 64 个样本全塞进 GPU。我们可以把这 64 个样本拆成 Chunk例如每次 2 个累积梯度Gradient Accumulation最后更新一次。注意Group Normalization 必须在切分 Micro-Batch之前完成优势的计算是基于全组的不能切碎了算。本讲核心 Takeaway两段式结构GRPO 严格区分“造数据Rollout”和“吃数据Train”。数据复用为了摊薄昂贵的采样成本通常会对同一批数据进行多次梯度更新Inner Epochs。计算瓶颈与 SFT 不同SFT 的瓶颈在反向传播GRPO 的瓶颈通常在生成阶段因为是自回归的逐词生成。现在我们已经彻底搞懂了 GRPO 内部是如何运转的。 但是没有对比就没有伤害。学术界现在百家争鸣DPO (Direct Preference Optimization)也是红极一时号称“不需要强化学习的强化学习”。GRPO 深度剖析横向对比——GRPO vs DPO vs PPO谁才是终局1. 三国鼎立流派概览首先让我们用最简练的语言定义这三位选手1.PPO (Proximal Policy Optimization):哲学“我要请个老师Critic时刻盯着你你每走一步Token我就告诉你这步走得好不好。”状态极其强大但重得像坦克显存杀手调参火葬场。2.DPO (Direct Preference Optimization):哲学“我不需要老师。我只要看两份作业一份是满分Winner一份是零分Loser。我只学满分的远离零分的。”状态轻量级本质上是对比学习Contrastive Learning不是强化学习。训练极快但容易过拟合。3.GRPO (Group Relative Policy Optimization):哲学“我不需要老师但我让你们全班Group考试。谁考得比平均分高谁就是好学生。”状态结合了 PPO 的在线探索能力和 DPO 的轻量化优势。2. DPO 的死穴为什么推理模型O1/R1不爱用 DPODPO 在聊天、写小说、排比句等主观偏好Alignment任务上是非常牛。但在数学、代码等客观推理Reasoning任务上它有致命缺陷。2.1 缺陷一缺乏探索 (No Exploration)DPO (Off-policy):数据集是静态的通常由 GPT-4 蒸馏生成好和坏回答。训练时模型看着 GPT-4 的答案说“哦我要模仿这个”。问题如果 GPT-4 的解法不是最优的呢或者模型自己能想出一种更“刁钻”的解法呢DPO 不允许模型尝试新路径。它只是在做Behavior Cloning (行为克隆)的变体。2.2 缺陷二分布偏移 (Distribution Shift)DPO 的数据往往是离线的。如果你的模型Student很弱而数据Teacher太强模型根本理解不了 Teacher 为什么这么做只能死记硬背。GRPO (On-policy):数据是模型自己刚刚生成的。“这是我自己写出来的答案虽然烂但我知道我是怎么想的。”基于自己的能力边界进行改进这种**自举Bootstrapping对于逻辑能力的提升至关重要。【DPO 的路径照猫画虎】 标准答案(y_w): A - B - C - D (完美路径) 模型能力: 只能走到 B后面看不懂。 结果: 强行背诵 C - D。遇到新题直接懵逼。 ------------------------------------------- 【GRPO 的路径自我进化】 尝试1: A - X - Y (错) - Reward: 0 尝试2: A - B - E (错) - Reward: 0 尝试3: A - B - C (对!) - Reward: 1 -- Aha! 我找到路了 结果: 模型通过无数次试错真的理解了从 B 到 C 的逻辑。3. PPO vs GRPO同门师兄弟的权衡既然确定了要用 RL强化学习为什么不坚持用 PPO3.1 显存与计算效率PPO:需要 Critic 模型。对于 70B 模型这基本上意味着显存翻倍。GRPO:只要 Actor。通过多次采样Group Sampling来代替 Critic。代价GRPO 的采样阶段Inference很慢。收益显存占用低能训练更大的模型。结论在推理算力vLLM越来越便宜而训练显存H100依然昂贵的今天GRPO 是更经济的选择。3.2 信号的细腻程度PPO:Token-level 信号。Critic 能告诉你“第 5 步推导错了”。GRPO:Trajectory-level 信号。只能告诉你“这一整题做错了”。这看起来是 GRPO 的劣势。但在 DeepSeek-R1 等工作中通过思维链CoT和过程奖励Process Reward的结合或者仅仅依靠大规模数据的统计规律GRPO 证明了即使信号粗糙只要样本量够大依然能收敛出 SOTA 的效果。维度DPOPPOGRPO本质监督学习 (Contrastive)强化学习 (Actor-Critic)强化学习 (Policy Gradient)核心机制拟合偏好数据 (Offline)价值函数指引 (Online)组内相对优势 (Online)显存占用⭐ (极低)⭐⭐⭐ (极高)⭐⭐ (中等含采样)训练稳定性⭐⭐⭐ (需调参少)⭐ (极难调)⭐⭐ (较稳看Group大小)探索能力无 (模仿)强 (探索)强 (探索)适用场景聊天、风格对齐、安全机器人控制、复杂博弈逻辑推理、数学、代码Critic网络不需要需要不需要Baseline无Value ModelGroup Mean为什么 GRPO 是“推理”的未来DeepSeek-Math 和 DeepSeek-R1 的成功揭示了一个趋势对于推理Reasoning任务验证Verification比生成Generation容易。判断一道数学题做没做对验证只需要一个简单的 Python 脚本或 Rule。让 DPO 去模仿解题过程很容易学到皮毛格式学不到神髓逻辑。让 GRPO 去猜答案然后通过客观的验证器Verifier/Compiler给反馈模型就能在不断的“猜-验证-修正”中涌现出真正的智能。结论如果你的目标是让模型像人一样说话用 DPO。如果你的目标是让模型解出人类未解的数学题必须用 RL (GRPO/PPO)。而 GRPO 是目前 RL 路线中性价比最高的工程解法。本讲核心 TakeawayDPO 缺乏探索它是离线的适合对齐人类偏好但不适合探索未知解法推理。GRPO 是 PPO 的瘦身版它用计算采样换显存去 Critic在算力成本结构变化的今天这笔交易极其划算。推理需要 On-policy想要复现 O1/R1 的效果必须让模型在环境中实时试错GRPO 提供了这种环境。现在理论、公式、对比都讲完了。你已经具备了手搓 GRPO 的所有知识储备。在下一讲我们将进入代码实战环节。我将为你构建一个PyTorch 风格的 GRPO 最小实现Minimal Implementation。我们将不再谈论抽象的而是谈论具体的torch.gather,logits, 和loss.backward()。GRPO 深度剖析·用 PyTorch 伪代码还原 GRPO假设我们已经完成采样Rollout数据已经躺在显存里了。 现在的任务是计算 Loss 并反向传播。1. 核心输入数据结构 (The Inputs)在进入计算之前你必须极其清楚你的 Tensor 形状Shape。 假设Batch Size (B):2 (有多少个 Prompt)Group Size (G):4 (每个 Prompt 生成了 4 个回答)Sequence Length (L):1024 (Token 长度)import torch import torch.nn.functional as F # 1. input_ids: 包含了 Prompt Response 的完整 token 序列 # Shape: [B, G, L] - [2, 4, 1024] # 在实际通过模型前通常会 flatten 成 [B*G, L] - [8, 1024] input_ids ... # 2. attention_mask: 标记哪些是 Padding (0), 哪些是真实数据 (1) # Shape: [B*G, L] attention_mask ... # 3. old_log_probs: 在采样阶段(Rollout)记录下来的 log 概率 # 这是为了计算 PPO 的 Ratio。 # Shape: [B*G, L] old_log_probs ... # 4. rewards: 外部 Reward Model 给出的分数每个回答一个分 # Shape: [B, G] - [2, 4] # 注意这是标量还没广播到 Token 级别 rewards torch.tensor([ [1.0, 0.0, 1.0, 0.5], # Group 1 [0.2, 0.2, 0.9, 0.1] # Group 2 ])2. 核心函数一计算优势 (Compute Advantages)这是 GRPO 区别于 PPO 的灵魂代码。我们需要在 Group 维度上做归一化。def compute_grpo_advantages(rewards, epsilon1e-8): 输入 rewards: [B, G] 输出 advantages: [B, G] # 1. 计算组内均值 (Mean) # dim1 表示沿着 Group 维度求平均 mean rewards.mean(dim1, keepdimTrue) # Shape: [B, 1] # 2. 计算组内标准差 (Std) std rewards.std(dim1, keepdimTrue) # Shape: [B, 1] # 3. 归一化 (Normalization) # 广播机制会自动把 [B, 1] 扩展成 [B, G] advantages (rewards - mean) / (std epsilon) # 返回 Shape: [B, G] return advantages3. 核心函数二获取 Token 概率 (Get LogProbs)我们需要让模型再跑一次前向传播Forward拿到当前的 LogProbs。注意这里有一个经典的gather操作一定要看懂。def get_per_token_logps(model, input_ids, attention_mask): 计算给定序列中每个 Token 的 Log Probability # 1. 模型前向传播 # outputs.logits Shape: [B*G, L, Vocab_Size] outputs model(input_ids, attention_maskattention_mask) logits outputs.logits # 2. 对 Logits 取 LogSoftmax (转成 Log 概率) # Shape: [B*G, L, Vocab_Size] all_logprobs F.log_softmax(logits, dim-1) # 3. 提取特定 Token 的概率 (Gather) # input_ids 是我们需要模型预测的目标词。 # 我们通常把 input_ids 向左移一位作为 label (next token prediction)这里简化处理。 # 这一步是为了只把“模型实际生成的那个词”的概率拿出来。 # Shape: [B*G, L] token_logprobs torch.gather( all_logprobs, dim2, indexinput_ids.unsqueeze(-1) ).squeeze(-1) return token_logprobs4. 核心函数三GRPO Loss 计算 (The Grand Assembly)现在把所有东西拼起来。def grpo_loss_step(model, ref_model, input_ids, mask, old_log_probs, rewards, beta0.04): 单步训练逻辑 # --- Step 1: 准备优势 (Advantage) --- # Shape: [B, G] advantages compute_grpo_advantages(rewards) # [关键] 广播机制 (Broadcasting) # 我们要把 [B, G] 的优势扩展到每个 Token 上 [B*G, L] # 先 flatten 成 [B*G] advantages advantages.view(-1) # 再扩展到序列长度 (这里只是逻辑示意实际代码通常在计算 loss 时利用 broadcasting) # 假设我们让 advantage 变成 [B*G, 1]后面乘以 [B*G, L] 的 loss 矩阵 advantages advantages.unsqueeze(1) # --- Step 2: 当前模型前向传播 --- # Shape: [B*G, L] new_log_probs get_per_token_logps(model, input_ids, mask) # --- Step 3: 参考模型前向传播 (用于 KL) --- with torch.no_grad(): ref_log_probs get_per_token_logps(ref_model, input_ids, mask) # --- Step 4: 计算比率 (Ratio) --- # ratio P_new / P_old exp(log_P_new - log_P_old) # Shape: [B*G, L] ratio torch.exp(new_log_probs - old_log_probs) # --- Step 5: PPO Clip Loss (Surrogate) --- # loss1 ratio * A surr1 ratio * advantages # loss2 clip(ratio) * A surr2 torch.clamp(ratio, 1 - 0.2, 1 0.2) * advantages # 取最小值 (PPO 核心)注意是负号因为要 maximize advantage policy_loss -torch.min(surr1, surr2) # --- Step 6: KL Penalty --- # approx_kl log_P_new - log_P_ref kl_div new_log_probs - ref_log_probs # 这种写法是把 KL 当作 Loss 的一项 kl_loss beta * kl_div # --- Step 7: 综合 Loss --- # Shape: [B*G, L] total_loss policy_loss kl_loss # --- Step 8: Masking (只计算 Response 部分) --- # 我们不能计算 Prompt 部分的 Loss也不能计算 Padding 的 Loss。 # 假设我们要 mask 掉 Prompt 和 Padding只保留 Response。 # completion_mask 是一个 0/1 矩阵标记哪些是回答的 token。 completion_mask ... (根据 prompt 长度生成) # 应用 Mask 并求平均 masked_loss total_loss * completion_mask final_loss masked_loss.sum() / completion_mask.sum() return final_loss本讲核心 Takeaway代码即公式GRPO 的代码实现就是对 PPO Loss 的一次简单修改改动不超过 50 行。Group 处理核心在于把[B, G]的 Reward 变成[B, G]的 Advantage然后 Flatten 成[B*G]喂给 Loss 计算。计算图ref_model不需要梯度old_log_probs是常数detach只有new_log_probs所在的计算图需要反向传播。进阶与展望——R1 的变体与推理的未来1. DeepSeek-R1 的实战变体规则即奖励 (Rule-based Rewards)DeepSeek-R1 最让人震撼的一点是它在 R1-Zero 阶段完全没有使用神经网络作为 Reward Model。这是一个极其反直觉的“退步”。我们花了几年时间研究怎么训练 Reward Model结果 R1 告诉我们对于推理任务只要写个 Python 脚本就够了。GRPO Compiler/Verifier在 R1 的 GRPO 训练中Reward 的构成极其朴素准确性奖励 (Accuracy Reward):把模型生成的答案Answer塞进编译器运行或者与标准答案字符串匹配。通过 1.0失败 0.0。格式奖励 (Format Reward):强制模型把思考过程写在think和/think之间。这其实是一种“强约束引导”防止模型在探索过程中把格式跑丢了。洞察这意味着 GRPO 将强化学习从“拟合人类偏好”这是玄学拉回了“通过客观检验”这是科学。只要你能写出一个验证脚本Checker你就能用 GRPO 训练出一个超越人类的模型。2. 解决冷启动问题 (The Cold Start Problem)在第五讲我们提到如果模型一道题都做不对GRPO 是无效的全 0 奖励。DeepSeek-R1 是如何解决这个问题的这里有两个阶段的 GRPOR1-Zero (纯 RL):让模型盲搜。这需要极大的耐心和算力。初期模型会输出无数的乱码和错误直到偶然间Serendipity它撞对了一次。一旦撞对GRPO 的优势函数就会瞬间捕捉到这个信号指数级地放大这条路径的概率。这是“顿悟时刻”Aha Moment的数学本质。R1 (SFT RL):先用少量高质量的“思维链数据”做 SFT把模型教会“怎么像人一样思考”。这相当于给 GRPO 一个很高的初始起点Initial Policy。这种做法收敛更快效果更稳。未来趋势如何更高效地获取“第一口奶”SFT Data使用小模型Student去蒸馏大模型Teacher的 GRPO 轨迹可能是一条捷径。3. 迈向多模态与 Agent (Multimodal Agents)GRPO 的逻辑可以完美迁移到 Text 以外的领域。3.1 Visual GRPO想象一个视觉推理任务“图中这只猫在干什么”Prompt:图片 问题。Group:生成 16 个不同的解释。Verifier:这里很难用规则判断。但如果是“数图中有几个苹果”这就是完美的 GRPO 场景。模型多数几次如果答案是 5且检测框对准了Reward 1。3.2 Agent Tool UseAgent 调用工具如搜索、计算器本质上也是一种推理路径。Action:调用 API。Outcome:API 返回结果是否解决了用户问题GRPO 的机会:我们可以采样一组 API 调用序列。有的序列调用了 10 次才解决有的调用了 2 次就解决了。GRPO 会自然地奖励那些既快又准的工具使用策略。4. 终极猜想Process GRPO (Dense Reward)目前的 GRPO 还是基于结果Outcome的。就像老师只看卷子最后的答案给分。我个人猜想未来的 GRPO 可能会进化为 Dense GRPO。我们不需要训练一个巨大的 Critic但我们可以引入轻量级的Step-level Verifier。每生成一行代码就跑一次语法检查。每推导一步数学公式就用符号计算引擎SymPy验算一步。这样Reward不再是一个标量而是一个向量。优势函数将利用蒙特卡洛树搜索MCTS的思想更精准地评估每一步的价值。这将是 System 2 思维的完全体。【GRPO 知识图谱】 1. 核心动机 (Motivation) └── 抛弃 Critic - 省显存 - 赋能大模型训练 (Lecture 1-2) 2. 数学原理 (Math Foundation) ├── 目标函数: Clip Loss KL Penalty (Lecture 3, 6) ├── 优势函数: Group Normalization (r - μ) / σ (Lecture 5) └── 采样策略: Group Size Temperature (Lecture 4) 3. 工程实现 (Implementation) ├── 训练循环: Rollout - Score - Train (Lecture 7) ├── 代码实战: Gather, Broadcasting, Masking (Lecture 9) └── 算法对比: PPO vs DPO vs GRPO (Lecture 8) 4. 未来展望 (Future) └── Rule-based Reward, Self-Verification, Agents (Lecture 10)你现在已经掌握了目前 LLM Post-training 领域最前沿的武器。当你看到显存不够时你会想到 GRPO。当你看到模型推理能力弱时你会想到 GRPO。当你看到 DPO 遇到瓶颈时你会想到 GRPO。能看到这里说明你有及其惊人的毅力和学习渴望希望本人小小的一点分享能够帮助大家完全搞懂GRPO在AGI的道路上出一份力加油
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

云南省建设网站微信服务商平台官网

PC微信小程序wxapkg解密工具完整使用指南:2025终极技术分析方案 【免费下载链接】pc_wxapkg_decrypt_python PC微信小程序 wxapkg 解密 项目地址: https://gitcode.com/gh_mirrors/pc/pc_wxapkg_decrypt_python PC微信小程序wxapkg解密工具为技术开发者提供了…

张小明 2025/12/22 9:59:00 网站建设

静态html网址网站导航源码用织梦做模板网站

Qwen-Image-Edit-2509:当自然语言成为图像编辑的“画笔” 在电商运营的深夜,设计师正为即将到来的大促紧急修改上百张商品图——换颜色、改文案、调背景。这曾是视觉内容生产的常态:重复、耗时、高度依赖人力。而如今,只需一句“把…

张小明 2025/12/22 9:59:01 网站建设

怎样在手机上网站建设买个域名

1 题目 1014. 最佳观光组合 给你一个正整数数组 values&#xff0c;其中 values[i] 表示第 i 个观光景点的评分&#xff0c;并且两个景点 i 和 j 之间的 距离 为 j - i。 一对景点&#xff08;i < j&#xff09;组成的观光组合的得分为 values[i] values[j] i - j &…

张小明 2025/12/23 11:11:49 网站建设

自己做的网站字体变成方框盗版系统网站怎么建立

SVGAPlayer-Web-Lite轻量级动画播放器终极指南&#xff1a;移动端性能优化技巧 【免费下载链接】SVGAPlayer-Web-Lite 项目地址: https://gitcode.com/gh_mirrors/sv/SVGAPlayer-Web-Lite 还在为移动端Web动画卡顿、资源占用过高而烦恼吗&#xff1f;SVGAPlayer-Web-Li…

张小明 2025/12/23 16:43:17 网站建设

网站备案 主办单位wordpress 大站点

在现代网络管理和故障排查中&#xff0c;我们往往需要知道数据包从本机到目标主机的传输路径。Linux 系统提供的 traceroute 命令&#xff0c;正是一款能够帮助我们追踪数据包经过哪些路由器&#xff08;也称为“跳”&#xff09;的有力工具。本文将从原理、用法到实战案例&…

张小明 2025/12/23 21:09:28 网站建设

飞凡 做电商网站装修平台加盟

2025腾讯混元大模型本地部署实战&#xff1a;从零搭建你的私有AI推理引擎 【免费下载链接】Hunyuan-7B-Pretrain 腾讯开源大语言模型Hunyuan-7B-Pretrain&#xff0c;支持256K超长上下文&#xff0c;融合快慢思考模式&#xff0c;具备强大推理能力。采用GQA优化推理效率&#x…

张小明 2025/12/22 9:59:03 网站建设