计算机领域的Nature-大模型攻克NP难题

简介: Google DeepMind提出FunSearch,突破AI“幻觉”困境。它让大模型生成解题代码而非直接答案,通过进化式筛选发现数学规律,成功破解20年未解的“顶盖集”难题,并优化装箱算法,展现人机协同探索科学真理的新范式。

现在的 AI(比如 ChatGPT 或 Claude)非常聪明。你能让它写诗、写代码,甚至用苏格拉底的风格和你辩论。但是,如果你问它一个尚未解决的科学难题,或者让它证明一个复杂的数学定理,事情往往会变得很尴尬——它可能会一本正经地胡说八道(我们称之为“幻觉”)。

这就像你雇佣了一个才华横溢但不太靠谱的实习生:他脑子里充满了疯狂的点子,但他给出的事实往往需要你一个个去核实。

那么,问题来了:我们能否保留 AI 惊人的“创造力”,同时过滤掉它的“胡说八道”,让它真正帮助人类发现未知的科学真理?

今天要介绍的,就是 Google DeepMind 发表在《Nature》上的一项突破性工作——FunSearch。它不仅做到了这一点,还解决了一个困扰数学家 20 年的难题。

为什么这很难?(从“黑盒”到“白盒”的挑战)

在 FunSearch 出现之前,用 AI 做数学发现主要面临两个巨大的拦路虎:

  1. 大海捞针的绝望:很多数学问题(比如组合数学)的解空间大得惊人。这就像是在整个银河系的沙子里找一粒特殊的金沙,暴力搜索完全行不通。
  2. “我不信你”的困境:以前的 AI(比如 AlphaGo)虽然强,但它们往往是一个“黑盒”。它可能会丢给你一个答案,说:“信我,这就是最优解。”但作为人类科学家,我们一头雾水——为什么是这个?规律是什么?能不能推广? 如果 AI 不能用人类听得懂的语言解释它的发现,那它就很难推动科学理论的真正进步。

科学家们真正想要的,不是一条死板的“答案”,而是一把能解开谜题的“钥匙”。


核心洞察:不要寻找“金子”,要寻找“点金术”

DeepMind 团队做出了一个极其精彩的思维转换,这也是这篇论文最性感的地方。

他们意识到:与其让 AI 直接去搜索那个复杂的数学答案(Solution),不如让 AI 去写一段能生成答案的代码(Program)。

让我给你讲个故事来解释这其中的区别:

想象一下,你要在一串看似随机的数字中寻找规律:2, 4, 6, 8, 10, ... 10000

  • 传统的搜索方式:就像是试图死记硬背这一长串数字。这非常占内存,而且很难发现背后的逻辑。
  • FunSearch 的方式:它不记数字,它试图找到生成这串数字的“配方”。它可能会写出一段简单的代码:for i in range(1, 5001): print(2*i)

发现了吗?代码(配方)往往比答案本身更简洁、更本质。 这就是信息论中“柯尔莫哥洛夫复杂度”的概念。通过搜索代码,我们实际上是在搜索解背后的结构规律

FunSearch(Function Search)的名字由此而来:在函数空间中寻找真理。


它是如何工作的?(一个永不疲倦的进化工厂)

FunSearch 把大语言模型(LLM)变成了一个不知疲倦的“进化者”。整个过程像极了生物进化论:

  1. 不仅是写代码,更是“突变”:系统会给 LLM 一些现有的、表现平平的代码,对它说:“嘿,你能不能改几行,让它跑得更好?”LLM 发挥它的创造力,生成各种各样的新代码。
  2. 严酷的“自然选择”:这是关键!LLM 生成的代码会被立刻扔进一个测试系统(Evaluator)。
  • 代码跑不通?淘汰!
  • 结果是错的?淘汰!
  • 结果不仅对,而且比之前的更好?保留!
  1. 通过迭代产生智慧:那些被保留下来的优秀代码,又会作为下一轮的“种子”,喂给 LLM 继续修改。

在这个循环中,LLM 即使 90% 的时间都在产生“幻觉”也无所谓,只要它偶尔有一次灵光一现,这个系统就能捕捉到,并将其固化为人类知识。


震撼的战绩:当 AI 教会人类新知识

这不是纸上谈兵,FunSearch 实打实地拿下了两个硬骨头:

故事一:破解“顶盖集”之谜(The Cap Set Problem)

这是一个极其抽象的几何问题,就连菲尔兹奖得主陶哲轩都称其为他最喜欢的开放问题之一。简单来说,它要求你在高维空间里找尽可能多的点,还要保证没三个点连成一条线。

随着维度增加,这个问题的难度呈指数级爆炸。过去 20 年,人类在 $n=8$ 这个维度上一直卡在 496 个点这个记录上。

FunSearch 做了什么? 它没有直接给出点的坐标,而是写出了一段仅仅几行的 Python 代码。运行这段代码,它吐出了一个包含 512 个点的集合!

更精彩的在后面:因为 FunSearch 给的是代码,数学家们可以像读文章一样去读它。他们惊讶地发现,AI 在代码中利用了一种人类从未注意到的“对称性”。这种洞察力让数学家们如获至宝,他们甚至在 AI 的启发下,手动推导出了更多新的数学定理。这就是人机协作的完美范例。

故事二:装箱问题(The Bin Packing Problem)

这是各种物流、云计算公司的噩梦:如何把大小不一的包裹塞进最少的箱子里?

传统的算法要么太慢,要么不够聪明。FunSearch 生成了一个非常反直觉的算法。普通的算法会尽量把箱子填满(贪心策略),但 FunSearch 写出的代码在某些情况下会故意留一点空隙

事实证明,这种策略在处理后续涌入的包裹时更加灵活,最终使用的箱子总数更少。AI 学会了一种人类直觉之外的“大局观”。


总结:未来的科学家助手

FunSearch 的出现告诉我们要重新审视 AI 的角色。

它不再只是一个只会回答问题的聊天机器人,也不是一个深不可测的黑盒神谕。它更像是一个不知疲倦、偶尔甚至有点疯狂的初级研究员。它需要我们(人类)提供方向(Evaluator),但它能凭借算力和创造力,探索那些人类直觉无法触及的角落。

这篇论文最大的启示或许是:真理不仅存在于数据之中,更隐藏在生成数据的程序逻辑里。 而 AI,正在学会如何编程去寻找这些真理。

相关文章
|
人工智能 算法 程序员
人类专家:这代码逻辑我看不太懂。AI:没关系,能跑通,而且比你快
英伟达新论文《SATLUTION》震撼AI与编程界:AI自主进化出SAT求解器,竟超越人类冠军。它不靠补全代码,而是通过“规划+编码”双智能体,在严格规则与验证下自我迭代。70轮后,性能反超顶尖人工求解器,成本却不足2万美元。更深远的是,人类角色正从“写代码”转向“定规则、做验证”。这不仅是技术突破,更是对程序员未来的重新定义:我们或将成为AI的教练与考官,而非唯一的手艺人。
199 12
|
2月前
|
机器学习/深度学习 人工智能 算法
放弃手搓算法吧!ReEvo:让大模型通过“反思”自动进化出SOTA算法
ReEvo提出“语言梯度”新范式,让大模型通过自我反思进化算法。它使LLM不再盲写代码,而是像专家般分析优劣、总结经验,逐步优化出超越人类设计的启发式算法,在芯片布局、TSP等问题上表现SOTA,实现AI自动“炼”算法的突破。
162 0
|
网络安全 Nacos 数据安全/隐私保护
nacos常见问题之使用默认用户名密码提示错误如何解决
Nacos是阿里云开源的服务发现和配置管理平台,用于构建动态微服务应用架构;本汇总针对Nacos在实际应用中用户常遇到的问题进行了归纳和解答,旨在帮助开发者和运维人员高效解决使用Nacos时的各类疑难杂症。
|
2月前
|
数据采集 存储 人工智能
RAG实战指南:如何让大模型“记得住、答得准、学得快”?
AI博主maoku详解RAG技术:为大模型配备“外接大脑”,解决知识滞后、幻觉编造、专业适配不足三大痛点。文章系统讲解RAG原理、三大开发模式选择、Embedding模型选型、完整实战代码及效果评估,助你快速构建靠谱、可溯源、实时更新的智能问答系统。
|
2月前
|
Ubuntu Java Linux
ARM Linux 环境 国产 华为 欧拉 openEuler 20.03 操作系统安装 Polardb-X 数据库 单机版 rpm 包 教程
本文介绍在ARM64架构的openEuler 20.03系统上,通过RPM包安装部署PolarDB-X单节点数据库的完整过程,涵盖环境准备、RPM安装、用户配置、数据库初始化及启动连接等步骤,助力用户在国产化软硬件平台上快速搭建PolarDB-X运行环境。
679 1
|
7月前
|
测试技术 API 开发工具
API文档该怎么写,开发效率能翻几倍?
API文档是提升开发效率与协作的关键因素,本文探讨了API文档的核心要素、常见类型及编写规范,并介绍了如何借助现代化工具如Apifox实现高效管理与维护,助力团队打造高质量的API文档体系。
|
设计模式 存储 消息中间件
设计模式之美(二)——设计模式
《设计模式之美》是极客时间上的一个代码学习系列,在学习之后特在此做记录和总结。
设计模式之美(二)——设计模式
|
SQL 存储 数据库
SQL部分字段编码设置技巧与方法
在SQL数据库管理中,设置字段的编码对于确保数据的正确存储和检索至关重要
|
安全 开发工具 git
图解Git——分支管理《Pro Git》
分支管理是 Git 中的重要机制,支持并行开发和清晰的工作流。常用命令包括:`git branch` 列出所有分支,`git branch -v` 查看最后一次提交,`git branch --merged` 和 `git branch --no-merged` 分别查看已合并和未合并的分支。创建新分支用 `git branch <branch-name>`,删除分支用 `git branch -d`(已合并)或 `-D`(强制删除)。建议定期清理已完成任务的分支,保持代码库整洁,并使用有意义的分支命名规范。注意强制删除未合并分支时可能丢失数据。
343 5

热门文章

最新文章