论文笔记分享,标题A COMPARATIVE STUDY ON REASONING PATTERNS OF OPENAI’S O1 MODEL》,代码开源:https://github.com/Open-Source-O1/o1_Reasoning_Patterns_Study
OpenAI的o1模型在推理时候花费更多的时间,可以大幅提高LLMs的推理能力。然后呢,这篇文章就以gpt4o为基础,先论证一些推理时候的思考策略,然后分析o1的6种推理模式,最后是一些实验。
常见的推理策略
Best-of-N (BoN) :模型针对prompt生成多个输出,然后从中选择最合适的响应作为输出。 Step-wise BoN:模型通过分析问题并将其分解为多个子问题。对于每个问题,模型根据之前的子问题和答案生成多个结果,然后使用奖励模型来选择最佳结果。这个过程会迭代进行,直到获得原始问题的最终答案。 Self-Refine:通过迭代反馈和优化,优化LLM的初始输出。 Agent Workflow:基于LLM的智能体将复杂任务分解为更小的子任务,通过结构化的工作流程进行执行规划,并利用各种工具实现目标。
这些策略测试的结论结论:
o1的模式,在数学,编码任务中,提升特别显著,是其他的策略远远赶不上的 o1-mini 在某些任务上超过了 o1-preview,意味着 o1 的推理过程并不总是导致更好的改进 Self-Refine的提升不显著 BoN是个很厉害的基准,能带来一定的提升;Step-wise BoN受到复杂任务的限制 agent工作流程在所有基准测试中均实现了显著的性能提升
然后是论证6种推理模式((Systematic Analysis (SA), Method Reuse (MR), Divide and Conquer (DC), Self-Refinement (SR), Context Identification (CI), and Emphasizing Constraints (EC))),o1最常用的推理模式是DC和SR。
系统分析(Systematic Analysis, SA):从问题的整体结构开始,o1首先分析输入和输出以及约束,然后决定选择算法和使用数据结构。
方法重用(Method Reuse, MR):对于一些可以转化为经典问题(如最短路径或背包问题)的问题,o1能够快速重用现有方法来解决它们。
分而治之(Divide and Conquer, DC):将复杂问题分解为子问题,并通过解决子问题来构建整体解决方案。
自我完善(Self-Refinement, SR):o1在推理过程中评估其推理过程,以确定是否存在问题并纠正任何错误。
上下文识别(Context Identification, CI):对于一些需要额外信息输入的数据集(例如HotpotQA),o1首先总结与查询相关的不同方面的上下文,然后给出相应查询的响应。
强调约束(Emphasizing Constraints, EC):对于一些对生成文本有约束的数据集(例如Collie),o1在推理过程中通常会强调相应的约束。
这几种模式在几个数据集上出现的频次如下,不同难度的数据,o1采用的推理模式会存在一定的差异。
最后是一些分析实验
不同任务的推理token数量差异很大,对于更复杂的任务(如代码和数学),模型通常需要更长的推理过程。
对于BoN系列方法,需要一个策略来选择生成响应中最合适的响应。使用不同的策略进行实验,发现人工可以显著提高LLMs的准确率。除此之外BoN的性能受到N(生成响应的数量)的限制,增加N可以探索BoN能力的上限。
当前基准测试中包含许多简单的样本,无法区分不同 LLM 的性能差异。数据过滤后,不同 LLM 的分数相对较低,且区分度更大。