【Reasoning】Improve Mathematical Reasoning in LanguageModels by Automated Process Supervision

Improve Mathematical Reasoning in LanguageModels by Automated Process Supervision

arxiv: https://arxiv.org/abs/2406.06592

问题背景

COT和SC-COT对于模型推理能力的提升仍然有效,已有研究提出用一个验证器去帮助LLM提升推理能力。采用ORM结果验证器岁可以对最终结果生成一个信号,但是不能去奖励或者惩罚中间步骤。采用PRM可以对中间步骤在更细粒度的视角下,对中间步骤进行奖励或者惩罚。受到AlphaGo Zero的启发,本文提出了一个分而治之的蒙特卡洛树搜索算法OmegaPRM,来有效的收集高质量过程监督数据。

本文方法

这篇论文提出了一种名为OmegaPRM的新型分治风格蒙特卡罗树搜索(MCTS)算法,通过引入二分搜索算法来高效识别COT中的第一个错误快速定位错误位置,用于自动收集高质量的过程监督数据。

(1)蒙特卡洛过程标注方法

已有的方式是构建了一个『完成者』策略,接受一个问题q和一个包含前t步骤 x 1 : t x_{1:t} x1:t的前缀解决方案,并输出后续步骤的完成度。
在这里插入图片描述
在图里的(a)中,对于解决方案的任何步骤,可以使用更完备的策略从该步骤随机抽样k个rollout。然后,将这些rollout后得到的最终答案与正确答案进行比较,评估出一个前缀步骤的『正确性等级』,公式如下:

在这里插入图片描述
这种方式计算了从步骤t开始后所有rollout里得到正确答案的比例情况,这种方式需要从头到尾执行每个步骤的rollout,需要大量的调用,开销过大。

为了优化标注效率,本文提出了一种基于二分搜索的蒙特卡洛的方法。当解决方案中出现了第一个错误步骤时,这种数据就足以用来训练PRM。基于这种想法,本文的目标是有采用有效的方式定位第一个错误。主要是通过重复划分解决方案和执行rollout来实现这一点。

  • 二分搜索定位错误大致流程:
    假设我们的目标数据是真负例,首先从中点步骤m将其拆分,然后对前半步骤1:m执行rollout,当 c m > 0 c_m>0 cm>0时,表示前半步骤中至少有一个步骤是正确的可以得到正确的答案,错误步骤在后半部分。当 c m = 0 c_m=0 cm=0时,说明前半部分中很有可能有错误步骤,因为从该步骤往后进行rollout后的结果中没有一个是正确的。

以此方式不断迭代定位错误,直至到达停止条件(该解过程足够短,视为单个步骤)。从而将时间复杂度从O(kM),缩短至O(klogM)。

### ReAct框架在语言模型中的协同推理与行动 ReAct 是一种旨在增强语言模型能力的框架,它通过允许模型执行动态推理来创建、维护并调整行动计划,从而实现更高效的决策过程[^2]。具体来说,在 ReAct 的设计中,模型被赋予了两种核心功能:**推理(Reasoning)** 和 **行动(Action-taking)**。 #### 推理模块的功能 推理模块负责分析当前环境状态以及历史交互数据,生成高层次的战略规划或中间目标。这种推理可以基于输入上下文进行复杂逻辑推导,并预测可能的结果。例如,当面对复杂的多步任务时,推理部分会分解整个流程为若干子任务,并制定初步方案。 #### 行动模块的作用 一旦制定了策略或者明确了下一步方向之后,就需要采取实际行动去改变外部世界的状态或者是获取更多信息以便进一步优化后续步骤的选择。因此,行动模块依据来自推理层给出的具体指示完成实际操作——这可能是查询数据库、调用API接口亦或是物理机器人移动等不同类型的动作表现形式。 #### 动态反馈机制 值得注意的是,ReAct 并不是一次性地决定所有的行为序列;相反,它是持续监控每一步的效果并通过观察新产生的结果来进行自我修正的过程。这意味着即使最初的假设存在偏差甚至完全错误的情况下,该系统也能够及时发现这些问题所在之处并对原定计划作出相应修改直至达成最终目的为止。 ```python def react_framework(environment_state, history): while not goal_achieved(): reasoning_output = perform_reasoning(environment_state, history) action_to_take = determine_action(reasoning_output) new_environment_state, feedback = execute_and_observe(action_to_take) update_history(history, reasoning_output, action_to_take, feedback) def perform_reasoning(state, hist): # Complex logic to derive insights from state & history. pass def determine_action(insights): # Map derived insights into actionable steps. pass def execute_and_observe(action): # Execute an action and observe its effects on environment. pass def update_history(hist, r_out, a_taken, fbk): # Update internal records with latest information. pass ``` 上述伪代码展示了 ReAct 框架的一个简化版本工作流。其中包含了循环结构用于不断迭代直到满足终止条件即达到预定的目标位置;每次循环内部先做思考再付诸实践最后收集经验教训准备下一轮尝试。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

辰阳星宇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值