AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


OpenAI o1:使用限额提高,o1 模型深度解析
发布日期:2024-10-11 08:06:29 浏览次数: 1602 来源:浮之静


最新公告

OpenAI 提高了 o1-mini 和 o1-preview 的消息使用限额,以便 Plus 和 Team 用户能够更频繁地使用 o1。o1-mini 的限额从每周 50 条增加到每天 50 条,而 o1-preview 的限额从每周 30 条提高到每周 50 条。

o1 深度解析

原文参考:Reverse engineering OpenAI’s o1[1]

OpenAI 最近发布了新型推理系统 o1(OpenAI o1 模型:AI 复杂推理新突破),用于处理具有挑战性的任务,这标志着 AI 技术的又一次重大突破。它建立在 Q*[2] (Sam 重回 OpenAI,Q-star 被曝光!)的早期成功和关于 Strawberry[3](草莓)项目的传闻基础上,通过对长推理链进行训练并使用大量强化学习,然后大规模部署的系统。

诞生背景

早在去年 11 月,OpenAI 内部就有消息泄露,提到“鉴于巨大的计算资源,新模型能够解决某些数学问题”。这暗示了 OpenAI 正在研发一种能够进行复杂推理的新模型。Q* 被认为是最初的尝试,通过某种推理树搜索方法,引出高价值的解题路径。研究人员在初步看到训练结果时非常兴奋,认为这种方法有巨大的潜力。

随后,关于 Strawberry 项目的传闻开始流传。Strawberry 可以看作是使用 Q* 方法训练的模型,能够在生成文本的同时进行推理。这为 o1 的诞生奠定了基础。o1 不仅仅是一个模型,而是一个系统,融合了多种先进的技术和方法,旨在为用户提供强大的推理能力。

值得注意的是,o1 的发布被称为“预览版”,且名称模糊(“o”代表 OpenAI)。OpenAI 在发布信息中强调,他们尚未完全了解如何最佳地使用该模型,希望通过用户的反馈来进一步完善。正如 OpenAI 应用研究负责人 Boris Power 所述:“这次发布更接近最初的 GPT-3 发布,而不是 ChatGPT 发布。一个新的范式,某些人会发现它对于我们在 OpenAI 都无法预测的事情极其有价值。但这不是一个大众产品,不能轻松地为每个人解锁新的价值。我相信我们很快会有另一个 ChatGPT 时刻!”

推理机制:它如何处理任务?

o1 是一个与传统自回归语言模型截然不同的推理系统。传统模型通常根据给定的输入顺序地生成文本,而 o1 在推理过程中会进行在线搜索,为用户执行复杂的思维过程。它通过生成长推理链,结合大量的强化学习,能够在解决复杂问题时表现出色。

在调用 o1 模型时,它会生成多个推理候选项,并对每个候选项进行评分,以评估其质量。这种并行生成和评估的过程,使得模型可以探索更广泛的解决方案空间,从而找到最优的答案。

这种方法类似于人类在解决问题时的思考过程:我们可能会考虑多种方案,评估每种方案的可行性,然后选择最优的执行。o1 将这种人类的思维方式引入到 AI 模型中,使其能够在复杂任务中表现出更高的智能水平。

o1 的推理机制更接近于闭环控制系统。它不仅生成答案,还根据反馈不断调整和优化自己的推理路径。这在语言模型领域是前所未有的。通过这种方式,o1 能够在推理过程中纠正错误,避免陷入错误的思维路径。

强化学习:创新的训练方法

o1 的核心在于通过大规模的强化学习(RL)进行训练,使模型能够在复杂的推理任务中逐步改进其思维链。OpenAI 表示,他们的大规模强化学习算法教会模型如何高效地使用其推理链,采用高度数据高效的训练过程。

传统的强化学习从人类偏好(RLHF)的方法,通常对整个生成的文本给予一个整体的奖励或惩罚。这使得模型难以理解在哪些具体步骤出现了问题。为了解决这个问题,o1 采用了过程奖励模型(Process Reward Model),对推理链中的每一步进行评分。

这张图展示了一个关于模运算问题的解题过程,其中模型生成了多步推理。虽然在第 8 步和第 9 步中出现了因式分解错误,但最终奖励模型识别并纠正了错误,得出了正确的答案 ? = 1。该图强调了模型在复杂推理任务中可能会犯错,但通过奖励模型的反馈,能够提高结果的准确性。

在 OpenAI 的论文《Let's Verify Step By Step[4]》中,他们展示了如何对推理过程的每个步骤进行评估。通过对每个步骤打分,模型可以更准确地识别并纠正错误,提高推理的准确性。

? RLHF

RLHF[5](Reinforcement Learning from Human Feedback)的思想是使用强化学习的方式直接优化带有人类反馈的语言模型。它涉及多个模型和不同训练阶段的复杂概念,其核心可以分解为三步:

  • 预训练一个语言模型 (LM) :通过经典方法预训练一个语言模型,使其具备基本的语言生成能力。

  • 聚合问答数据并训练一个奖励模型 (Reward Model,RM) :基于人类偏好数据训练奖励模型,为后续的强化学习提供反馈机制。

  • 用强化学习 (RL) 方式微调 LM:使用奖励模型提供的反馈,通过强化学习算法(如 PPO)对预训练的语言模型进行微调,提升其生成文本的质量与连贯性。

? Let's Verify Step By Step 摘要

近年来,尽管大型语言模型在多步推理能力上有所提升,但仍常犯逻辑错误。为此,研究比较了结果监督(针对最终结果反馈)与过程监督(针对每个推理步骤反馈)。研究表明,过程监督在解决 MATH 数据集问题时效果显著优于结果监督,解决率达 78%。此外,主动学习进一步提升了过程监督的效率。为支持相关研究,研究团队发布了包含 80 万条人类反馈标签的数据集 PRM800K。

强化学习的成功很大程度上取决于模型在状态空间中的探索能力。o1 能够在广泛的状态空间中探索,寻找最优的解题路径。这种探索能力使得 o1 能够解决传统模型难以处理的复杂问题。

值得一提的是,o1 在处理超长的推理链时表现出色,能够处理长达 10 万到 20 万个 tokens 的推理过程。这在过去的 RL 应用中是前所未有的。

推理成本:为何如此昂贵?

o1 在推理时的高昂成本主要源于其复杂的生成和评估机制。与传统的自回归模型不同,o1 会在每个推理步骤生成多个候选项,并对它们进行评分。这种并行解码策略需要大量的计算资源。

具体来说,o1-preview 的定价为每百万个输入 tokens 收费 15 美元,每百万个输出 tokens 收费 60 美元。这一费用也适用于模型在内部生成但未展示给用户的中间推理 tokens。这意味着,即使用户只看到简短的答案,模型在背后可能已经进行了大量的计算。

OpenAI 提出了新的“推理扩展定律”(inference scaling laws),即随着推理时计算的增加,模型的性能会持续提高。这与传统的预训练模型不同,后者在达到一定规模后,性能提升会趋于平缓。在 OpenAI 发布的图表中,展示了随着推理时计算的增加,模型在各项基准测试中的性能提升。这证明了在推理过程中投入更多的计算资源是值得的。

部署 o1 需要全新的服务基础设施。传统的语言模型通常采用顺序生成的方式,缓存先前的输出步骤。而 o1 需要在推理过程中进行并行生成和评估,对基础设施提出了更高的要求。这也是 o1 推理成本高昂的原因之一。

o1 是在线搜索系统吗?

有迹象表明,o1 在推理过程中进行了在线搜索。模型的推理轨迹显示,o1 不仅仅是简单地生成文本,而是在内部进行了类似搜索的复杂操作。通过生成并评估多个推理候选项,o1 能够探索更广泛的状态空间,寻找最佳解决方案。

一种可能的实现方式是,o1 包含一个生成器模型(负责生成潜在的答案)和一个验证器模型(负责对生成的答案进行评分)。这种架构允许模型在生成答案的同时,对其进行评估和优化。

o1 的架构使其能够在推理过程中进行自我纠正。当模型检测到偏离正确的推理路径时,它可以回溯并尝试其他方案。这与 AlphaGo 等强化学习系统的策略类似,通过不断尝试和评估,找到最佳的解决方案。

o1 在推理时是单个模型吗?

即使提出了多个假设,仍然难以相信 OpenAI 已将一个模块化系统部署给数亿用户。o1 项目的负责人甚至表示它实际上是一个模型,并且他们希望未来能够提供更多控制选项:未来,我们希望让用户能够更多地控制模型花费的思考时间。

支持“只有一个模型处理所有任务”论点的原因之一是其定价模型——OpenAI 对反思 tokens(reflection tokens)收费,但这些 tokens 不能无限扩展。如果还存在奖励模型或其他组件,定价方式将变得棘手,因为每个推理步骤的长度不同,调用奖励模型的次数也会有很大差异。

这一切得以实现的原因在于奖励模型逐渐被吸收到生成语言模型中。最近的研究表明,奖励模型可以在评分之前“自言自语”(Critique-out-Loud Reward Models[6]),或使用非常强大的生成模型来区分文本(Generative Verifiers: Reward Modeling as Next-Token Prediction[7])。这样一种实现细节,使得蒙特卡洛树搜索(Monte Carlo Tree Search[8])可以由一个最终的语言模型处理,这也导致了推理时的复杂性:模型生成潜在的想法,自我评分,然后生成解决方案。至少在训练时,可以肯定更多模型被用作启发式工具,以评分最高质量的推理轨迹。

? 蒙特卡洛树搜索

蒙特卡洛树搜索(MCTS:Monte Carlo tree search)是一种用于某些决策过程的启发式搜索算法,最引人注目的是在游戏中的使用。最典型的例子是电脑围棋程序,它也用于其他棋盘游戏、即时电子游戏以及不确定性游戏。

MCTS 算法的重点在于分析最有希望的走法,通过对搜索空间的随机采样扩展搜索树。在游戏中的应用是基于多次模拟(也称为 rolloutsplayout)。每次模拟中,游戏会通过随机选择走法一直进行到游戏结束。然后,根据每次模拟的最终游戏结果对游戏树中的节点进行加权,使得更好的节点在未来的模拟中更有可能被选择。蒙特卡洛树搜索的每个循环包括四个步骤:

  • 选择(Selection):从根节点 R 开始,选择连续的子节点,直到到达一个叶节点 L。根节点代表当前的游戏状态,而叶节点是任何具有潜在子节点且尚未开始模拟的节点。选择步骤会偏向选择能使游戏树扩展到最有希望的走法的子节点,这是蒙特卡洛树搜索的核心。

  • 扩展(Expansion):除非 L 节点为任一玩家决定性地结束了游戏(例如,胜利/失败/平局),否则创建一个(或多个)子节点,并从中选择一个节点 C。子节点代表从 L 所定义的游戏位置的任何合法走法。

  • 模拟(Simulation):从节点 C 开始完成一次随机模拟。这一步有时也称为 playoutrollout。模拟可以简单到通过随机选择走法直到游戏决定胜负(例如在国际象棋中,游戏要么胜、负、平)。

  • 回溯(Backpropagation):使用模拟结果更新从节点 C 到根节点 R 路径上的信息。

Python 伪代码实现:

# main function for the Monte Carlo Tree Search
def monte_carlo_tree_search(root):
while resources_left(time, computational power):
leaf = traverse(root)
simulation_result = rollout(leaf)
backpropagate(leaf, simulation_result)
return best_child(root)

# function for node traversal
def traverse(node):
while fully_expanded(node):
node = best_uct(node)
# in case no children are present / node is terminal
return pick_unvisited(node.children) or node

# function for the result of the simulation
def rollout(node):
while non_terminal(node):
node = rollout_policy(node)
return result(node)

# function for randomly selecting a child node
def rollout_policy(node):
return pick_random(node.children)

# function for backpropagation
def backpropagate(node, result):
if is_root(node) return
node.stats = update_stats(node, result)
backpropagate(node.parent)

# function for selecting the best child
# node with highest number of visits
def best_child(node):
pick child with highest number of visits

正如我们所见,MCTS 算法可以简化为一组很少的函数,这些函数可以用于任何游戏或优化策略的选择中。

MCTS 算法优点:

  • 简单实现:MCTS 是一种实现简单的算法。

  • 启发式算法:MCTS 是一种启发式算法,除了了解规则和游戏结束条件外,不需要领域知识就能有效运行。它可以通过进行随机模拟来找到自己的走法并从中学习。

  • 状态保存:MCTS 可以在任何中间状态下保存,并在需要时在未来的使用案例中恢复该状态。

  • 不对称扩展:MCTS 支持根据其运行的情况不对称地扩展搜索树。

MCTS 算法缺点:

  • 内存需求大:随着树的快速增长,在经过几次迭代后,MCTS 需要大量内存。

  • 可靠性问题:在某些情况下,可能会有一个单一的分支或路径,导致在回合制游戏中对手获胜。这主要是由于组合数量庞大,每个节点可能没有被足够多次访问,因此难以在长期内理解其结果或后果。

  • 速度问题:MCTS 需要大量迭代才能有效决定最优路径,因此在速度上存在一定的劣势。

o1 的未来:开源与挑战

创建 o1 的开源版本将是一项巨大的挑战。与 ChatGPT 等传统模型相比,o1 的复杂性更高,涉及多个敏感的模块化组件。此外,OpenAI 已采取措施,防止用户试图获取模型的内部推理轨迹,并对试图破解模型的行为采取了法律行动。

邮件警告

有网友截图称询问 o1 原始思维链会被警告,内容大意为:OpenAI 决定不向用户展示原始的思维链内容,出于用户体验和竞争优势等方面的考虑,转而提供模型生成的思维链摘要。用户如果多次询问思维链内容,可能会收到 OpenAI 支持团队的警告邮件,要求停止此行为,否则可能会失去对 o1 的访问权限。

开发类似 o1 的系统,需要获取高质量的初始训练数据。OpenAI 可能早在一年多前就雇佣了高技能的标注人员,创建复杂的正向推理路径。这些路径被用于训练模型,使其能够进行深度的推理和自我评估。

仅仅复制模型的推理轨迹是不够的,因为模型还需要对比示例和丰富的训练数据,以避免过拟合和提高泛化能力。

尽管在搜索、强化学习、回溯和推理等相关领域有大量的研究,但这些研究还处于初级阶段。要在开源社区中复制 o1 的成功,需要在多个方面进行突破,包括:

  • 状态空间的构建:建立能够容纳复杂推理过程的状态空间。

  • 奖励模型的设计:创建高效的过程奖励模型,对推理过程中的每一步进行评估。

  • 多样化的推理生成:开发能够生成多样化推理步骤的模型,以探索更广泛的解决方案空间。

  • 计算资源的投入:需要大量的计算资源来训练和部署模型,这对于开源社区来说是一个挑战。

o1 预示了 AI 推理系统的新范式,推动语言模型从简单的文本生成走向复杂的推理与决策。未来,o1 将被应用于更多领域,不仅限于数学和逻辑推理。让 o1 独立存在可能行不通,与 ChatGPT 等系统整合,可以提升处理复杂任务的效率(简单查询可能仍由传统模型处理,而复杂的任务则由 o1 这样的高级推理系统承担)。

OpenAI 代码库有几项提交请求(PR)是由 o1 独立完成的。

o1 的使用体验

o1 中的“思考”过程只是一种极为出色的用户体验设计。尽管它可能并不代表实际的推理链条,但它让最终的神谕般的答案显得更易理解和解释(即使其中可能并不包含实际信息?)。

Ethan Mollick 在长时间使用 o1-preview 后,认为尽管它在大型公司中可能具备巨大的经济价值,但提示它进行推理的过程仍然很奇怪,目前找不到有效的引导方法(链式思维不起作用)。模型在某些领域表现出色,但在其他方面则不尽如人意。Simon Willison 指出,这种怪异性可能源于模型的结构变化,它不再是传统的语言模型,而是一种基于链式思维的强化学习系统。Dan Brickley 则好奇未来类似模型是否也会有这样的“怪异性”。

其他信息

GitHub Models (GitHub 助力 AI:免费体验,轻松部署)也加入了 OpenAI o1-preview 和 o1-mini,不过需要单独申请访问权限(具体可查看 https://aka.ms/oai/modelaccess 和 https://aka.ms/oai/docs/limited-access-models)。如果不需要额外申请权限,则可通过 Playground 按钮进入体验界面。



53AI,企业落地应用大模型首选服务商

产品:大模型应用平台+智能体定制开发+落地咨询服务

承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询