新智元报道
编辑:alan
【新智元导读】1/10训练数据激发高级推理能力!近日,来自清华的研究者提出了PRIME,通过隐式奖励来进行过程强化,提高了语言模型的推理能力,超越了SFT以及蒸馏等方法。
Tell me and I forget, teach me and I remember, involve me and I learn. 告诉我,我会忘记,教我,我会记住,让我参与,我就能学会。 ——本杰明·富兰克林
打破数据墙,我们还能做些什么?
近日,来自清华UIUC等机构的研究者提出了PRIME(Process Reinforcement through IMplicit REwards):通过隐式奖励来进行过程强化。
GitHub地址:https://github.com/PRIME-RL/PRIME
这是一种带有过程奖励的在线RL开源解决方案,可以提高语言模型的推理能力,超越了SFT(监督微调)或者蒸馏等方法。
对比SFT,PRIME让模型在重要基准测试上实现了巨大提升:平均提高了16.7%,在AMC和AIME中都提高了20%以上。
Eurus-2-7B-PRIME与Qwen2.5-Math-7B-Instruct,使用了相同的base model(Qwen-2.5-Math-7B),但在上表的6项测试中,5项都超越了instruct版本,同时也超越了GPT-4o。
而这个成绩只用了Qwen Math 1/10的数据资源(230K SFT + 150K RL)!
作者发布了本研究中使用的所有模型和数据,感兴趣的读者请见文后链接。
过程奖励模型
热身阶段(SFT)
如前所述,选择Qwen2.5-Math-7B-Base作为起点,然后上点难度,采用竞赛级别的数学和编程基准,包括AIME 2024、AMC、MATH-500、Minerva Math、OlympiadBench、LeetCode和LiveCodeBench(v2)。
首先对基础模型进行监督微调,以获得RL的入门模型(教模型学习某些推理模式)。
为此,研究人员设计了一个以动作为中心的链式推理框架,策略模型在每个步骤中选择7个动作中的一个,并在执行每个动作后停止。
为了构建SFT数据集,研究者从几个开源数据集中收集了推理指令。
值得注意的是,对于许多具有真实答案的数据集,作者选择将其保留用于之后的RL训练,目的是让SFT和RL使用不同的数据集,以使RL中的探索多样化,并且作者认为在PL中真实标签更加重要。
作者用LLaMA-3.1-70B-Instruct来回答指令,并使用系统提示要求模型执行以动作为中心的思维链。
隐式PRM
下面接入过程奖励模型(PRM),这里采用隐式PRM,只需要在响应级别标签上训练ORM。
过程奖励模型简单理解就是对每个推理步骤进行评分,举个例子:
PRM是以这种粒度来评价响应的。
在本文的隐式PRM中,可以使用以下方式免费获得过程奖励:
通过简单地收集响应水平数据和训练ORM来获得PRM,而无需注释步骤标签。
这与ORM训练目标的具体选择无关,比如使用交叉熵损失来实例化隐式PRM,就可以替换成:
强化学习
本文的目标是广泛利用强化学习(RL)来提高推理能力。针对这种资源有限的情况,作者总结了一些最佳实践:
从Ground Truth验证器和高质量数据开始:作者进行了严格的数据收集和清理,以获得可验证的RL数据,并发现仅使用结果验证器足以构建强大的基线。 作者比较了不同的RL算法得出结论,无价值模型的REINFORCE类方法足够有效。 使用「mid-difficulty」问题进行稳定训练:作者提出了一种名为在线提示过滤器的机制,通过过滤掉困难和简单的问题,在很大程度上稳定了RL训练。使用PRM进行强化学习
将PRM集成到在线强化学习中并非易事,这里有几个需要解决的关键挑战。
如何为强化学习提供密集奖励?
奖励稀疏性一直是强化学习中长期存在的问题。到目前为止,我们仍然没有特别好的解决方案来为LLM的在线强化学习构建密集奖励。
以前的方法主要是为密集奖励建立一个额外的价值模型,众所周知,这样的模型很难训练,而且性能提升不大。
根据前文对隐式PRM的介绍,使用
可以免费从隐式PRM中获得token级别的过程奖励。
这种方式可以直接取代PPO中的价值模型,非常容易与任何优势估计函数和结果奖励相结合。在实践中,作者将过程奖励与REINFORCE、RLOO、GRPO、ReMax和PPO集成在一起,并进行了细微的修改。
如何设置一个好的PRM来启动RL?
即使我们找到了在RL中使用过程奖励的途径,训练好的PRM也并非易事:需要收集大规模(过程)奖励数据(很贵),并且模型应该在泛化和分布偏移之间取得良好的平衡。
隐式PRM本质上是一种语言模型。因此从理论上讲,可以使用任何语言模型作为PRM。在实践中,作者发现最初的策略模型本身就是的一个很好的选择。
如何在线更新PRM以防止奖励黑客攻击?
在线RL中,避免RM被过度优化或被黑客入侵至关重要,这需要RM与策略模型一起不断更新。然而,鉴于步骤标签的成本很高,在RL训练期间很难更新PRM,——可扩展性和泛化问题。
但是,本文的隐式PRM仅要求更新结果标签。也就是说,使用结果验证器即可在训练期间轻松更新PRM。
此外,还可以进行双重转发:首先使用策略部署更新PRM,然后使用更新的PRM重新计算过程奖励,从而提供更准确的奖励估算。
PRIME算法
下图表示PRIME算法的整个循环:
策略模型和PRM都使用SFT模型进行初始化。对于每个RL迭代,策略模型首先生成输出。然后,隐式PRM和结果验证器对输出进行评分,隐式PRM在输出时通过结果奖励进行更新。最后,将结果奖励ro和过程奖励rp组合在一起,用于更新策略模型。
以下是算法的伪代码:
实验
默认情况下,使用SFT模型初始化隐式PRM,并保留SFT模型作为参考对数探测器。超参数方面,策略模型的学习率固定为5e-7,PRM学习率为1e-6,使用AdamW优化器,mini batchsize大小为256,micro batchsize为8。
rollout阶段收集256个提示,每个提示采样4个响应。PRM训练时β=0.05,所有实验中将KL系数设置为0。
将PRIME与仅带有结果验证器(OV)的RLOO进行比较,与稀疏奖励相比,PRIME将RL训练加速了2.5倍,并将最终奖励提高了6.9%,且方差更低。在下游任务上,PRIME的性能也始终优于OV。
下面展示PRM在线更新的重要性。比较两种设置:在线PRM使用Eurus-2-7B-SFT初始化,离线PRM使用EurusPRM-Stage1初始化。
从下图中可以看出,在线PRM在训练集和测试集上的性能都大大优于离线PRM。
参考资料:
https://curvy-check-498.notion.site/Process-Reinforcement-through-Implicit-Rewards-15f4fcb9c42180f1b498cc9b2eaf896f
https://the-decoder.com/ai-learns-math-better-with-new-approach-that-uses-a-fraction-of-the-data/