大模型+蒙特卡洛树搜索,一招让LLaMa-3 8B奥数水平直逼GPT-4

通过算法层面的创新,未来大语言模型做数学题的水平会不断地提高。

这几天,17 岁中专生姜萍在 2024 阿里巴巴全球数学竞赛预选赛中取得全球第 12 名的新闻刷了屏。而同时,AI 挑战赛的成绩显示,在所有 563 支 AI 参赛队伍中,最高分 34 分,平均分 18 分,赶上了人类选手平均水平。

AI 参与数学竞赛的主要短板是逻辑推理能力弱,证明题很难拿到完整得分点。这也是 GPT-4、LLaMA 等当前大语言模型(LLM)在需要策略和逻辑推理的任务中面临的重大挑战。

其中的一个重要障碍是输出的准确性和可信度,尤其是在需要保证精度的数学上下文中,LLM 在推理时往往产生幻觉。输出结果表面上看似合理,但实际上不相关或事实不确,最终导致不合理的推理过程。

自然像自我提炼这样的重写技术有助于解决这种偏向,但依然可能导致现实世界复杂的数学问题产生误导性或错误的结果。

因此,为了应对这些挑战,来自复旦大学、上海 AI Lab 的研究者提出了 MCT Self-Refine(MCTSr),将 LLM 与蒙特卡洛树搜索(MCTS)算法相结合,并重点提高 LLM 在复杂数学推理任务(比如奥数竞赛题)中的表现。

MCTS是一种决策工具,广泛应用于人工智能中需要战略规划的场景,通常用于游戏和复杂的问题解决环境。本文通过将MCTS的系统探索能力与LLM的Self-Refine和Self-Evaluation能力相结合,旨在创建一个更强大的框架来应对当前LLM难以解决的复杂推理任务。

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

大模型+蒙特卡洛树搜索,一招让LLaMa-3 8B奥数水平直逼GPT-4

论文地址:https://arxiv.org/pdf/2406.07394

项目地址:https://github.com/trotsky1997/MathBlackBox

不过,在将 MCTS 与 LLM 集成过程中存在一些技术挑战。传统的 MCTS 策略可能与 LLM 输出的随机性和生成性不太吻合,后者通常涉及无限、连续的潜在动作空间。这种不一致需要在 MCTS 框架内采用定制的期望计算和反向传播方法,以更好地适应 LLM 的特有属性。

此外,研究者还引入了一种动态剪枝策略,它结合了改进的置信上限(UCB)公式,以优化高风险任务中有效决策制定所需要的探索 – 利用平衡。 

可以说,这项研究推进了 LLM 在复杂推理挑战中的应用,为未来整合 AI 相关的技术创新奠定了基础,从而使得 LLM 驱动的应用拥有了更强大的决策制定、推理准确性和可靠性。

方法概览

MCTSr 架构图如图 1 所示:

大模型+蒙特卡洛树搜索,一招让LLaMa-3 8B奥数水平直逼GPT-4MCTSr 工作流包括:

初始化:使用模型生成的答案和虚拟响应建立根节点,以最大限度地减少模型过度拟合趋势;

选择:该算法采用值函数 Q 对所有未完全展开的答案进行排序,并采用贪心策略选择值最高的节点进行进一步的探索和优化;

Self-Refine :选择好的答案 a 使用 Self-Refine 框架进行优化。最初,模型生成反馈 m,指导优化过程以产生增强的答案 a ′;

Self-Evaluation:精炼后的答案经过评分从而采样一个奖励值,并计算其 Q 值。这涉及模型自我奖励反馈和约束,如严格的评分标准和抑制满分,以确保评分的可靠性和公平性;

反向传播:将精炼答案的值反向传播到其父节点和其他相关节点,以更新树的值信息。如果任何子节点的 Q 值发生变化,则更新父节点的 Q;

UCT 更新:在所有节点的 Q 值更新完成后,确定一个候选节点集合 C,用于进一步扩展或选择,然后使用 UCT 更新公式更新所有节点的 UCT 值,以备下一步的选择阶段。

迭代上述阶段,直到满足终止条件 T 为止。

Self-Refine 

在 self-refine 阶段, 模型通过多轮对话完善提示来优化针对问题 P 的答案 a。首先,模型生成一个关于答案 a 的反思性或批判性评论 m。随后,在 m 的指导下,模型修改答案 a,产生一个改进版本 a’,这种迭代的精炼方式提高了模型响应质量。

自评估

在数学问题 P 的答案精炼过程中,一个答案 a 的 Q 值被定义为将 a 进一步精炼成更优答案的预期质量。这个定义是基于从 a 到其重写形式的转换具有马尔可夫性质,即下一个状态(即改写后的答案)仅依赖于当前状态(即当前的答案 a),而与之前的状态无关。

此外,研究者还设计了三个约束:提示约束、满分抑制、重复采样。采样后,计算 a 的 Q 值。

大模型+蒙特卡洛树搜索,一招让LLaMa-3 8B奥数水平直逼GPT-4

反向传播

在所有叶节点的奖励值经过采样和 Q 值更新完成后,然后将这些变化传播至其父节点和祖节点。在这个更新过程中,如果节点 a 的子节点集合 Children (a) 中任何元素的 Q 函数值发生变化,那么节点 a 的 Q 函数值也将进行更新。这样的传播确保了节点的 Q 值能够反映其所有可能子节点的最新状态和评估。 

大模型+蒙特卡洛树搜索,一招让LLaMa-3 8B奥数水平直逼GPT-4

新CG儿 新CG儿

数字视觉分享平台 | AE模板_视频素材

新CG儿 412 查看详情 新CG儿

更新 UCT 和选择

在更新了树中所有节点的 Q 值之后,会进入下一轮选择阶段。这个过程包括以下步骤:

候选节点选择:在选择节点时,研究者无需从根节点开始,而是按层次顺序遍历树中的节点。

UCT 更新:借鉴 AlphaGo,该研究使用 UCT 和 UCB-1 方法来平衡节点的探索和利用;对于候选集 C 中的节点 a,其 UCT_a 值为:

大模型+蒙特卡洛树搜索,一招让LLaMa-3 8B奥数水平直逼GPT-4

终止函数

提前终止:当搜索结果的改进开始减少或连续搜索产生重复结果时,终止发生。

搜索约束:一旦展开次数达到预定限制或树中的一个或多个节点满足最大深度约束,搜索就会终止。

实验结果

为了评估 MCTSr 算法在解决数学问题中的有效性,研究者将 LLaMA3-8B 作为基础模型,并使用 MCTSr 进行增强。他们在 Zero-Shot CoT、Self-Refine、4-rollouts MCTSr 和 8-rollouts MCTSr 等几种设置中,将 LLaMA3-8B 与 GPT-4、Claude 3 和 Gemini 1.5-Pro 等进行了比较。

研究者在 GSM8K 和 GSM-hard 测试集(它们分别包含了典型和具有挑战性的数学问题)上评估了上述方法,结果如下表 1 所示。

可以发现,MCTSr 的 rollout 次数与成功率之间存在着直接相关性,并随着迭代次数增加而显著提升,在不太复杂的 GSM8K 中尤为明显。不过对于更复杂的 GSM-Hard 测试集,即使 rollout 次数更高也会达到性能上限,表明当前策略在解决复杂问题时存在局限性。

这些结果强调了 MCT-Self-refine 算法的稳健性和潜在边界,以及持续改进的必要性,从而有效应对更复杂的挑战。

大模型+蒙特卡洛树搜索,一招让LLaMa-3 8B奥数水平直逼GPT-4

下表 2 展示了在 MATH 数据集上应用不同复杂度级别的 MCT-Self-refine 算法的结果。数据集分为五个难度级别,从 Level 1(最简单)到 Level 5(最具挑战性)。

结果显示,Level 1 的成功率最高,8 次 rollout 后,MCTSr 实现了 90.16% 的成功率,解决了 437 个问题中的 394 个。随着 rollout 次数的增加,这一级别的成功率显著提高。

在最具挑战性的 Level 5 难度,8 次 rollout 后,MCTSr 的成功率为 34.06%,解决了 1324 个问题中的 451 个。这说明了随着难度不断增加,该算法在高度复杂的场景中性能受到限制。

所有级别的整体性能显示,8 次 rollout 后,MCTSr 的累计成功率为 58.24%,解决了 5000 个问题中的 2912 个。这一成功率相较于 Zero-Shot CoT 的初始成功率 24.36% 有了显著提高。这表明了,rollout 次数的增加与成功率的提高呈现出一致性,强调了 MCT-Self-refine 算法在提升不同数学复杂度级别的问题解决能力方面的有效性。

这些结果还验证了 MCT-Self-refine 算法在学术和问题解决上下文中的潜力,并强调了其对 MATH 数据集中不同复杂度级别问题的可扩展性和适应性。

大模型+蒙特卡洛树搜索,一招让LLaMa-3 8B奥数水平直逼GPT-4

下表 3 为 MCT-Self-refne 算法在奥数竞赛的三个数据集上进行了测试:AlME、GAIC Math Odyssey 和 OlympiadBench。

AIME:从 Zero-Shot CoT 的 2.36%(解决 22 个问题)到 MCTSr 的 11.79%(解决 110 个问题)。

GAIC Math Odyssey:成功率从 17.22%(解决 67 个问题)上升至 49.36%(解决 192 个问题)。

OlympiadBench:从 Zero-Shot CoT 的 1.25%(解决 16 个问题)提高到 MCTSr 的 7.76%(解决 99 个问题)。

这些结果证实了 MCT-Self-refine 算法在未见过的数学问题上的适用性,表明其在奥林匹克等竞争性学术环境中具有优势。

大模型+蒙特卡洛树搜索,一招让LLaMa-3 8B奥数水平直逼GPT-4

如表 4 所示。与当前闭源大模型进行比较时,MCTSr 可以有效提升小参数开源模型(如 LLaMa-3)的数学推理能力到相当的水平。

大模型+蒙特卡洛树搜索,一招让LLaMa-3 8B奥数水平直逼GPT-4

更多技术细节和实验结果请参阅原论文。

以上就是大模型+蒙特卡洛树搜索,一招让LLaMa-3 8B奥数水平直逼GPT-4的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/793869.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
如何利用开源代码制作软件分身APP?
上一篇 2025年11月26日 15:18:05
win10电脑hosts文件没有权限的解决方法
下一篇 2025年11月26日 15:18:15

相关推荐

  • 开源免费PHP工具 PHP开发效率提升利器

    推荐开源免费PHP开发工具以提升效率:VS Code、Sublime Text轻量高效,PhpStorm专业强大;调试用Xdebug、Kint、Ray;依赖管理选Composer;代码质量工具包括PHPStan、Psalm、PHP_CodeSniffer;数据库管理可用%ignore_a_1%MyA…

    2026年5月10日
    000
  • 谷歌浏览器如何截图 谷歌浏览器页面截图技巧

    谷歌浏览器如何截图 谷歌浏览器页面截图技巧谷歌浏览器如何截图 谷歌浏览器页面截图技巧谷歌浏览器如何截图 谷歌浏览器页面截图技巧谷歌浏览器如何截图 谷歌浏览器页面截图技巧

    使用谷歌浏览器的开发者工具截图步骤:1. 按ctrl+shift+i(windows/linux)或cmd+option+i(mac)打开开发者工具。2. 点击右上角三个点,选择”更多工具”,再选择”截图”。3. 选择截取整个页面。推荐的谷歌浏览器扩展…

    2026年5月10日 用户投稿
    100
  • JavaScript计算器开发:解决数值显示与初始化问题

    本教程深入探讨了使用JavaScript构建计算器时常见的数值显示异常问题,特别是由于类属性未初始化导致的`Cannot read properties of undefined`错误。我们将详细分析问题根源,并通过在构造函数中调用初始化方法来解决该问题,同时优化显示逻辑,确保计算器功能稳定且界面显…

    2026年5月10日
    000
  • NextAuth getToken 在服务端返回 null 的问题排查与解决

    问题描述 在使用 Next.js 和 NextAuth 构建应用程序时,有时需要在服务端获取用户的身份验证信息。getToken 函数是 NextAuth 提供的一个便捷方法,用于从请求中提取 JWT (JSON Web Token)。然而,在某些情况下,尤其是在使用 getServerSidePr…

    2026年5月10日
    000
  • HTML文档如何工作?如何编辑HTML格式文件?

    HTML文档如何工作?如何编辑HTML格式文件?HTML文档如何工作?如何编辑HTML格式文件?HTML文档如何工作?如何编辑HTML格式文件?HTML文档如何工作?如何编辑HTML格式文件?

    浏览器解析和渲染html的过程包括:1. 解析html构建dom树;2. 结合css构建渲染树;3. 布局计算元素位置;4. 绘制像素到屏幕。编辑html可使用记事本、vs code、sublime text等文本或代码编辑器,其中vs code因语法高亮、自动补全和插件生态成为主流选择。标准htm…

    2026年5月10日 用户投稿
    000
  • GolangWeb项目异常捕获与日志记录

    答案:通过中间件使用defer和recover捕获panic,结合zap等结构化日志库记录请求链路信息,为每个请求生成trace ID,实现异常捕获与可追踪日志,提升系统稳定性与可观测性。 在Go语言Web项目中,异常捕获与日志记录是保障系统稳定性和可维护性的关键环节。Go本身没有像其他语言那样的t…

    2026年5月10日
    000
  • Python官网用户调查的参与方式_Python官网反馈提交详细教程

    答案是通过访问Python官网新闻页面、邮件邀请链接或GitHub仓库提交反馈。具体为:访问官网查找用户调查公告,或点击邮件中的专属链接参与,在GitHub的cpython仓库提交技术建议,并注意如实填写问卷与保护隐私。 如果您希望参与Python官网的用户调查并提交反馈,可以通过官方指定的渠道完成…

    2026年5月10日
    000
  • Go语言连接外部MySQL数据库:DSN配置与常见错误解析

    本文详细阐述了go语言使用`go-sql-driver/mysql`驱动连接外部mysql数据库的正确方法。重点介绍了数据源名称(dsn)的规范格式,特别是主机地址部分的配置,以避免常见的“getaddrinfow: the specified class was not found.”等网络解析错…

    2026年5月10日
    000
  • Tensorflow 音乐预测

    在本文中,我展示了如何使用张量流来预测音乐风格。在我的示例中,我比较了电子音乐和古典音乐。 你可以在我的github上找到代码:https://github.com/victordalet/sound_to_partition i – 数据集 第一步,您需要创建一个数据集文件夹,并在里面…

    2026年5月10日
    000
  • 学习了Python的Flask后,Go语言的Web框架该选Gin还是Beego?

    学习编程时,选择合适的框架至关重要。许多开发者在掌握Python Flask后,转向Go语言Web开发时,常常在Gin和Beego之间难以抉择。本文将深入分析,助您做出明智选择。 虽然网上搜索结果多建议使用Go原生标准库http,但实际上所有框架都是对http的封装。虽然使用http开发灵活,但工作…

    2026年5月10日
    000
  • JavaScript动态下拉菜单:实现日期选项与价格计算关联

    在现代web应用中,动态生成表单元素并使其具备交互逻辑是常见的需求。特别是在需要根据用户选择调整价格或服务参数的场景下,下拉菜单()常被用来展示一系列选项。本教程将指导您如何利用javascript动态生成一个包含日期选项的下拉菜单,并为每个选项关联一个具体的数值(如剩余天数),进而实现一个基于用户…

    2026年5月10日
    000
  • 如何在不暴露密钥的情况下,在客户端创建 Stripe Payment Link

    本文介绍了在纯静态网站环境下,如何利用 Stripe Payment Link 实现商品售卖,并着重讨论了在不暴露 Stripe 密钥的前提下,客户端创建 Payment Link 的可行性。分析了直接在客户端使用密钥的风险,并提出了预先生成 Payment Link 或使用后端服务动态生成 Pay…

    2026年5月10日
    000
  • 解决Go语言中GOPATH未设置错误及工作区配置指南

    本文旨在解决go语言开发中常见的“gopath not set”错误,并提供详细的go工作区配置指南。内容涵盖`gopath`环境变量的设置、go项目目录结构、`path`变量的扩展,以及一些高级配置技巧,旨在帮助开发者建立一个高效、规范的go开发环境,确保包的下载、编译和运行顺利进行。 Go语言在…

    2026年5月10日
    000
  • 掌握 JavaScript 中的高阶函数

    现代 javascript 开发严重依赖函数式编程,掌握其基本思想将极大提高你的编码能力。 高阶函数是这个范式最有力的武器之一。为了帮助您掌握它们,本文将介绍它们的定义、应用程序和独特的实现。 1. 函数式编程 函数式编程是一种编程范式,强调: 纯函数:没有副作用的函数,对于相同的输入返回相同的输出…

    2026年5月10日
    000
  • Golang使用assert库简化测试断言

    使用testify/assert库可提升Go测试代码的可读性和效率,通过go get github.com/stretchr/testify/assert安装后导入包,用assert.Equal等函数替代冗长的手动判断,支持丰富断言方法如Equal、True、Nil、Contains等,并可添加自定…

    2026年5月10日
    100
  • 如何处理在线编辑HTML时外部链接验证的处理方法

    在线编辑HTML时需验证外部链接以保障安全与可用性,可通过自动检测标记外链并添加rel属性提升安全性;2. 实时验证链接有效性,利用HEAD请求检查状态码并在编辑界面提示结果;3. 配置可信域名白名单控制高风险链接输入,适用于合规要求高的场景;4. 提供友好反馈机制,对无效或可疑链接弹出提示并支持新…

    2026年5月10日
    000
  • 怎样为C++配置嵌入式AI开发环境 TensorFlow Lite Micro移植指南

    怎样为C++配置嵌入式AI开发环境 TensorFlow Lite Micro移植指南怎样为C++配置嵌入式AI开发环境 TensorFlow Lite Micro移植指南怎样为C++配置嵌入式AI开发环境 TensorFlow Lite Micro移植指南怎样为C++配置嵌入式AI开发环境 TensorFlow Lite Micro移植指南

    要在c++++项目中使用tensorflow lite micro进行嵌入式ai开发,关键步骤包括:1. 确定mcu平台并安装对应的交叉编译工具链;2. 配置python环境并安装必要的依赖包;3. 获取并裁剪tflm源码,保留核心模块;4. 将tflm静态库集成到c++工程中;5. 按照模型加载、…

    2026年5月10日 用户投稿
    000
  • Golang图片处理技巧 imaging库裁剪缩放

    答案:使用Go语言的imaging库可高效实现图片裁剪与缩放,其API简洁易用,支持多种缩放算法(如Lanczos、CatmullRom)以平衡质量与性能,提供Crop和CropAnchor两种裁剪方式实现精确区域控制,并建议通过算法选择、内存管理、并发处理和错误校验等策略优化性能与稳定性。 在Go…

    2026年5月10日
    000
  • 如何通过GitHub API高效获取超过100个用户列表(分页教程)

    本教程旨在解决使用GitHub API获取用户列表时遇到的默认100个用户限制问题。我们将详细介绍两种主要的分页策略:利用Octokit库内置的paginate方法实现自动化分页,以及手动实现基于since参数的循环分页逻辑。文章将提供清晰的代码示例,并强调在不同场景下选择合适方法的注意事项,特别是…

    2026年5月10日
    000
  • c语言里面字符是什么意思

    字符在 C 语言中以单个字节存储于 char 变量中,用单引号括起表示常量,例如 ‘A’。字符变量用于存储字符值,可使用函数如 putchar() 输出、getchar() 输入、toupper() 转换大小写。字符数组存储多个字符,如 char name[10]。字符串是带…

    2026年5月10日
    000

发表回复

登录后才能评论
关注微信