[算法学习] Deepseek的算法创新:GRPO(Group Relative Policy Optimization)
[算法学习] Deepseek的算法创新:GRPO(Group Relative Policy Optimization)
[算法学习] Deepseek的算法创新:GRPO(Group Relative Policy Optimization) [算法学习] Deepseek的算法创新:GRPO(Group Relative Policy Optimization) Modified December 10, 2025 1371 1447 1. Actor (LLM) ◦ 左上角的蓝色框表示一个Actor,即大型语言模型(LLM),它根据输入生成策略。 ◦ 输入标记为 q,表示当前状态或上下文。 2. Policy ◦ Actor 生成一个策略分布 πθ(at∣q,a<t),表示在给定状态 q 和历史动作 a<t 下选择下一个动作 at 的概率分布。 3. 分组和动作选择 ◦ 策略被分成多个组(Group i=1 到 Group i=G),每个组对应一组动作选择。 ◦ 每个组内的动作选择通过策略分布进行采样,得到一系列动作 a1,a2,…,aG。 4. 奖励评估 ◦ 每个动作 ai对应一个奖励 ri,表示该动作的效果或质量。 5. 相对优势计算 ◦ 计算每个动作的相对优势,公式: A ^ i = std(r) r i −mean(r) ◦ ri 是第 i 个动作的奖励; ◦ mean(r) 表示所有动作奖励的平均值; ◦ std(r) 表示所有动作奖励的标准差。 计算实例 环境设定 假设有一个简单的游戏环境,玩家可以选择三种不同的策略(A、B、C),并在每次游戏中根据选择的策略获得分数。我们的目标是通过比较不同组中的策略表现,优化策略的选择。 第一步:采样动作组 生成候选策略: ◦ 从当前策略中随机生成三组策略样本。 ◦ 组1: 策略A, 策略B, 策略C ◦ 组2: 策略A, 策略B, 策略C ◦ 组3: 策略A, 策略B, 策略C 策略A,B,C可以分别理解为一个函数,而组1,2,3对应的是函数的条件值(比如x) 我们可以假设策略A,B,C的初始权重均为1/3(就是没有倾向性) 第二步:奖励评估 模拟并记录得分: ◦ 对每个组中的策略进行模拟,并记录每个策略的得分。(分数就随便写了,做个demo) ◦ 组1: A(8分), B(5分), C(7分) ◦ 组2: A(6分), B(9分), C(4分) ◦ 组3: A(7分), B(6分), C(8分) 第三步:计算相对优势 计算每组内的相对优势: 首先计算每组内所有策略得分的平均值。 ◦ 组1的平均分 = (8 + 5 + 7) / 3 = 6.67 ◦ 组2的平均分 = (6 + 9 + 4) / 3 = 6.33 ◦ 组3的平均分 = (7 + 6 + 8) / 3 = 7 然后计算每个策略相对于该组平均分的优势。 ◦ 组1: ▪ A: 优势=8−6.67=1.33 ▪ B: 优势=5−6.67=−1.67 ▪ C: 优势=7−6.67=0.33 ◦ 组2: ▪ A: 优势=6−6.33=−0.33 ▪ B: 优势=9−6.33=2.67 ▪ C: 优势=4−6.33=−2.33 ◦ 组3: ▪ A: 优势=7−7=0 ▪ B: 优势=6−7=−1 ▪ C: 优势=8−7=1 第四步:聚合相对优势 汇总各组中每个策略的相对优势: 将所有组中每个策略的相对优势相加,得到每个策略的总体优势。 ◦ A: 1.33+(−0.33)+0=1 ◦ B: −1.67+2.67+(−1)=0 ◦ C: 0.33+(−2.33)+1=−1 第五步:应用KL散度约束更新策略 调整策略的概率分布: ◦ 已知ABC策略初始概率分布为 [1/3, 1/3, 1/3]。 ◦ 根据相对优势调整后的权重可以通过指数函数来转换,以确保权重为正数且总和为1。 ◦ 计算未归一化的权重: A: e 1 ≈2.178 B: e 0 =1 C: e − 1≈0.368 归一化权重: ◦ 总和 = 2.718 + 1 + 0.368 = 4.086 ◦ 新权重: A: 4.086 2.718 ≈0.665 B: 4.086 1 ≈0.245 C: 4.086 0.368 ≈0.09 结论 通过上面的步骤可以看到: • 策略A 的总体优势最高,因此其权重增加到约0.665。 • 策略B 表现中等,权重基本保持不变,约为0.245。 • 策略C 表现较差,权重减少到约0.090。 在不同场景(不同组)的计算,每个策略的权重会相应调整以获得更高的分数。在文本生成阶段,可以用来评估和调整不同生成策略(比如贪婪搜索,随机采样,束搜索)的有效性,从而提高生成文本(尤其是复杂文本)的连贯性和多样性。(DeepSeek 在2024年4月推出的 DeepSeekMath 模型中首次采用了 GRPO算法。该模型专门针对数学推理与计算问题设计,通过结合7B参数和GRPO算法,其数学能力宣称超越需要千亿参数的GPT 4。之后的V3和R1也应用了GRPO提升模型的推理能力,所以爆火还是有扎实基础的) 相比其他算法的优劣势 优势 1. 相对优势计算 ◦ 自适应性强:GRPO通过计算每个策略的相对优势,能够自适应地调整策略的选择概率,从而在不断变化的环境中保持较高的灵活性。 ◦ 局部优化与全局平衡:它不仅关注单个策略的表现,还考虑了组内所有策略的相对表现,有助于找到全局最优解。 2. KL散度约束 ◦ 平稳过渡:使用KL散度约束确保新旧策略分布之间的差异不会过大,避免了剧烈的变化导致的不稳定性。 ◦ 防止过拟合:通过限制分布的变化幅度,有助于防止模型过度依赖某些特定策略而导致过拟合问题。 3. 群体智能 ◦ 利用群体智慧:通过分组比较和相对优势计算,GRPO能够充分利用群体中的多样化信息,找到更优的解决方案。 劣势 1. 计算复杂度 ◦ 高计算成本:相对于一些简单的优化算法(如梯度下降),GRPO需要多次迭代和复杂的计算步骤(如相对优势计算、KL散度约束等),这增加了计算开销。 2. 收敛速度 ◦ 较慢收敛:由于需要反复评估和调整策略权重,GRPO可能比一些直接优化方法(如基于梯度的方法)收敛得更慢。 3. 初始化敏感 ◦ 依赖初始策略:GRPO的性能很大程度上取决于初始策略的选择。如果初始策略设置不当,可能会导致较长的探索期或陷入局部最优解。 1. Actor (LLM) ◦ 左上角的蓝色框表示一个Actor,即大型语言模型(LLM),它根据输入生成策略。 ◦ 输入标记为 q,表示当前状态或上下文。 ◦ 左上角的蓝色框表示一个Actor,即大型语言模型(LLM),它根据输入生成策略。 ◦ 输入标记为 q,表示当前状态或上下文。 2. Policy ◦ Actor 生成一个策略分布 πθ(at∣q,a<t),表示在给定状态 q 和历史动作 a<t 下选择下一个动作 at 的概率分布。 ◦ Actor 生成一个策略分布 πθ(at∣q,a<t),表示在给定状态 q 和历史动作 a<t 下选择下一个动作 at 的概率分布。 3. 分组和动作选择 ◦ 策略被分成多个组(Group i=1 到 Group i=G),每个组对应一组动作选择。 ◦ 每个组内的动作选择通过策略分布进行采样,得到一系列动作 a1,a2,…,aG。 ◦ 策略被分成多个组(Group i=1 到 Group i=G),每个组对应一组动作选择。 ◦ 每个组内的动作选择通过策略分布进行采样,得到一系列动作 a1,a2,…,aG。 4. 奖励评估 ◦ 每个动作 ai对应一个奖励 ri,表示该动作的效果或质量。 ◦ 每个动作 ai对应一个奖励 ri,表示该动作的效果或质量。 5. 相对优势计算 ◦ 计算每个动作的相对优势,公式: A ^ i = std(r) r i −mean(r) ◦ ri 是第 i 个动作的奖励; ◦ mean(r) 表示所有动作奖励的平均值; ◦ std(r) 表示所有动作奖励的标准差。 ◦ 计算每个动作的相对优势,公式: A ^ i = std(r) r i −mean(r) ◦ ri 是第 i 个动作的奖励; ◦ mean(r) 表示所有动作奖励的平均值; ◦ std(r) 表示所有动作奖励的标准差。 计算实例 环境设定 假设有一个简单的游戏环境,玩家可以选择三种不同的策略(A、B、C),并在每次游戏中根据选择的策略获得分数。我们的目标是通过比较不同组中的策略表现,优化策略的选择。 第一步:采样动作组 生成候选策略: ◦ 从当前策略中随机生成三组策略样本。 ◦ 组1: 策略A, 策略B, 策略C ◦ 组2: 策略A, 策略B, 策略C ◦ 组3: 策略A, 策略B, 策略C 策略A,B,C可以分别理解为一个函数,而组1,2,3对应的是函数的条件值(比如x) 我们可以假设策略A,B,C的初始权重均为1/3(就是没有倾向性) ◦ 从当前策略中随机生成三组策略样本。 ◦ 组1: 策略A, 策略B, 策略C ◦ 组2: 策略A, 策略B, 策略C ◦ 组3: 策略A, 策略B, 策略C 策略A,B,C可以分别理解为一个函数,而组1,2,3对应的是函数的条件值(比如x) 我们可以假设策略A,B,C的初始权重均为1/3(就是没有倾向性) 第二步:奖励评估 模拟并记录得分: ◦ 对每个组中的策略进行模拟,并记录每个策略的得分。(分数就随便写了,做个demo) ◦ 组1: A(8分), B(5分), C(7分) ◦ 组2: A(6分), B(9分), C(4分) ◦ 组3: A(7分), B(6分), C(8分) ◦ 对每个组中的策略进行模拟,并记录每个策略的得分。(分数就随便写了,做个demo) ◦ 组1: A(8分), B(5分), C(7分) ◦ 组2: A(6分), B(9分), C(4分) ◦ 组3: A(7分), B(6分), C(8分) 第三步:计算相对优势 计算每组内的相对优势: 首先计算每组内所有策略得分的平均值。 ◦ 组1的平均分 = (8 + 5 + 7) / 3 = 6.67 ◦ 组2的平均分 = (6 + 9 + 4) / 3 = 6.33 ◦ 组3的平均分 = (7 + 6 + 8) / 3 = 7 然后计算每个策略相对于该组平均分的优势。 ◦ 组1: ▪ A: 优势=8−6.67=1.33 ▪ B: 优势=5−6.67=−1.67 ▪ C: 优势=7−6.67=0.33 ◦ 组2: ▪ A: 优势=6−6.33=−0.33 ▪ B: 优势=9−6.33=2.67 ▪ C: 优势=4−6.33=−2.33 ◦ 组3: ▪ A: 优势=7−7=0 ▪ B: 优势=6−7=−1 ▪ C: 优势=8−7=1 首先计算每组内所有策略得分的平均值。 ◦ 组1的平均分 = (8 + 5 + 7) / 3 = 6.67 ◦ 组2的平均分 = (6 + 9 + 4) / 3 = 6.33 ◦ 组3的平均分 = (7 + 6 + 8) / 3 = 7 然后计算每个策略相对于该组平均分的优势。 ◦ 组1: ▪ A: 优势=8−6.67=1.33 ▪ B: 优势=5−6.67=−1.67 ▪ C: 优势=7−6.67=0.33 ▪ A: 优势=8−6.67=1.33 ▪ B: 优势=5−6.67=−1.67 ▪ C: 优势=7−6.67=0.33 ◦ 组2: ▪ A: 优势=6−6.33=−0.33 ▪ B: 优势=9−6.33=2.67 ▪ C: 优势=4−6.33=−2.33 ▪ A: 优势=6−6.33=−0.33 ▪ B: 优势=9−6.33=2.67 ▪ C: 优势=4−6.33=−2.33 ◦ 组3: ▪ A: 优势=7−7=0 ▪ B: 优势=6−7=−1 ▪ C: 优势=8−7=1 ▪ A: 优势=7−7=0 ▪ B: 优势=6−7=−1 ▪ C: 优势=8−7=1 第四步:聚合相对优势 汇总各组中每个策略的相对优势: 将所有组中每个策略的相对优势相加,得到每个策略的总体优势。 ◦ A: 1.33+(−0.33)+0=1 ◦ B: −1.67+2.67+(−1)=0 ◦ C: 0.33+(−2.33)+1=−1 将所有组中每个策略的相对优势相加,得到每个策略的总体优势。 ◦ A: 1.33+(−0.33)+0=1 ◦ B: −1.67+2.67+(−1)=0 ◦ C: 0.33+(−2.33)+1=−1 第五步:应用KL散度约束更新策略 调整策略的概率分布: ◦ 已知ABC策略初始概率分布为 [1/3, 1/3, 1/3]。 ◦ 根据相对优势调整后的权重可以通过指数函数来转换,以确保权重为正数且总和为1。 ◦ 计算未归一化的权重: ◦ 已知ABC策略初始概率分布为 [1/3, 1/3, 1/3]。 ◦ 根据相对优势调整后的权重可以通过指数函数来转换,以确保权重为正数且总和为1。 ◦ 计算未归一化的权重: A: e 1 ≈2.178 B: e 0 =1 C: e − 1≈0.368 归一化权重: ◦ 总和 = 2.718 + 1 + 0.368 = 4.086 ◦ 新权重: A: 4.086 2.718 ≈0.665 B: 4.086 1 ≈0.245 C: 4.086 0.368 ≈0.09 ◦ 总和 = 2.718 + 1 + 0.368 = 4.086 ◦ 新权重: A: 4.086 2.718 ≈0.665 B: 4.086 1 ≈0.245 C: 4.086 0.368 ≈0.09 结论 通过上面的步骤可以看到: • 策略A 的总体优势最高,因此其权重增加到约0.665。 • 策略B 表现中等,权重基本保持不变,约为0.245。 • 策略C 表现较差,权重减少到约0.090。 在不同场景(不同组)的计算,每个策略的权重会相应调整以获得更高的分数。在文本生成阶段,可以用来评估和调整不同生成策略(比如贪婪搜索,随机采样,束搜索)的有效性,从而提高生成文本(尤其是复杂文本)的连贯性和多样性。(DeepSeek 在2024年4月推出的 DeepSeekMath 模型中首次采用了 GRPO算法。该模型专门针对数学推理与计算问题设计,通过结合7B参数和GRPO算法,其数学能力宣称超越需要千亿参数的GPT 4。之后的V3和R1也应用了GRPO提升模型的推理能力,所以爆火还是有扎实基础的) 相比其他算法的优劣势 优势 1. 相对优势计算 ◦ 自适应性强:GRPO通过计算每个策略的相对优势,能够自适应地调整策略的选择概率,从而在不断变化的环境中保持较高的灵活性。 ◦ 局部优化与全局平衡:它不仅关注单个策略的表现,还考虑了组内所有策略的相对表现,有助于找到全局最优解。 ◦ 自适应性强:GRPO通过计算每个策略的相对优势,能够自适应地调整策略的选择概率,从而在不断变化的环境中保持较高的灵活性。 ◦ 局部优化与全局平衡:它不仅关注单个策略的表现,还考虑了组内所有策略的相对表现,有助于找到全局最优解。 2. KL散度约束 ◦ 平稳过渡:使用KL散度约束确保新旧策略分布之间的差异不会过大,避免了剧烈的变化导致的不稳定性。 ◦ 防止过拟合:通过限制分布的变化幅度,有助于防止模型过度依赖某些特定策略而导致过拟合问题。 ◦ 平稳过渡:使用KL散度约束确保新旧策略分布之间的差异不会过大,避免了剧烈的变化导致的不稳定性。 ◦ 防止过拟合:通过限制分布的变化幅度,有助于防止模型过度依赖某些特定策略而导致过拟合问题。 3. 群体智能 ◦ 利用群体智慧:通过分组比较和相对优势计算,GRPO能够充分利用群体中的多样化信息,找到更优的解决方案。 ◦ 利用群体智慧:通过分组比较和相对优势计算,GRPO能够充分利用群体中的多样化信息,找到更优的解决方案。 劣势 1. 计算复杂度 ◦ 高计算成本:相对于一些简单的优化算法(如梯度下降),GRPO需要多次迭代和复杂的计算步骤(如相对优势计算、KL散度约束等),这增加了计算开销。 ◦ 高计算成本:相对于一些简单的优化算法(如梯度下降),GRPO需要多次迭代和复杂的计算步骤(如相对优势计算、KL散度约束等),这增加了计算开销。 2. 收敛速度 ◦ 较慢收敛:由于需要反复评估和调整策略权重,GRPO可能比一些直接优化方法(如基于梯度的方法)收敛得更慢。 ◦ 较慢收敛:由于需要反复评估和调整策略权重,GRPO可能比一些直接优化方法(如基于梯度的方法)收敛得更慢。 3. 初始化敏感 ◦ 依赖初始策略:GRPO的性能很大程度上取决于初始策略的选择。如果初始策略设置不当,可能会导致较长的探索期或陷入局部最优解。 ◦ 依赖初始策略:GRPO的性能很大程度上取决于初始策略的选择。如果初始策略设置不当,可能会导致较长的探索期或陷入局部最优解。 👨💻 作者:吵爷 作者:吵爷 基础概念 GRPO(Group Relative Policy Optimization)是一种基于强化学习的算法,通常用于多智能体环境中的优化任务。在这种设置下,多个智能体协同工作来优化某一目标函数。在这种背景下,GRPO强调通过分组策略的方式,优化不同组内的智能体策略,并在此基础上提升整体的表现。 比如: • 组间对比:若组A的平均奖励高于组B,GRPO会激励组A的策略,同时推动组B向组A学习。 • 均衡优化:避免单个智能体过优化,提升群体协作或跨任务泛化能力。 参考论文:https://arxiv.org/pdf/2402.03300 DeepSeekMath: Pushing the Limits of Mathematical Reasoning in Open Language Models GRPO的计算步骤