Marco-o1: Towards Open Reasoning Modelsfor Open-Ended Solutions
arxiv:https://arxiv.org/abs/2411.14405
github: https://github.com/AIDC-AI/Marco-o1
问题背景
COT微调、MCTS、反思机制和创新推理策略等技术为Marco-o1模型提供了支持,本文的主要目标是探索:o1模型能否有效地推广到缺乏明确标准且奖励难以被量化的更广泛的领域。为了复现o1,文章主要做了下述事情:
- 实现了一个Marco-o1-COT数据集并进行了开源。
- 通过MCTS扩展解空间:通过LLM与MCTS进行集合,利用LLM输出置信度来指导搜索并扩展解空间。
- 推理行动策略:实现了一个新颖的推理行动策略和反思机制,在MCTS内探索不同的动作粒度,并促使模型进行自我反思。
- 应用于翻译任务:研究LRM在机器翻译任务中的应用,探索多语言和翻译领域的推理时间尺度规律。
本文方法
(1)Marco推理数据集
构建了三类SFT数据集,前两个是为了增强推理能力,最后一个是为了维持模型在广泛任务下保持优质的推理能力。
- Open-O1 CoT数据集:通过应用启发式和质量过滤过程来优化Open-O1项目的CoT数据集。这种增强允许模型有效地『采用结构化推理模式』。
- Marco-o1 CoT数据集:使用MCTS生成Marco-o1 CoT数据集,这有助于『制定复杂的推理路径』,增强模型的推理能力。
- Marco指令数据集:鲁棒性高的指令遵循能力在执行复杂认识会后起到关键作用,作者合并了一组指令遵循数据集。这种集成确保了模型在广泛的任务中保持能力,在保持其总体有效性的同时显着提高了其推理天赋。
(2)基于MCTS的解空间扩展
将LLM与MCTS集成在一起,增强marco-o1模型的推理能力。
- 节点作为状态:在MCTS框架中,每个节点表示问题解决过程的一个推理状态。
- LLM的输出作为动作:LLM的输出是节点可能的动作。这些输出表示推理链路中的潜在步骤或者小步骤。
- Rollout和奖励计算:在rollout阶段,LLM将推理过程持续到最终状态。
- 指导MCTS:奖励分数R用于评估,选择MCTS中有前景的路径进行探索。
文中通过计算置信度得分来获得每个状态的值。在rollout阶段中生成的每个token
t
i
i
t_{i_i}
tii,通过将softmax函数应用于对数概率和前5个备选token的对数概率,计算置信度分数:
其中, c i c_i ci是rollout中第i个token的置信度分数, p ( t i ) p(t_i) p(ti)是由LLM生成的低i个token的对数概率。 p ( t k ) p(t_k) p(tk),k=1~5是第i步时,前5个预测token的对数概率。n是rollout序列中的token总数。此等式确保置信度分数反映所选令牌与top备选方案相比的相对概率,从而有效地将分数归一化在0和1之间。
在获得rollout序列中所有令牌的置信度得分后,我们计算『所有token的平均置信度得分』,从而得出总体奖励得分:
其中𝑣是rollout路径的总奖励分数。这个平均值作为奖励信号,用于评估在展开过程中所采取的推理路径的质量。𝑣值越高,说明推理路径越自信,越可能准确。
(3)推理行动策略
动作选择
作者观察到使用步骤作为MCTS搜索的粒度相对粗糙,经常导致模型忽略对解决复杂问题至关重要的细微推理路径。为了解决这个问题,作者探索了MCTS搜索中的不同粒度级别。最初,使用步数作为搜索单位。为了进一步扩展模型的搜索空间并增强其解决问题的能力,作者尝试将这些步骤划分为64或32个标记的较小单元,称为“小步骤”。这种更精细的粒度允许模型更详细地探索推理路径。虽然token级搜索在理论上提供了最大的灵活性和粒度,但由于需要大量的计算资源以及在此级别设计有效奖励模型的挑战,目前它是不切实际的。作者尝试了下述几个MCTS的动作实验:
- 步骤作为动作:允许模型生成完整的推理步骤作为动作。每个MCTS节点代表一个完整的思考或动作标签。这种方法可以进行有效的探索,但可能会错过复杂问题解决所必需的『细粒度』推理路径。
- 迷你步骤作为操作:我们使用32或64个token的迷你步骤作为操作。这种更细的粒度扩展了解决方案空间,并通过考虑搜索过程中更细微的步骤,提高了模型导航复杂推理任务的能力。通过在这个层次上探索解决方案空间,模型可以更好地找到在大尺度操作单元中可能被忽略的正确答案。
反思和思考
作者引入了一个反思机制,通过添加『Wait! Maybe I made some mistakes! I need to rethink from scratch!』在思考过程的末尾,促使模型自我反思并重新评估其推理步骤。这种方式对原始模型最初无法正常的困难问题很有帮助。加上这个机制后,这些有挑战的问题中大约有一半问题可以被解决。
通过明确地提示模型质疑其最初的结论,鼓励了它重新表达和完善其思维过程。这种自我批评机制利用了模型检测自身输出中的不一致或错误的能力,从而更准确、更可靠地解决问题。反射步骤作为一个内部反馈回路,增强了模型在没有外部干预的情况下自我纠正的能力。
实验
(1)实验设置
作者对不同MCTS框架构建Marco-o1-CoT的数据集,基于Qwen2-7B-Instruct进行了SFT微调:
- Marco-o1-MCTS (step):使用推理步骤作为一个动作。
- Marco-o1-MCTS (mini-step of 64 tokens):使用64 token长度的小步骤作为一个动作。
- Marco-o1-MCTS (mini-step of 32 tokens):使用32 token长度的小步骤作为一个动作。
作者分别在MGSM子集中的英文和中文数据集进行了测试。
(2)主要结果
- 性能效果
Marco-o1-MCTS的三种框架都比Qwen2-7B-Instruct基线高,但是在中文子集中Marco-o1-COT却产生了性能下降,这可能是由于使用的是英文COT数据的微调,不能很好的转换在中文场景中。
- step-level探索
由于文中使用置信度分数作为奖励,树搜索结果表现出显著的随机性。step在英文上效果最好。mini-step在中文上效果有所提升,在英文上有所下降。
文中说无法得出明确的结论,哪种行动策略更优。但是,作者提出随着『奖励变得更加准确』,MCTS提供的更大的解决方案空间将会显示出解决问题的更大潜力。
- N次探测效果对比
结果表明,MCTS具有较少的单独猜测次数的优势(Test@1)。这揭示了MCTS的潜力。在未来的工作中,作者计划与MCTS一起训练奖励模型(RM),以继续优化该方法。
- 翻译任务研究
文中还比较了它与谷歌翻译在翻译俗语和方言方面的表现。
结果表明,该模型在理解上下文和细微差别方面表现出色,在中翻英和英翻中任务上,提供了更准确、更自然的翻译。