
通过强化学习(RL)来提升大语言模型(LLM)的推理能力,已经成为行业的共识。然而,在跨领域任务(如数学推理和代码生成)中,如何让模型“鱼与熊掌兼得”,仍然是一个巨大的挑战。
近期,快手 Kwaipilot 团队针对现有 GRPO 系列技术方案在处理数学与代码混合数据时表现出的性能瓶颈和效率低下问题,提出了一种全新的方法——两阶段历史重采样策略优化(SRPO)。
实验结果表明,SRPO 仅用 10% 的训练步数,就在 AIME24和 LiveCodeBench 基准测试中超越了 DeepSeek-R1-Zero-Qwen-32B!
这背后究竟隐藏了哪些“黑科技”?让我们一起来揭开 SRPO 的神秘面纱!

论文标题:
SRPO: A Cross-Domain Implementation of Large-Scale Reinforcement Learning on LLM
论文地址:
https://arxiv.org/abs/2504.14286
模型开源地址:
https://huggingface.co/Kwaipilot/SRPO-Qwen-32B

两阶段训练范式:优雅化解数学与代码的“冲突”
在研究初期,快手 Kwaipilot 团队发现了一个有趣的现象:数学问题和代码问题对模型输出长度的偏好存在显著差异。具体来说,数学任务需要链式推理(Chain-of-Thought),鼓励模型一步步推导;而代码任务则更注重简洁高效,追求精炼的表达。
为了验证这一点,他们尝试了几种不同的数据策略:
-
数学与代码数据混合训练;
-
仅使用数学数据训练;
-
仅使用代码数据训练。

如上图所示,可以明显看出数学与代码数据在输出长度上的偏好是不同的!具体来说,只使用代码训练时,模型的输出并没有明显变长,甚至轻微下降。
而仅仅使用数学数据时,模型的输出整体是变得越来越长,从初始的 500 左右变成最后的 2500,变长了 5 倍。混合训练时,长度介于单独训练的两种策略长度之间。
从生成质量上来看,几种策略也是各有优劣。只使用代码数据来训练,模型的输出总是偏短,生成内容里缺乏逐步推理过程以及细节上的分析。
仅仅使用数学数据训练时,模型的深度思考能力被有效激发,不过输出过长,存在一定冗余。简单的数据混合策略,未能充分发挥两种数据类型的优势,反而导致生成长度不足、推理过程不够细致等问题。
由此可见,数学与代码两种数据具有不同的特性,简单的融合并不能集成优点。针对这个问题,Kwaipilot 团队的 SRPO 方案设计了两阶段的训练策略。
基于数学与代码能力的特性,第一阶段使用数学数据来训练模型,激发模型的深度思考能力,包括反思、回溯和分步推理。而后在第二阶段引入代码数据,在已有的推理基础上发展程序化思维。

实验结果显示,相比简单地混合数据,该两阶段策略在 AIME24 和 LiveCodeBench 两个主流数据集上分别取得了 3.8 和 2.4 的提升,充分证明了其优势!

历史重采样:破解GRPO的零方差难题
除了数据策略的优化,快手 Kwaipilot 团队还针对 GRPO 训练中的一个关键问题提出了创新解决方案——历史重采样(History Resampling, HR) 。
在 GRPO 训练过程中,模型的优势函数是通过对多次采样的奖励分数进行归一化计算得到的。通过鼓励正优势的样本与抑制负优势样本来实现模型的优化。因此,同一个输入的多次采样输出结果,需要维持一定的差异性,才是 GRPO 优化的最佳配置。
然而,当模型在简单任务上的表现过于稳定时,奖励信号的方差会趋近于零,导致梯度更新失效,这就是所谓的“零方差问题”。

统计结果显示,约有 50% 的输入在多次采样中,输出结果差异性很小。这种采样结果之间的过小差异,缺乏有效的对比信息,约束了 GRPO 的性能。
为了解决这一问题,SRPO 引入了历史重采样机制 :
-
过滤“过于简单”的样本:对于那些所有 rollout 都正确的样本,直接排除,因为它们无法提供有效的对比信息;
-
保留“有信息量”的样本:保留那些产生混合结果(既有正确也有不正确)或所有输出都错误的样本,这些样本具有正的奖励方差,能够确保非零优势和有效的梯度信号;
-
保留困难样本:对于当前 epoch 内所有 rollout 均不正确的样本,继续保留在数据集中。随着模型的迭代,这些原本困难的问题可能会变得更容易,从而在后续 rollout 中产生正的优势。

通过这一机制,SRPO 不仅显著提高了样本利用率,还有效提升了模型的推理能力。实验结果显示,历史重采样在后期提升了输入训练的难度,促使模型持续增强推理能力,而非单纯增加输出长度,从而有效避免了 reward hacking。

在训练数据层面,快手 Kwaipilot 团队构建了高质量的数学与代码数据集。基于现有的公开数据集,团队通过数据筛选、质量检验、难度分类等流程,构造了一个涵盖数学和代码任务的训练数据集。结合两阶段训练范式和历史重采样技术,SRPO 以 Qwen-2.5-Base-32B 为基座进行了增量训练。

实验结果令人惊艳:
-
在 AIME24 和 LiveCodeBench 基准测试中,SRPO 分别取得了 50.0 和 41.6 的 pass@1 分数,超越了 DeepSeek-R1-Zero-Qwen-32B 的表现(分别为 47.0 和 40.2)。
-
更重要的是,SRPO 仅用了后者 10% 的训练步数,展现了极高的效率!
有趣的是,得益于 SRPO 的两阶段训练策略,模型还展现出了灵活结合数学与代码能力的特点。例如,在解决复杂数学问题时,模型甚至会自发地用代码验证结果。这种能力的结合也为未来的研究提供了新的方向。

快手 Kwaipilot 团队的 SRPO 研究不仅是技术上的突破,也为通用人工智能的发展提供了新的思路。通过两阶段训练范式和历史重采样技术,SRPO 成功解决了数学与代码任务之间的冲突问题,显著提升了模型的推理能力和训练效率。
从长远来看,这项研究具有重要意义,涵盖以下几个方面:
-
跨领域推理的新思路:SRPO 的两阶段训练范式为未来跨领域任务的训练提供了宝贵经验;
-
实际应用场景:SRPO 通过灵活结合数学与代码能力,展现了其在教育、工业自动化等领域的广阔应用前景。
正如团队所展示的那样,只有不断优化方法论,才能让大模型真正成为人类智慧的延伸。未来的 AI,不仅能帮我们解题,还能写出高质量的代码,甚至创造更多可能性!
🔍
现在,在「知乎」也能找到我们了
进入知乎首页搜索「PaperWeekly」
点击「关注」订阅我们的专栏吧

(文:PaperWeekly)