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

在过去几周,传奇人物 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(包括图像)。

  • 使用一对小样本提示:一个提示用于当网格大小发生变化时(在任何示例中),另一个提示用于当网格大小不变时。
  1. 从 GPT-4o 中抽取大量完成样本(每个问题约 5,000 个)。

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

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

  • 使用少量提示进行修改并逐步推理。
  • 有一个文本表示,显示实际输出和预期输出之间的差异。
  1. 最后,根据对正确示例的程序的多数投票,选择 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 和符号组件之间更紧密的集成,并允许将基于模型的规划/推理机制的范围扩展到更灵活的知识、问题和偏好规范。

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

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

相关推荐
java1234_小锋34 分钟前
MyBatis如何处理延迟加载?
java·开发语言
FeboReigns1 小时前
C++简明教程(10)(初识类)
c语言·开发语言·c++
学前端的小朱1 小时前
处理字体图标、js、html及其他资源
开发语言·javascript·webpack·html·打包工具
千天夜1 小时前
多源多点路径规划:基于启发式动态生成树算法的实现
算法·机器学习·动态规划
摇光932 小时前
js高阶-async与事件循环
开发语言·javascript·事件循环·宏任务·微任务
Anlici2 小时前
模型训练与数据分析
人工智能·机器学习
沐泽Mu2 小时前
嵌入式学习-QT-Day09
开发语言·qt·学习
小猿_002 小时前
C语言实现顺序表详解
c语言·开发语言
余~~185381628002 小时前
NFC 碰一碰发视频源码搭建技术详解,支持OEM
开发语言·人工智能·python·音视频
GOATLong2 小时前
c++智能指针
开发语言·c++