永结无间Ⅰ--基于 LLM 的 AGI

news2024/12/23 18:06:37

在过去几周,传奇人物 Francois Chollet 发起的ARC 挑战引起了不小的轰动。这项挑战让很多 AI 研究人员感到困惑,它表明了所有 AI 系统都存在泛化能力不足的问题。ARC 上上一次 SOTA AI 的准确率约为 34%,而在同一挑战中,Mechanical Turks 的准确率约为 85%。

但最近,又有新消息称,该挑战的得分率已达到 50%。因此,最大的问题是,我们是否真的以某种方式提高了 AI 系统的泛化能力,还是背后还有其他事情发生?

涵盖的主题

  • ARC 如何定义 AGI?
  • 什么是 ARC-AGI?
  • GPT-4o 用于解决 ARC
  • 未来的发展
  • 我们真的解决了ARC-AGI吗?


Twitter 上流传的一张有趣图片嘲笑了神经符号人工智能

ARC 如何定义 AGI?

为了让计算机向更智能、更像人类的系统发展,我们需要创建具有适当反馈机制的系统。但要做到这一点,我们首先需要定义和评估智能。

这些定义和评估成为衡量能够与我们一起思考和发明的系统的进展的基准。

AGI 的共识定义是“可以自动化大部分有经济价值的工作的系统”,虽然这是一个有用的目标,但却是一种错误的智力衡量标准。

但这是与 AGI 有关的,测量特定任务的技能并不是衡量智力的良好指标。

技能在很大程度上受到先验知识和经验的影响:无限的先验或无限的训练数据允许开发人员为系统“购买”技能水平。这掩盖了系统自身的泛化能力。这里遵循的论点称为中文房间论点。当前的系统模仿特定行为,但它们在新的问题上表现糟糕,因此无法泛化。记住技巧不是一般智能,想出解决新问题的技巧才是。

中文房间争论

智力在于广泛或通用的能力;它以技能习得和概括为标志,而不是技能本身。

AGI 是一种能够在训练数据之外有效获取新技能的系统。

让我们正式定义它:

系统的智能是衡量系统在一系列任务中技能获取效率的标准,包括先验知识、经验和泛化难度。—— François Chollet,《关于智力的测量》

能够适应以前从未见过且其创建者(开发者)未曾预料到的新环境的系统。

截至目前,ARC-AGI 是唯一衡量通用智能进展的人工智能基准。

什么是 ARC-AGI?

ARC-AGI是一个用于评估 AI 的一般推理能力的数据集。它由类似下面的视觉问题组成,其中有输入输出示例,它们是彩色单元格的网格。任务是猜测从输入到输出的转换,然后填写缺失的网格。以下是本教程中的一个示例:

ARC 样本挑战

这个很简单,用 GPT-4o 解决它也许很容易。但是公共测试集的任务要难得;它们对于(典型的)人类来说通常并不简单。据报道,MTurk 人类基准的训练分布为 85%,但没有人类基准的公共测试集,而众所周知,公共测试集的难度要大得多。

样本测试挑战

为了成功解决任务,测试者必须为最终输出生成像素完美的正确输出网格。这包括选择正确的输出网格尺寸。

先验

ARC-AGI 的设计初衷是将人工智能与人类智能进行比较。为此,ARC-AGI 明确列出了人类拥有的先验知识,为比较人工智能系统提供了公平的基础。这些核心先验知识是人类在童年时期自然拥有的。

  1. 对象性:对象是持久的,不会无缘无故地出现或消失。对象可以根据情况进行交互或不交互。
  2. 目标导向性:物体可以是有生命的,也可以是无生命的。有些物体是“主体”——它们有意图,并且追求目标。
  3. 数字和计数:可以使用加法、减法和比较等基本数学知识,根据物体的形状、外观或运动对其进行计数或分类。
  4. 基本几何和拓扑:物体可以是矩形、三角形和圆形等形状,可以镜像、旋转、平移、变形、组合、重复等。可以检测距离的差异。

ARC-AGI 避免依赖这些先验知识之外的任何信息,例如语言等后天获得的知识或文化知识。

GPT-4o 用于解决 ARC

这个解决方案背后的主要思想非常简单。

使用 GPT-4o 生成大约 8,000 个尝试实现转换的 Python 程序,选择一个适用于所有示例(通常有 3 个示例)的程序,然后提交此函数应用于其他测试输入时产生的输出。以图像和各种 ascii 表示形式向 GPT-4o 显示问题。

这种方法在本质上与AlphaCode中应用的方法类似,其中模型生成数百万个完成项来尝试解决编程问题,然后对它们进行聚合以确定要提交的内容。


这个简单的想法仅用了 6 天的开发工作就达到了 50%。主要工作包括:

  • 构建小样本提示。
  • 为这些网格构建更好的文本表示。
  • 针对训练集进行迭代。
  • 实施各种其他调整以提高性能。

该项目开始于为最新的 LLM 打造/提供推理能力。

因此,让我们更详细地了解该方法。

1. 向 GPT-4o 提供 ARC-AGI 问题,为问题中的每个网格提供图像表示和各种文本表示。文本表示包括显示哪些单元格被不同颜色的连接成分占据,以及显示输入和输出之间的差异(在网格形状相同的情况下)。只将原始图像提供给 GPT-4o 根本行不通。

2. 指导 GPT-4o 推理什么是转换,推理如何将转换实现为代码,然后最终在代码中实际实现转换。

3. 使用少样本提示和几个精心手写的分步推理示例,让 GPT-4o 能够有效地进行推理。生成的提示通常长约 30k 个 token(包括图像)。

  • 使用一对小样本提示:一个提示用于当网格大小发生变化时(在任何示例中),另一个提示用于当网格大小不变时。

4. 从 GPT-4o 中抽取大量完成样本(每个问题约 5,000 个)。

5. 对每个问题选取最有希望的 12 个完成方案,然后尝试通过向 GPT-4o 展示该程序在示例中的实际输出内容来修复每个问题,然后要求 GPT-4o 修改代码以使其正确。

他们从这 12 个起始实施中抽样约 3,000 次,尝试修复每个问题。

  • 使用少量提示进行修改并逐步推理。
  • 有一个文本表示,显示实际输出和预期输出之间的差异。

6. 最后,根据对正确示例的程序的多数投票,选择 3 个提交。(如果我们没有 3 个不同的正确示例的程序提交,我们将应用一些启发式方法来挑选一个提交)。

除了在训练集上进行迭代之外,他们还对公共测试集的 100 个问题子集进行了少量迭代。

这里给出的所有结果都是在公共测试集的另一个子集上计算的,这些子集不重叠。训练集和测试集不是 IID,测试集更难,而且在质量上也有些不同,因此使用测试集的子集进行迭代有助于快速更好地了解事物如何随难度而变化。不幸的是,这些集合不是 IID:它使迭代变得更加困难和混乱。

未来的发展

我们可以分析出更多的样本可以提高测试表现。为了便于解释(和实施)。

拟合是以 2 为底的对数。因此,k 每增加一倍,正确率就会增加 3%。

虽然使用的样本数量相当大,但使用更多的样本肯定是可能的,就像AlphCode的情况一样。

更好的提示和代码修复的回报是什么?

注:此处V0和V2是修改后的提示。

修订似乎可以修复测试和训练中剩余的约 20% 的错误解决方案。例如,如果我们的正确率为 37%,那么我们就会得到额外的 0.63 * 0.2 = 0.13 正确率,总共 0.5。因此,修订在训练中产生的绝对改进明显较小(绝对改进仅为 6% vs 13%)。

此外,GPT-4o 在网格方面的视力很差。当被要求描述一个相当大的网格中有什么时,它往往无法正确“看到”输入,并会错误地陈述某个位置是什么颜色或存在什么形状的事实。

与之前针对此基准的研究相比,给定的解决方案每个问题使用的运行时计算量超过 1000 倍。也许之前针对此基准的研究可以很好地扩展计算能力,并且如果使用更多资源,准确率会更高。因此,此提交内容不符合 ARC-AGI 奖和主要排行榜的资格,因为它使用了闭源模型和过多的运行时计算。

我们真的解决了ARC-AGI吗?

Francois Chollet说:

如果你是对的 [LLM 可以进行情境学习],那么 LLM 在 ARC 谜题上会表现得非常好,因为 ARC 谜题并不复杂。每个谜题都只需要很少的知识。每个谜题的复杂度都很低。你不需要花太多心思去思考。它们对人类来说其实非常明显 [原文如此]即使是小孩也能做到,但 LLM 做不到。即使是比你多 100,000 倍知识的 LLM 也做不到。ARC 唯一的特别之处在于,它就是以抵制记忆为目的而设计的。这是唯一的事情。这是 LLM 表现的巨大障碍。如果你仔细观察大语言模型 (LLM),就会发现他们并没有真正地即时合成新的程序来解决他们所面临的任务。

因此,对于很多人来说,这似乎已经解决了难题,但事实并非如此。这些大型模型并没有明显提高智能。我们所做的只是在 Modulo Framework 中使用 LLM。

关键在于,人类的大脑不会生成 6000 个代码样本,然后尝试其中的每一个并给出结果。


关于大型语言模型 (LLM) 在规划和推理任务中的作用,人们存在相当大的困惑。一方面,有人过于乐观地声称,LLM 确实可以通过正确的提示或自我验证策略完成这些任务。另一方面,有人可能过于悲观地声称,LLM 在规划/推理任务中所能做的只是将问题规范从一种句法格式转换为另一种句法格式,并将问题交给外部符号求解器。

自回归 LLM 本身无法进行规划或自我验证(毕竟这是一种推理形式)。LLM 应被视为通用近似知识源,除了简单的前端/后端格式转换器之外,它在规划/推理任务中可以发挥更有意义的作用。

LLM-Modulo 框架将 LLM 的优势与基于外部模型的验证器的优势结合起来,形成更紧密的双向交互机制。驱动外部验证器本身的模型可以借助 LLM 获得。

通过简单地对 LLM 和符号组件进行流水线操作,LLM-Modulo 框架提供了一种更好的神经符号方法,它提供了 LLM 和符号组件之间更紧密的集成,并允许将基于模型的规划/推理机制的范围扩展到更灵活的知识、问题和偏好规范。


​​​​​​​​​欢迎前往我们的公众号,时事资讯

创作不易,觉得不错的话,点个赞吧!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1953588.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【React】Context机制跨层传递数据详解

文章目录 一、React Context的概念二、创建和使用Context1. 创建Context2. 使用Provider提供数据3. 使用Consumer获取数据 三、使用useContext Hook四、动态更新Context值五、Context的实际应用场景1. 主题切换2. 用户认证状态 六、注意事项 在开发React应用时,我们…

【C语言】深入探讨数组传参

一、数组传参简介 在C语言中,数组传参是一个常见的操作,尤其是在处理大量数据或需要多次访问相同数据集时。理解如何传递数组以及这些方法之间的差异是编写高效和安全代码的关键。在这篇博客中,我们将详细讨论C语言中数组传参的几种常见方法&…

【网络】应用层协议(自定义协议)(序列和反序列化)

应用层协议(自定义协议)(序列和反序列化) 一、引言--应用层的使用二、应用层1、网络版本计算器(1)协议定制和序列反序列化(2)网络版计算器协议定制i、封装有效载荷(默认上…

数据结构——单链表OJ题(上)

目录 一、移除链表元素 1.思路 2.注意 3.解题 二、反转链表 思路1:三指针翻转法 (1)注意 (2)解题 思路2:头插法 (1)注意 (2)解题 三、链表的中间结…

depcheck 前端依赖检查

介绍 depcheck 是一款用于检测项目中 未使用依赖项 的工具。 depcheck 通过扫描项目文件,帮助你找出未被引用的依赖,从而优化项目。 优势: 简单易用: 仅需几个简单的命令,就能够扫描并列出未使用的依赖项,让你快速了…

The Schematic workflow failed. See above.

在使用 ng new 新建Angular项目的时候会报一个错误:The Schematic workflow failed. See above. 解决办法: 只需要在后面加上 --skip-install 参数,就不会报错了。 ng new myapp --skip-install

打工人电脑里都需要的远程控制软件有哪些?这4款不能错过

不巧前几天台风,实在没办法到公司,但是项目还得继续,这时候远程控制电脑的技巧可谓是帮了我大忙了。不知道平常的你偶尔会不会也需要远程控制电脑的操作,如果有就继续看下去吧。 1.向日魁远程控制 直通车>>https://down.o…

AJAX-Promise 详解

(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 目录 前言 一、Promise基本概念 1.1 定义 1.2 状态 1.3 构造函数 二、Promise基本用法 2.1 then() 2.2 ca…

ThinkPHP一对一关联模型的运用(ORM)

一、序言 最近在写ThinkPHP关联模型的时候一些用法总忘,我就想通过写博客的方式复习和整理下一些用法。 具体版本: topthink/framework:6.1.4topthink/think-orm:2.0.61 二、实例应用 1、一对一关联 1.1、我先设计了两张表&#x…

根据题意写出完整的css,html和js代码【购物车模块页面及功能实现】

🏆本文收录于《CSDN问答解惑-专业版》专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!! 问题描述 根据题意写出完…

基于微信小程序+SpringBoot+Vue的社区超市管理系统(带1w+文档)

基于微信小程序SpringBootVue的社区超市管理系统(带1w文档) 基于微信小程序SpringBootVue的社区超市管理系统(带1w文档) 为了让商品信息的管理模式进行升级,也为了更好的维护商品信息,社区超市管理系统的开发运用就显得很有必要,因为它不仅可…

C# 植物大战僵尸

Winform 版本开发 高效率、流畅植物大战僵尸 git地址:冯腾飞/植物大战僵尸

go语言day19 使用git上传包文件到github Gin框架入门

git分布式版本控制系统_git切换head指针-CSDN博客 获取请求参数并和struct结构体绑定_哔哩哔哩_bilibili (gin框架) GO: 引入GIn框架_go 引入 gin-CSDN博客 使用git上传包文件 1)创建一个github账户,进入Repositories个人仓…

我在百科荣创企业实践——简易函数信号发生器(6)

对于高职教师来说,必不可少的一个任务就是参加企业实践。这个暑假,本人也没闲着,报名参加了上海市电子信息类教师企业实践。7月8日到13日,有幸来到美丽的泉城济南,远离了上海的酷暑,走进了百科荣创科技发展有限公司。在这短短的一周时间里,我结合自己的教学经验和企业的…

buu做题(8)

[安洵杯 2019]easy_web 查看源代码可以发现一长串的base64编码 就是页面上的一张图片 回到原页面,url上面也有一些奇怪的参数 经过两次base64和一次hex 解密后得到 555.png 应该就是包含着页面上的这张图片 然后尝试将index.php 按照这样的方式编码, 看看能不能包含到 TmprMl…

后端解决跨域(Cross-Origin Resource Sharing)(三种方式)

注解CrossOrigin 控制层的类上或者方法上加注解CrossOrigin 实现接口并重写方法 Configuration public class CorsConfig implements WebMvcConfigurer {Overridepublic void addCorsMappings(CorsRegistry registry) {// 设置允许跨域的路径registry.addMapping("/**&qu…

算法通关:006_4二分查找:寻找数组中的峰值

文章目录 描述主要代码全部代码运行结果总结 二分法不一定只能用在有序数组中。 描述 leetcode:162 主要代码 //二分法查找峰值public static int findPeakElement(int[] arr){if (arr.length 1){//randomArray()不会出现arr null的情况return 0;}//先检查 0…

LabVIEW操作系列1

系列文章目录 我的记录: LabVIEW操作系列 文章目录 系列文章目录前言五、特殊用法5.1 取值范围表示5.2 对输入值取值范围进行限定5.3 控制多个While循环停止运行。5.4 获取按钮上的文本5.5 获取按钮上的文本【进阶】 六、使用步骤1.引入库2.读入数据 七、其余功能7.…

二叉树以及堆的实现

树 树的定义及概念 树是⼀种非线性的数据结构,它是由n(n>0) 个有限结点组成⼀个具有层次关系的集合。把它叫做树是因为它看起来像⼀棵倒挂的树,也就是说它是根朝上,而叶朝下的。 有⼀个特殊的结点,称…

[Meachines] [Easy] Admirer Adminer远程Mysql反向+Python三方库函数劫持权限提升

信息收集 IP AddressOpening Ports10.10.10.187TCP:21,22,80 $ nmap -p- 10.10.10.187 --min-rate 1000 -sC -sV PORT STATE SERVICE VERSION 21/tcp open ftp vsftpd 3.0.3 22/tcp open ssh OpenSSH 7.4p1 Debian 10deb9u7 (protocol 2.0) | ssh-hostkey: | …