从ReFT, Kimi K1.5到DeepSeek R1,聊聊Reasoning Model的精巧实现

最近 Reasoning Model(推理模型)异常火爆,Kimi 和 DeepSeek 陆续推出自家的产品 K1.5 和 R1,效果追评甚至超过 o1,也引起了大家的关注,甚至 OpenAI 也慌了。

我也第一时间体验了下产品的效果,推理能力确实惊艳。也非常好奇到底用了什么技术。国内的 LLM 开源玩家算是比较良心的,模型开源的同时,一些技术细节也都发表出来,也能进一步解答大家的好奇心。 

过年期间正好忙里偷闲,可以静下来好好整理下这块内容。我个人认为主要有三篇工作比较清晰的讲述了 Reasoning Model 的探索过程,分别是:字节的 ReFT、Kimi 的 K1.5 和 DeepSeek 的 R1。

看完总结下来:大家方法趋同,核心都是在 Post-Training 阶段通过 RL(Reinforcement learning)提升模型的推理能力。这也不禁让人感叹,Reasoning Model 看似 o1 放出的杀手锏,"国产之光"的复现竟可以做到如此精巧、简洁。 

在介绍三篇工作前,我也想按自己的理解先来介绍一些早期的 o1 的猜想。也方便与本文要介绍的工作做些对比,也好理解为什么说复现的工作是精巧、简洁的。

图片

Reasoning Model的早期猜想

自从 OpenAI 发布 o1 模型后,让我们体验到 LLM 在复杂问题的推理能力上的进步。Reasoning Model(推理模型)的复现之路也成为各家大模型追捧的热点。在猜想和复现的过程中,试图从 OpenAI、Google、微软的近期的研究中找到一些蛛丝马迹,其中主流的一些猜测集中在使用 PRM 和 MCTS 方法,在 Post-training 和 Inference 阶段提升推理性能。 

我们简单看下使用 PRM 和 MCTS 方法是如何提升推理性能的? 

1.1 PRM增强推理能力

PRM(Process-supervised Reward Model)是 OpenAI 在 Let’s Verify Step by Step [1] 一文中首次提出的概念。与之相对应的是ORM(Outcome-supervised Reward Model)。

PRM 和 ORM 都是奖励模型,两者区别: 

  • PRM:过程奖励模型,是在生成过程中,分步骤,对每一步进行打分,是更细粒度的奖励模型。 

  • ORM:结果奖励模型,是不管推理有多少步,对完整的生成结果进行一次打分,是一个反馈更稀疏的奖励模型。 

使用 PRM 可以在 Post-Training 和 Inference 两阶段提升模型的推理性能。 

Post-Training 阶段:在偏好对齐阶段,通过在 RL 过程中增加 PRM,对采样的结果按步骤输出奖励值,为模型提供更精细的监督信号,来指导策略模型优化,提升模型按步推理的能力。

Inference 阶段:对于一个训练好的 PRM,可以在 Inference 阶段来筛选优质生成结果。具体来说。对 generator 模型做 N 次采样(如 Beam Search 方法等),并通过 PRM 对每个采样的每步推理进行打分,最终拟合一个整体过程打分,并选取打分最高的结果作为最终的答案。

这里我们假设基础的 generator 模型在 pretrain 后做了指令微调(SFT),有基本的推理能力(能按步骤生成答案,但推理准确性可能较差)。

1.2 MCTS增强推理能力

MCTS(Monte Carlo Tree Search)是强化学习领域提出的方法,通过采样方式预估当前动作或状态的价值。具体操作步骤:使用已有的策略与环境做仿真交互,进行多次 rollout 采样,最终构成了一个从当前节点出发的一颗 Tree(每个 rollout 表示从当前节点到最终结束状态的多次与环境仿真交互的过程)。

这颗 Tree 的所有叶子节点都是结束状态,结束状态是能量化收益的(量化收益的方法:比如方法 1:答案错误收益-1,答案正确收益 +3;再比如方法 2:叶子节点的收益是到达叶子节点路径数/总路径数的概率,这是一种根据投票机制预估的价值,越多路径到达叶子节点,说明这个叶子节点越置信,那么这个叶子节点就有更高的奖励)。

一颗 Tree 的叶子节点有了奖励值,就可通过反向传播,计算每个中间节点的奖励值,最终计算出整个 Tree 所有节点的奖励值。MCTS 一次 rollout 包括:select,expand,simulate,backprop 四个步骤。我们展开描述下四个步骤的具体工作。

Sample(采样):选择一个未被探索的节点,在 Reasoning Model 中节点表示一个打了特定 tag 的推理步骤(如:planning 节点,reflection 节点等)。初始情况,Tree 只有一个表示原始问题的节点(如下图 1 的 )。

expand(扩展):从未被选择的节点出发(如初始从 ),展开所有可能的子节点(如下图 1 中的 )。当然对于文本生成模型不可能穷举所有的子节点,需要设置个最大生成次数,在有限生成次数内的所有的不同的输出,认为是子节点的集合。

simulate(模拟):从展开的子节点里,再随机选择一个节点,再展开它的子节点,重复做 expand 过程。直到最终到达叶子节点(生成答案)。当然这里也会控制最大树深度,模拟会进行 N 次。

backprop(回传):通过多次模拟我们得到了一个从根节点(原始问题 )到叶子节点(最终生成答案)的 Tree,如下图 1 所示。

我们通过计算(从当前节点出发到正确答案的路径数/从当前节点出发总路径数)的比值作为节点的奖励值。这个奖励值隐含表示的是从当前节点出发能得到正确答案的潜在的可能性。

比如以  节点为例,从  出发共有 4 条路径,分别是:, , ,  其中有 2 条路径都能走到正确答案。所以  的奖励值为 1/2。我们通过从后往前回溯,能计算出 Tree 中所有节点的奖励值。

图片

▲ 图1. MCTS生成Search Tree过程

使用 MCTS 提升模型的推理能力,也可在 Post-Training 和 inference 两阶段来实现。 

Post-Traing 阶段:对于每个 problem 通过上述方法构造一个搜索 Tree,然后进行 Tree 的游走遍历采样,再用采样的样本 SFT 或 RL 训练模型。 

Inference阶段:在推理阶段,也是对一个 problem 探索多节点构造一颗搜索 Tree,对于到达正确答案的路径,根据节点路径的置信度打分,贪心选取最优路径作为最终的推理结果。 

使用 PRM 和 MCTS 训练推理模型的大致框图,如图 2 所示,主要是在 Post Training 和 Inference 阶段使用来提升模型的推理能力。

图片

▲ 图2. 基于PRM和MCTS的推理模型

注:这里对 PRM 和 MCTS 在 Reasoning Model 上的使用,是个人参考 paper 和网上的一些资料的总结,可能有不准确的地方。如有错误,欢迎指正

1.3 PRM和MCTS方法存在的问题

PRM 和 MCTS 的方法理论上都有自身的优势。对于复杂的推理过程,PRM 可以按步骤做细粒度的监督,MCTS 可以自动探索解空间。两者配合可以在探索(Exploration)和利用(Exploitation)上做平衡,以提升复杂问题的推理能力。 

但在实践中这两种方法存在明显的局限性: 

PRM 的局限:对于一般的推理任务,很难定义一个精细的执行步骤。对于语言模型判断一个中间步骤是否正确是一项艰巨的任务。另外对于 PRM 训练样本的质量要求较高,使用模型进行自动标注可能无法取得令人

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值