ARC挑战指南2023:由于ARC训练集的规模非常小,需要强烈的归纳偏差和先验知识

科技   2024-08-30 12:47   上海  


Lab42 Essay Challenge The Hitchhiker’s Guide to the ARC ChallengeSimon Ouellette

Lab42 论文挑战《银河系漫游指南》中的 ARC 挑战


Simon Ouellette




关于如何实现的更多细节将在“解决方案提议”部分提供



1 引言

要解决抽象与推理语料库(ARC),学习器必须能够在某种意义上“逆向工程”,即生成示例的底层过程(或算法)。这对大多数机器学习方法来说是一项不可能完成的任务,这些方法通常偏向于多维曲线拟合,而不是算法学习。

这是一个关键的区别,并且普遍认为深度学习或一般端到端可微方法只能“拟合曲线”,而不是学习底层过程或算法。

对于非循环学习器来说,如前馈神经网络:它们的架构使它们无法表达学习算法所需的递归或迭代处理机制。相反,它们最多只能学习从域空间到范围空间的直接映射。这不过是多维曲线拟合的一种形式,因此,根据构造,学习模型限于训练数据的域。这种方法永远不可能产生外推能力。

然而,对于某些类型的机器学习算法,这些说法被最近的实验结果[23, 8, 9, 11, 13, 25, 22, 39, 21, 37, 14, 40, 38, 29, 34, 17, 19]所质疑。

人类能够通过适当组合和迭代简单的逻辑原语来解决新颖的复杂推理问题。只要测试环境中仍然存在相同的“第一原理”或基本法则,就可以以这种方式成功地进行外推。在这篇论文中,将讨论提供这种能力的非常有限的算法集,并提出一种可行的方法来解决抽象与推理语料库。

2 文献综述

2.1 基于深度学习的算法学习

2.1.1 神经GPU

2015年,Kaiser和Sutskever[8]提出了神经GPU:一种他们声称能够学习算法的神经网络架构。它本质上是一个循环神经网络,其中心组件是卷积门控循环单元(而不是例如LSTM单元)。与长短期记忆(LSTM)网络不同,神经GPU不会在每次迭代中处理新的输入序列元素,而是在整个输入上迭代(卷积)操作。

他们进行了6个实验:长二进制加法、长二进制乘法、复制序列、反转序列、复制序列和按位计数。对于这些实验中的每一个,他们都在训练时使用长达预定长度的序列,并在训练期间未见过的长得多的序列上进行评估,以展示算法外推的能力。

对于二进制加法和乘法,他们报告了在使用仅在20位上训练的模型上,对长达2000位的序列达到了100%的准确率。相比之下,堆叠RNN[4]和注意力LSTM未能泛化。在其他4个算法任务中,他们使用长达41位的序列训练模型,并在长达4001位的序列上进行测试。他们还报告了在这些实验中的完美泛化。

他们可视化了神经GPU内部发生的操作,并将输出呈现为视频。从这个可视化中可以明显看出,例如,对于复制任务,它正确地学会了在每一步将嵌入的一部分向下移动。也就是说,它学会了解决方案过程本身,而不是记忆映射或捷径解决方案。

然而,他们指出这些结果只来自通过网格搜索训练的729个模型中表现最好的少数几个模型。换句话说,训练一个泛化良好的神经GPU似乎非常困难,并且高度依赖于超参数选择。

然而,随后的两篇论文解决了神经GPU的不可靠性问题。2016年,Price等人[9]对神经GPU进行了实验,表明使用更大的模型尺寸和精心设计的课程,他们获得了更可靠准确的模型。2018年,Freivalds和Liepins[11]对原始神经GPU架构进行了一些修改。他们训练的所有模型都能泛化到100倍长的输入,并且错误率不到1%,这代表了训练稳定性的显著改进。

2.1.2 通用变换器

典型的(或“普通”)变换器由6个编码器块和6个解码器块组成。这意味着,构造上,它在编码时无法执行超过6个连续的注意力操作(解码也是如此)。这里的一个注意力操作指的是并行处理输入序列中的每个标记。换句话说,变换器可以执行的操作总数与输入序列长度成线性关系,而连续操作的总数是恒定的。

因此,实际上不能说变换器是图灵完备(或计算通用)。也就是说,它无法学习解决需要任意、动态数量迭代的问题[13]。

这些原始变换器架构的限制是开发通用变换器[13](UT)的动机。该算法由变换器架构组成,增加了对编码和解码块的任意递归机制。这意味着UT可以无限期地循环执行一组操作,并决定何时满足停止条件。与循环神经网络(RNN)不同,UT是对编码块(或解码)操作进行迭代(即通过处理“深度”),而不是对输入序列中的时间步骤进行迭代。因此,UT可以学习的操作数量与输入序列长度呈超线性关系。

UT架构的作者在bAbI问题回答、主谓一致性、LAMBADA语言建模、学习执行(LTE)、机器翻译以及类似神经GPU中使用的算法任务上验证了他们的方法。并非所有这些与本文中心的算法学习问题相关,因此将重点关注LTE和算法任务。

LTE任务[4]包括将程序的字符级表示映射到它们的正确输出。换句话说,算法必须学会执行呈现给它的指令(或“代码”)。这个程序评估模式包括3个不同的子任务:“程序”、“控制”、“加法”。除了“程序评估”,他们还研究了记忆输入序列的任务:学习器接收一个数字序列,如"1212123",在经过每个输入元素后,它必须输出相同的序列(“复制”)。还提出了这个问题的两个变体:一个将输入序列连续呈现两次(“双倍”),一个以相反顺序呈现(“反转”)。

在LTE任务的记忆和程序评估变体中,通用变换器达到了100%的准确率,除了“程序”子任务,它的序列准确率为63%。相比之下,普通变换器在记忆变体上达到了63%(“复制”)、55%(“双倍”)和26%(“反转”)的序列准确率,在程序评估变体上达到了29%(“程序”)、66%(“控制”)和100%(“加法”)。虽然这些准确率比LSTM高,但这些结果为普通变换器实际上不是图灵完备的观点提供了经验支持(由于可能迭代的静态数量)。

算法任务包括学习复制、反转或添加十进制符号(0到9)字符串。他们在长度为40的序列上训练模型,并在长度为400的序列上评估它们。

在“复制”算法任务中,UT达到了35%的序列准确率,相比之下,普通变换器为3%,LSTM为9%。在“反转”任务中,UT的表现为46%,而普通变换器只有6%,LSTM为11%。最后,在“加法”任务中,UT只获得了2%的准确率,而普通变换器和LSTM的准确率均为0%。

这进一步支持了UT在算法学习方面相对于普通变换器的优越性,尽管它也提出了一个问题:为什么UT没有达到100%的准确率?值得注意的是,神经GPU在所有这些算法任务中都获得了100%的序列准确率,尽管作者指出需要课程学习才能达到这种性能水平。课程学习没有用于生成通用变换器的结果。

2022年,研究人员[25]向UT添加了一个外部的网格状记忆,并表明它能够学习多操作数、多位数加法。该模型在最多10位数字和最多4个操作数的序列上进行了训练。结果表明,在最多2个项的2000位序列上,准确率接近完美(超过99%),这比神经GPU的序列更长。

2.1.3 深度思考系统

2021年,研究人员研究了在简单问题上训练的循环神经网络是否能够将它们学到的概念外推到这些问题更难的实例[22]。他们使用了三个不同类别的问题进行实验:计算前缀和、解决迷宫和解决国际象棋难题。对于每一个问题,他们都在“简单”子集上训练了循环神经网络,特别是对ResNets[6]的递归,并在训练期间不可能“记忆”(或“曲线拟合”)的更难的问题集上进行了评估。目标是证明模型已经学会了迭代应用基本原理,即算法,而不是从训练域到训练范围的直接映射。

在前缀和问题上,他们报告说,在32位字符串上训练的循环ResNet架构能够以90%以上的准确率泛化到44位字符串。在迷宫任务中,他们在“小”(9x9网格)迷宫上训练,并在“大”(13x13)迷宫上报告了略高于70%的性能。在国际象棋难题上,他们在Elo评分低于1385的问题实例上训练,并在Elo评分高于1385的问题实例上测试。结果表明,在难题上的成功率约为74.7%。

总的来说,他们得出结论,他们提出的解决方案确实学会了算法外推,但只是在一个适度的、近似的意义上,随着测试问题的复杂性增加而退化。

这些作者在后来的研究[23]中,发现了一个根本原因,为什么他们的循环神经网络无法扩展到一定水平的算法复杂性,他们称之为“过度思考”。特别是,他们发现,当算法在尝试解决问题时对隐藏状态进行迭代,逐渐的中间转换往往会失去对原始问题(信息丢失)的跟踪。

当人类深入思考一个问题时,我们经常停下来重读问题陈述或重新评估所讨论的任务。类似地,为了解决“过度思考”问题,他们提出了一个“回忆架构”,它本质上在每个处理步骤中重新连接原始输入(即“跳跃连接”)。

这是一个简单的策略,带来了显著的改进。在计算前缀和的任务中,他们在32位输入上训练了一个循环ResNet(就像他们之前的工作一样),并外推到512位数据。没有回忆架构,准确率为0%。有了回忆架构,准确率提高到97%。在解决迷宫的任务中,他们在9x9网格上训练,并外推到59x59网格,准确率为97%(注意:他们还必须使用在该论文中也引入的特殊的“渐进损失”进行训练,否则准确率会下降到83%),而基线的“深度思考”架构在0%的准确率上完全失败。然而,在国际象棋难题上的收益更为适中,为4%,可能表明这类问题的主要困难与算法外推的性质不同。

2.1.4 语言模型和推理

大型语言模型(LLM)已经展示了在正确条件下执行某些形式的口头推理的新兴能力。上下文学习描述了使用案例,其中LLM提供了一个输入提示,其中包含一个任务的几个输入-输出示例,预计它只能从这些少量的输入示例中学习如何解决未来的示例。

这是一种“少次学习”的形式。

例如,人们可能会提供以下提示:

它应该从3个示例中学习任务解决方案(将序列左移1个位置),并给出答案:[5, 0, 0, 0]。

通常,上下文学习指的是在没有针对这种任务结构进行训练的情况下,依然具有这种能力。相反,LLMs是通过自监督的方式训练的,仅仅是预测各种文档句子中的下一个词。因此,这种能力来自完全不同的训练方法是令人惊讶的。

然而,研究表明,在训练时也使用这种上下文学习设置[26, 24, 33, 27]有助于下游的少次学习能力。因此,也可以“元训练”一个变换器,直接使用这种少次输入输出示例结构。

思维链提示是一种技术,它包括在这些上下文输入输出示例中描述中间步骤。这鼓励模型学习推理过程本身,并在进行推理时解释自己的推理。

在ScienceQA基准测试[30]上,它由科学主题的多模态多项选择题组成,每个答案都需要一个解释,“多模态思维链”方法[42]达到了91.68%的超人表现(也比GPT-3.5高出16.51%)。

一个ScienceQA问题的例子:

“问题:哪种来自婴儿手的力量打开了橱柜门?

选项:A) 拉 B) 推

上下文:一个婴儿想知道橱柜里面是什么。她的手对门施加了力,门打开了。(提供了一张婴儿正在打开橱柜门的图片)

答案:答案是A。

因为:婴儿的手对橱柜门施加了力。这个力导致门打开。这个力的方向是朝向婴儿的手。这个力是一个拉力。”

LLMs是否仅依赖表面相关性或使用更深层次的推理,这一问题在最近的一篇论文[28]中进行了分析。作者使用Othello(一种棋类游戏)的移动轨迹训练GPT,没有关于棋盘状态的视觉或空间信息。利用探测,这是NLP中的一种既定技术,他们探索了神经网络学习到的内部表示。他们表明,对于游戏中的每一步,如果他们探测模型的内部状态,他们能够以1.7%的误差率预测棋盘的真实状态(即对于棋盘上的每个方格,它是否包含白色、黑色或空白)。相比之下,一个随机初始化的模型给出了26.2%的误差率。从这一点他们得出结论,仅凭移动列表,模型就保持了棋盘状态随游戏发展的内部表示。因此,有理由认为,预测下一步不仅仅是学习表面相关性和概率的问题。

2.1.5 深度学习的问题

Gülçehre和Bengio[5]表明,梯度下降在解决由两个或更多高度非线性任务组合而成的问题时存在困难。他们将这些情况下寻找解决方案比作在干草堆中寻找针。这对于ARC任务来说是一个挑战,因为它们本身可以被视为由更简单任务组成的复杂和抽象任务。

在他们的实验中,每个示例生成了3个五边形图案。这些图案在图像中随机定位,并且随机缩放和旋转。目标是如果图像中的三个形状相同则返回1,否则返回0。从概念上讲,这个任务首先包括识别形状本身,然后逻辑推理它们是否相同或不同。他们未能找到一个解决这个任务“原封不动”的神经网络架构(即没有中间提示的帮助)。他们指出,如果单独考虑这两个子任务中的任何一个,它们可以很容易地被学习。问题只有在它们的组合中才真正显现。

2017年,研究人员[12]分析了深度学习难以解决的两个问题示例。第一个实验,称为奇偶学习问题,工作方式如下:生成具有随机数量1的二进制向量,分类器必须学会区分奇数和偶数个1。然而,任务只考虑位的一个特定子集,而不是整个向量,这个子集在训练时是未知的(必须学习)。因此,学习器必须弄清楚必须计算1的数量,必须学习奇偶概念,并且必须学习要考虑的位的子集。随着这些向量的维度增加,问题变得越来越难以学习:直到大约30维,分类器不再能够超越随机机会进行性能。

在另一个实验中,他们生成了随机位置、长度和角度的直线图像。中间任务是确定线斜率是“向上”还是“向下”。这个任务的最终目标和前一个一样,是一个奇偶问题。每个样本是这些线的k元组,根据它们的“向上性”或“向下性”,求解器必须确定给定斜率方向的线是否有奇数或偶数条。

根据他们的数学证明,这也是“端到端”无法学习的(对于k大于3),梯度太嘈杂。更正式地说,他们数学上表明,对于这个任务,梯度中存在的信号随着k的增加呈指数级下降。

他们得出结论,端到端尝试解决这些任务无法成功,但如果我们将它们分解为子任务,并首先单独学习这些子任务,然后解决复合问题就变得可能。

在更近期的研究[40]中,证明了即使在大型语言模型(LLMs)和变换器中,解决“多跳”推理问题的这些学习困难仍然存在。例如,在需要隐式分解为推理步骤的StrategyQA基准测试中,最大的可用语言模型之一(Gopher)达到了61%的准确率,而人类表现大约是87%。

作者[40]通过数学证明,有了中间子任务监督,序列到序列模型可以学习任何遵循有效分解为更简单子任务结构的任务。换句话说,他们证明了一个定理,保证当中间监督可用时,高效的神经网络学习是可能的。

沿着类似的推理线,其他研究人员[38]证明,课程学习是提供这种中间监督的有效方式。他们在奇偶学习问题上展示了他们的结果。

2.2 基于DSL的算法学习

2.2.1 现有技术简要回顾

使用特定领域语言(DSLs)的归纳程序合成涉及为算法提供任务输入和输出的几个示例。然后算法生成一个程序来解决这个任务,以从语法或DSL中选择的标记树的形式。这些标记表示在提供的任务输入上操作以生成预期输出的函数原语。

2017年,提出了RobustFill算法[10]用于神经程序合成。它由一个基于注意力的LSTM序列到序列模型组成,该模型输出一系列来自DSL的标记。这个序列形成一个程序,然后在执行时解决任务的测试示例。

他们使用它来解决FlashFill数据集中的任务,该数据集包括学习自动填充字符串示例,如在电子表格中。这受到Microsoft Excel功能的启发,该功能允许用户通过首先提供一些要进行的转换示例来填充电子表格中的新行或列。这实际上是从示例生成宏的一种方式,而不是从编程生成。

他们在FlashFill数据集上达到了92%的准确率,这与撰写时相应的Microsoft Excel功能准确率相同。此外,当他们在数据集中注入噪声时,他们发现他们的方法仍然非常准确,而Microsoft Excel版本随着噪声字符数量的增加迅速接近0%的性能。

DSL基础归纳程序合成的最新技术是DreamCoder[20]。它是一种结合神经网络和离散枚举搜索的方法,搜索程序树(由DSL元素表示)。神经网络的目的是输出在程序中使用每个DSL标记生成的概率,而离散搜索组件按照概率非递增顺序枚举可能的程序。

与前身相比,DreamCoder 特别有趣之处在于其学习新函数原语并将其添加到DSL的能力,DSL实际上随着时间增长。这种能力是通过一种先进的自动重构算法实现的,该算法确保在不同任务中语义等价的代码段被正确识别为“共享”和可重用的。没有这个重构功能,相同功能的不同措辞将阻止可重用子程序的识别。

作者[20]展示了各种任务的结果,包括:

• 列表处理:包括数字序列作为输入和输出的示例,应用了不同的转换,如对列表进行排序、删除重复项、对数字求和等。

• 文本编辑:类似于列表处理,但是字符字符串作为输入和输出,操作如生成首字母缩写(每个词的第一个字母)或删除最后3个字符。

• LOGO图形:呈现一个图形,必须提供重现该图形所需的LOGO海龟指令。因此,生成的程序本质上是一系列指令,如“向前50,左转60,向前100等”。

• 积木塔:类似于LOGO图形,积木塔模式作为输入呈现,生成的程序必须包含正确的积木放置指令以重现输入。

• 符号回归:算法呈现一组来自数学函数的输入/输出示例,例如物理定律。

他们将自己的结果与RobustFill以及DreamCoder的一个早期版本,称为EC2,进行了比较。在文本编辑方面,DreamCoder达到了大约70%的准确率(RobustFill:0%)。在LOGO图形方面,DreamCoder达到了约90%(RobustFill:0%)。在列表处理方面,它达到了约90%(RobustFill:15%)。在符号回归方面,它达到了大约85%(RobustFill:70%)。在积木搭建(积木塔)方面,它达到了约95%的性能(RobustFill:10%)。

麻省理工学院的一位硕士生尝试使用DreamCoder解决ARC挑战作为他的论文[18]。然而,他的实验结果并不确定,只有少数ARC任务成功解决。他们得出的结论是,DreamCoder的搜索算法太弱,无法扩展到具有挑战性的ARC任务。

他们在结论中进一步指出:

“另一个方向涉及解决人类在面对ARC这样的挑战时带来的大量先验知识。大型生成性预训练模型提供了一种潜在的方式来以这种方式整合先验知识。这些模型能够在多大程度上泛化到离散彩色网格的特殊ARC环境中,还有待观察,但过去几年所展示的令人印象深刻的改进表明,对这些模型下注是不安全的。”

ARC挑战的最新技术是一种DSL解决方案,它实现了各种网格变换原语。对适当的DSL组件进行离散搜索,直到生成最佳拟合程序。然后使用这个程序来解决给定任务。该解决方案不包含任何学习,所有构建块都是硬编码的,并且使用启发式搜索来解决任务。

2.2.2 组合爆炸

众所周知,基于DSL的归纳程序合成受到组合爆炸问题的困扰[20, 41]。这个术语指的是,随着我们向语法中添加新元素,候选程序的搜索空间呈指数增长。因此,随着我们尝试增加DSL的灵活性和表达能力,搜索的复杂性也随之增加。它还指的是搜索空间随着目标解决方案的深度(复杂性)呈指数增长。这严重限制了这种基于DSL的搜索方法在非平凡问题上的实用性。

DreamCoder至少通过两种方式尝试控制这种组合爆炸。首先,它通过从发现的可重用子程序中学习不断增长的DSL来实现这一点。的确,DSL在训练过程中变得越来越特定于问题领域,这意味着每个任务的目标解决方案可以用更少的原语来表示。这加速了寻找解决方案的过程。其次,有一个神经网络模块为DSL元素分配概率,这意味着搜索可以集中在一个更窄的子集上。

一些研究人员[41]提出了一种分割-对齐-征服策略来解决这个问题。他们首先通过对ARC中的输入网格执行对象分割来将其分解为组成部分。然后,他们“对齐”输入和输出网格中相应的对象,并分别解决这些转换。这个想法是,通过将大型任务分解为更简单的子任务,可以减轻复杂性。然而,由于分割和对齐步骤是针对特定问题的、硬编码的(不适用于所有情况),他们的方法只能解决25%的ARC任务。

2.3 关键要点

• 递归是学习算法能力的基本要求。

• 神经GPU的改进版本、通用变换器和深度思考系统都已证明有能力以一种泛化到训练集之外的方式解决算法任务。

• 没有中间监督,高度复合的任务对于(深度)学习方法来说很难或无法解决。

• 课程学习是提供必要中间监督的好方法。

• 基于DSL的方法也可以解决简单的算法任务。

• 基于DSL的方法受到组合爆炸问题的困扰,这使它们在更复杂的任务中不切实际。

• DreamCoder在原则上通过逐步学习DSL中的新组件来缓解这种组合爆炸问题。

3 神经网络与DSL方法

回到ARC,人们可能会问:为什么基于DSL的方法迄今为止表现优于神经网络?答案很简单:基于DSL的方法具有高偏差、低方差,而神经网络具有高方差、低偏差。因此,由于ARC训练集的规模非常小,需要强烈的归纳偏差和先验知识。因此,即使是图灵完备的神经网络方法,从头开始在ARC数据集上训练也几乎肯定会失败。

更一般地说,任何低偏差、高方差的学习器从头开始在ARC数据集上训练都会失败。

在以下小节中,我们将探讨与这两种方法相关的各种批评和困难。

3.1 多任务处理

在[15]中,提出了以下论点:

“虽然给定的神经网络可能在任何单一任务上都非常熟练,但我们仍然远未达到能够在多种任务上表现出色的单一模型。”

在这句话的结尾,他们引用了2019年一篇关于量化强化学习泛化能力的论文作为支持证据。考虑到到2023年我们已经看到各种成功的通用模型,这个论点可能不再有太多说服力,例如:

• DeepMind的通用强化学习代理[35]

• 能够通过上下文学习少次学习新任务的ChatGPT和其他大型语言模型(LLMs)

在这个阶段,应该清楚的是,一个足够大的神经网络确实能够学习多任务处理,并且甚至能够适应性地适应新任务。

在提出的解决方案中,我们将使用监督上下文训练来训练模型。这将解锁所需的少次学习能力,使得训练一个能够执行多种不同任务的模型成为可能。

应该指出,神经GPU和深度思考系统都没有展示出上下文学习的能力,因此它们将从提出的算法候选列表中被排除。

3.2 累积近似误差

在[15]中,提出了以下论点:

“使用梯度下降训练(循环)神经网络在更抽象的任务上,例如检查奇偶性、计数或验证哪些像素在形状内部/外部,已经被知道无法泛化到训练集的范围之外。”

这个论点部分正确。也就是说,它并没有在超出训练集范围时就泛化失败(正如文献综述中所示)。然而,确实它无法一贯地泛化到无限。

话虽如此,我们在解释这种现象的含义时应该小心。有两种可能的解释:

1. 系统性失败:神经网络没有正确学习底层的算法过程,而只是学习了从输入到输出的直接映射(即“压缩记忆”)。

2. 生产力失败:神经网络正确学习了底层的算法过程,但权重是连续值意味着在推理过程中不断迭代时会有小的残余误差累积。

在第一种情况下,问题在于模型没有学习到任务的递归或算法本质,而是学习到了一种特定于训练数据的模式。在第二种情况下,即使模型理解了任务的算法本质,由于权重的小数点造成的累积误差,模型在多次迭代后可能无法保持完全的准确性。

对于ARC这类需要复杂推理的任务,第二种情况尤其重要,因为在解决这些问题时,模型可能需要进行多步骤的推理过程。解决这个问题的一种方法是使用具有较小累积误差的离散权重,或者设计模型以减少迭代过程中的误差传播。另一种方法是使用高级提示技术,帮助模型在推理过程中保持正确的轨迹。

所有前几节提出的证据都指向第二个解释是正确的,而不是第一个。的确,如果第一个解释是正确的,那么算法外推的实验在我们超出训练数据域的范围时会立即失败。模型不可能记住它从未见过的东西。相反,随着累积误差的增加,性能逐渐下降。

本文作者进行了一些算法外推的实验,证实并解释了这个问题。它们很容易复现,并且怀疑的读者可以尝试。

在实验中,一个循环神经网络(RNN)被训练来计算输入序列中非零像素的数量(针对10种不同颜色进行了一位有效编码)。RNN的目标是为每种可能的9种非零颜色输出网格中的像素计数。如果每个预测计数的四舍五入标量值与真实值完全对应,则预测被视为成功。即使只有一个值有偏差,它也被视为失败。

RNN在1x1到7x7(包括)的网格样本上进行了训练。然后在18x18的网格上进行了测试,泛化准确率达到了99.7%。然而,当网格维度增加到18以上时,泛化准确率下降了。例如,在20x20上,准确率大约是75%。

由于这个实验的简单性,检查权重以理解RNN学到了什么以及为什么它不能“无限”泛化到训练集之外是很容易的。的确,循环神经网络的核心单元只是一个线性层,它将长度为19的向量映射到长度为9的向量。这个线性层的输入包括10个元素的输入(像素xt的一位有效编码颜色),与维度为9的隐藏状态ht串联。输出是新的隐藏状态ht+1,其维度也是9。这可能是能够解决这个问题的最简单的RNN结构。

对于输出ht+1中的每个索引i,学习到的权重对应于从xi+1,t到hi,t+1的连接值为1,以及从hi,t到hi,t+1的连接值为1。其他权重的值都为零。

总结来说,它学会了将当前网格位置的一位有效编码颜色值加到先前隐藏状态在该位置的值上。这意味着隐藏状态像预期的那样,作为9种非零颜色的内部计数器。x0,t没有连接到任何东西意味着它已经学会像预期的那样忽略0值像素。从这一点我们可以得出结论,它确实学会了正确的算法:它不仅仅是“记忆”从网格到数字的映射。相反,它确实在保持每种颜色的内部计数,并在每次在输入序列中看到某种颜色时将适当的计数器增加1。

然而,有一个问题。这些权重的1和0值并不精确。相反,我们有诸如1.00002或0.00031之类的权重值。当我们迭代地乘以和求和这些权重值时,隐藏状态的内部计数器开始累积计数误差。当序列足够长时,最终这个误差会累积到比真实答案多1(或少1)。这就是模型无法“无限”泛化到训练集规模之外的唯一原因。

如果这还不够证明,你可以通过在训练后但在测试推理之前对学习到的权重应用四舍五入操作来说服自己。有了精确的权重,你会发现你学到的模型确实能够泛化到你的计算能力极限。

这个简单的实验解释了循环神经网络为何能够成功学习以泛化的方式迭代应用基本原理,或者更确切地说,连续值近似。这至少部分解释了我们在所有报告深度学习算法外推结果的论文中看到的随着“迭代深度”增加而逐渐恶化的现象。

从理论上讲,这确实是一个应该针对连续值神经网络算法外推主题解决的问题。它确实意味着我们永远不可能有这样的神经网络,能够进行计数或执行算术运算,并且能够泛化到无限(无论计算资源限制如何)。

要做到这一点,看来我们需要某种机制,将隐藏状态“弹回”到最近的离散概念。在前述计数实验中,四舍五入操作就起到了这样的作用。

对于我们处理离散数字的问题,或许四舍五入权重就足够了。然而,这不是一个可泛化的解决方案。

解决这个问题超出了本文的范围,尽管想到的是原型网络方法,其中向量被投影到度量空间,并且最近的簇中心(原型)被保留并用于下一次递归操作,而不是直接使用前一个结果。这样,每次迭代的中间结果被迫“弹回”到核心原型概念,而不是允许它逐渐漂移。诀窍总是如何以可微分的方式做到这一点?

从实用角度讲,虽然不明显,但这种累积误差问题是否真的是这里提出的方法的问题还不得而知。在ARC中,我们将在与测试集相似甚至更大的推理深度上训练问题(因为将看到,我们将自己生成那个训练数据)。因此,外推到明显更长或更复杂的问题不应该是必要的。也就是说,如果ARC挑战包括在30x30的网格上训练,并在500x500的网格上测试,那么是的,这将是需要解决的问题。在那之前,近似就足够了。

3.3 空白石板(Tabula Rasa)

基于DSL的方法带有非常明确的、手工制定的领域知识先验:函数原语。另一方面,如果不是在任何东西上进行预训练,神经网络几乎完全是空白石板。唯一的例外是来自其架构的归纳偏差(例如,CNN中的卷积偏差)。

这意味着基于DSL的方法在处理特定问题时,拥有针对该问题领域的内置知识,这些知识以函数的形式直接编码到解决方案中。这种方法在面对特定类型的算法问题时可以非常有效,因为它们能够利用这些内建的、针对问题领域的知识来指导搜索过程。

相比之下,神经网络在没有预训练的情况下,必须从数据中学习所有知识。它们必须通过训练过程来发现问题的模式和结构,这使得它们在理论上能够学习任何类型的任务,但这也意味着它们在面对新任务时起初可能表现不佳,直到它们通过学习掌握了足够的信息。

3.4 海底捞针(The needle in the haystack)

正如在2.2.2节中讨论的,基于DSL的方法受到组合爆炸问题的困扰。对于这些方法来说,这是一个严重的问题,尽管从理论上讲,由于DreamCoder能够逐渐简化搜索空间,因此应该能够缓解这个问题,因为它学习到了新的子程序。

虽然不太明显,但在梯度对于损失景观的广大区域没有信息的情况下,梯度下降也存在这个问题。这在2.1.5节中已经详细讨论过了。这项研究的结论是,通过使用中间概念监督,如课程学习,已经证明所有任务都是可以学习的。

关于如何实现这一点的更多细节将在“解决方案提议”部分提供。


3.5 抽象视觉推理

到目前为止,本文主要集中在相对简单的算法任务上,以展示深度学习被严重低估的学习能力。然而,我们不应忘记,ARC任务的复杂性远远超出了这些。在某种意义上,ARC更接近于抽象视觉推理基准测试,如合成视觉推理测试(SVRT)[2]或雷文渐进矩阵(RPM)[1]。

这些基准测试在视觉感知上并不复杂,它们的难度在于学习者需要表示的空间抽象概念,以解决它们。

在这些类型的基准测试中,尽管已经尝试了除深度学习之外的不同方法,但最先进的方法[36]主要是由后者构成的。在SVRT中,目前表现最好的是一种循环视觉变换器架构[32](RViT)。有趣的是,RViT架构本质上是一种通用变换器,增加了一个CNN模块。

RPM是最受欢迎的视觉推理基准测试之一。最初,研究人员[7]尝试通过基于规则和启发式算法来解决它。然而,从那时起,深度学习方法已成为更优越的方法[31]。

(RPM 最好的是: AGI之 概率溯因推理超越人类水平   学习抽象规则进行视觉推理v2 ibm系列 )

3.6 总结与讨论

在这两种方法中,都需要编写针对特定任务的程序。在DSL的情况下,是为了提供解决方案的构建块。在深度学习的情况下,是为了生成训练数据。在这两种情况下,也需要编写中间构建块的代码。

两种方法之间的差异如下:

- 在DSL的情况下,程序员必须弄清楚如何解决问题。即,编码的原始函数必须是解决方案的所有元素。即使搜索算法负责弄清楚如何组合这些组件,程序员必须以某种方式确保解决方案的所有元素从一开始就存在。这意味着,在某种意义上,他们必须已经对最终问题的解决方式有一个很好的想法。

- 在深度学习的情况下,程序员只需要定义任务,以便于生成训练数据。编写的代码与解决方案的方法无关,只关心生成所需的输入输出示例。

在DreamCoder的情况下,似乎需要两种类型的编码。如果使用非常高级的、特定于任务的DSL,函数原语编码工作量更大,但需要生成的数据较少。如果DSL非常基础,我们最终得到的方法与深度学习案例非常相似,学习组件完成了大部分工作。因此,DreamCoder是一种难以严格归类为DSL或深度学习的混合解决方案。它取决于如何使用。

构建DSL,特别是确保所有函数签名正确组合,比为同一任务编写数据生成器更困难。确保你的DSL包含构建问题解决方案的所有必要组件,随着复杂性的增加很快变得难以处理。此外,随着任务抽象水平的提高,硬编码解决方案变得更加困难。

毕竟,这正是发明机器学习的原因。有些概念太复杂或模糊,无法通过严格的“if/else”类型的编码来定义。相反,使用优化方法从示例中自动学习对象或过程的潜在表示更容易。

因此,尽管深度学习和DSL方法在简单算法任务上的表现相当,但当涉及到更复杂和抽象的视觉推理基准测试时,深度学习建立了最先进的水平。值得注意的例外是ARC挑战,原因已经解释过了。

还存在对需要太多高级或特定于任务的DSL方法的更深层次的反对意见。即使这种方法能够成功完成ARC挑战,当改变问题领域时,它将需要高度的重新设计。

即使是通过仅仅在硬编码的代码块上运行搜索以某种方式解决了ARC,是否可以说已经实现了通用智能,这也是值得怀疑的。这种方法的脆弱性和特定性是不言自明的(首先,实际上没有真正的学习)。

由于迄今为止在ARC挑战上的最新技术是通过大量基于DSL的方法实现的,继续朝这个方向努力是很诱人的。然而,我们有可能成为“第一步谬误”的牺牲品:初步步骤让我们更接近目标,就自动意味着我们可以继续朝那个方向前进,直到达到它。一个更具诗意的类比是一个人造梯子登月。从他建造的第一个梯子版本开始,他看到自己现在离月球更近了。于是他继续不断地给他的梯子增加台阶。

记住这个类比,本提案提出的基本论点如下:基于DSL的方法是梯子。它们逐步让我们更接近解决ARC挑战的方案。但是继续朝那个方向努力将需要相当于建造通往月球的梯子的努力。相反,我们必须制造一枚火箭。也就是说,我们必须构建一个更强大的自动化方法:一个部署在相当于大型语言模型(LLMs)规模上的图灵完备学习算法。同样,就像制造火箭一样,许多初始工程努力将被花费而没有太多可见的进展。

3.7 关键要点

- 基于DSL的方法目前在ARC挑战中实现了最佳性能,因为它们是高偏差、低方差的技术,不需要大量数据。

- 深度学习的近期成就表明,它能够通过一个模型学习解决各种任务——例如通过上下文学习。

- 当解决问题所需的迭代次数超出训练集时,深度学习方法的性能会逐渐下降。

- 这种累积近似误差是由于权重不精确造成的,在解决深层问题的推理迭代中,微小的误差会逐渐增长。

- 没有先验理由认为这对于ARC挑战是个问题,因为生成的训练数据有预定的网格尺寸和任意的计算深度。

- 生成大量数据,覆盖广泛的任务分布,将有必要训练我们的解决方案。

- 课程学习是必要的,以便模型能够学习中间概念。

- 抽象视觉推理目前主要由深度学习(特别是变换器)方法主导。(译者注:错:  (RPM 最好的是: AGI之 概率溯因推理超越人类水平   学习抽象规则进行视觉推理v2 ibm系列 )

- 由于组合爆炸和依赖DSL的方法无法解决复杂的视觉推理任务,将倾向于选择深度学习解决方案。

- 一个例外是DreamCoder,它解决了组合爆炸问题。

4 解决方案提议

4.1 需求

前几节可以用于推导出解决方案的需求:

1. 必须是图灵完备的:必须能够学习涉及动态、任意数量循环的算法(而不仅仅是映射)。

2. 必须能够多任务处理,并在元学习环境中运行,例如通过上下文学习。

3. 必须使用某种形式的中间监督,如课程学习。

4. 必须生成/模拟数据,因为ARC训练集中没有足够的数据。

5. 必须能够扩展到复杂的视觉推理问题。

6. 将需要大量的计算资源,可能与大型语言模型(LLMs)的水平相当。

(译者: 上面6点部分不认同


根据对学习算法的文献综述,只有两个选项可以被构建以符合这些需求:

1. 通用变换器[13],可能辅以外部记忆[25]。

2. DreamCoder [20]。

除了架构决策之外,已经确定不能简单地将这些算法“原封不动”地应用于ARC训练集:训练机制的重要性不亚于算法本身的选择。事实上,这是构建成功的ARC解决方案中最复杂和困难的部分。

本研究提出的方法是使用自制数据生成器进行监督学习。这与主要通过在公开可用数据集上进行自我监督学习训练的大型语言模型(LLMs)形成了鲜明对比。考虑到ARC领域与真实世界图像和视频的根本差异,将自我监督范式应用于ARC挑战是高度不确定的。这种方法不太可能消除对任务生成器的需求。此外,从某种意义上说,它也可能是“杀鸡用牛刀”,因为真实世界是ARC的庞大超集。据推测,超过99.99%的观察数据样本与ARC无关。

4.2 课程学习

在课程学习方面,有不同的实现方式,它们并不相同。在《Learning to Execute》[4]论文中,他们比较了3种不同的方法。

“简单”策略包括首先在最小复杂性/规模/难度的数据集上进行训练,直到收敛。然后,复杂性、规模或难度增加一小段,然后在新数据集上恢复模型训练。这个过程被无限期重复。

在“混合”策略中,不是从只有很小的复杂性水平开始并逐渐增加,而是从随机复杂性水平中抽取训练样本。因此,一个训练批次可能包括小型、中等和完整的任务示例。这种方法可以说与通常的随机抽样批次没有太大不同,但仍然使其成为课程学习的原因是,训练集中有小于或不复杂于预期任务的示例。

最后,在“组合”策略中,每个训练样本要么(随机)来自“简单”策略,要么来自“混合”策略。这种混合方法在他们的实验中表现最佳。它始终优于“简单”方法,并且通常(尽管不是总是)优于“混合”策略。

更具体地说,我们的问题是,课程学习必须适应多任务学习。也就是说,我们不仅仅是微调几个连续参数,如序列长度:我们试图学习多个不同复杂性级别的不同任务。

这意味着要定义任务的难度级别,以便我们可以根据它安排训练机制。它可以在编写任务生成代码时手动设置,也可以在训练时动态计算,就像一些自动化课程学习策略中那样。因为在我们的情况下编写生成训练数据的代码将是必要的,因此在开发时手动设置这些难度级别将更简单、更合适。

使用自动化课程学习策略只会增加额外的潜在故障点,并将解决方案复杂化到不必要的程度。设定这些课程级别不是一门精确的科学,但一个好的经验法则是估计解决给定任务所需的直接可学习子任务数量。难度级别0意味着子任务非常简单,可以直接学会。一个这样的例子是第3.2节(累积近似误差)中描述的像素计数实验。一个需要计算像素并返回出现次数最多(或最少)的颜色的任务将是难度级别1,因为它结合了两个“原始”任务。更多任务的例子和相应的课程设置将在第4.4节(数据生成)中给出。

简而言之,使用手动定义的任务复杂性设置,提出的解决方案将使用“组合”课程策略呈现训练任务样本。

4.3 多任务处理和元学习

ARC使用少次学习问题设置,在这种设置中,提供一些支持示例,算法必须从这些示例中快速学会解决任务,然后呈现查询集,学习器必须解决。因此,它是一个元学习数据集。

如果选择基于变换器的模型,输入序列将包含输入输出示例的连接描述,输出序列将从输入测试网格的描述开始。然后期望模型通过预测输出序列中的下一个标记来填充输出网格。这就是所谓的上下文学习。

对于DreamCoder选项,将在任务批次中提供单独的输入输出示例(以序列形式供神经网络组件使用)。这是原始论文中解释的默认使用方法。

4.4 数据生成

决定需要生成哪些任务可能是这个解决方案最重要的方面。正确地完成这一点对这个方法是成功至关重要的。

ARC挑战旨在捕捉类人(二维)视觉推理的一般性:保留的测试集可以由任何任务组成,只要它对一个人来说是有意义的。因此,生成相关的训练数据意味着要总结所有对这种视觉推理所必需的人类核心知识要素。这当然不是一件容易的事情。

潜在的假设是,有一些核心的“技能”,像智能的构建块,通过进化(以及在婴儿时期学习)已经完善,以解决人类生活中遇到的推理问题。这些核心技能在数量上是有限的,并且可以组合,以便有效地适应问题的新颖实例。从某种意义上说,没有真正新颖的问题:只有已知原则的新排列组合。

因此,一个有用的训练数据生成器需要以这些核心原则为设计考虑:我们对解决随机的、任意的任务并不感兴趣(反正根据“没有免费午餐”定理,这样的事情是不可能的)。

当一个运动员为某项运动训练时,他们做的不仅仅是多样化和特定的练习,而不仅仅是玩这个游戏本身。有一些练习旨在提高心肺功能、特定类型的柔韧性、特定肌肉、特定技能等。

这些训练任务共同间接旨在提高最终结果——即运动本身的成功。

同样地,ARC解决方案的训练机制不仅应该专注于解决完整的ARC任务。还必须包括更基础的练习,对应于核心技能和更简单的子任务。否则,正如前面几节所解释的,由于缺乏中间监督,学习将会失败。

关于应该关注哪些核心技能,认知科学提供了一些线索[3]。视觉空间推理涉及诸如数量、物体性、几何、关系(例如相同/不同)、定位、转换、对称性、模式、重复等概念群。这个列表可能不是详尽无遗的。不幸的是,试错似乎是得出真正完整列表的唯一方法(发现过程将在路线图部分进一步描述)。目前提出的核心技能组列表定义如下:

1. 数量(Cardinality):计数能力,执行与数量相关的比较,如等于、大于、小于、最大值、最小值。执行算术运算,如加法、减法、除法、乘法、取模。奇偶(奇偶性)概念。

   - 示例任务:在网格上随机位置用随机颜色绘制随机像素。输出是一个1x1网格,包含具有最多像素实例的颜色。

   - 提议的课程级别:1(必须计数像素,然后必须学会应用“最大”概念)。

2. 物体性(Objectness):检测物体的能力,并将其与背景分离(以大致相当于人类的方式)。物体之间的碰撞概念。区分不同的物体。

   - 示例任务:在输入网格上绘制了一个随机尺寸、位置和颜色的正方形。输出网格是只包含这个正方形的裁剪网格(颜色和尺寸相同)。

   - 提议的课程级别:0。

3. 几何(Geometry):"柏拉图式"形状的概念。纯直线、三角形、正方形、矩形、圆形。

   - 示例任务:在输入网格上随机放置了4个红色像素。输出必须绘制一个填充的黄色矩形,包含在这4个像素内。

   - 提议的课程级别:2(需要定位,因为绘制的矩形必须相对于4个现有像素放置,以及物体性以识别这4个锚点作为不同的物体)。

4. 关系:这是最抽象的核心技能组,涉及(视觉)关系推理,如相同与不同、大于和小于、“格格不入”、是部分(是组成部分)、是类型、在内部等。

   - 示例任务:在输入网格中绘制了几个形状。只有一个被红色正方形包围。输出网格必须是红色正方形内部内容的副本。

   - 提议的课程级别:1(需要物体性概念来识别不同的形状,特别是红色正方形)。

5. 定位:相对位置的概念——在...右边、在...左边、在...下面、在...上面、右上角等。还涉及更绝对的位置,如网格的左上象限、左半部分、右半部分、网格的右下象限等。

   - 示例任务:在输入网格上随机绘制形状。输出网格是左上象限的内容,所有形状顺时针旋转90度。

   - 提议的课程级别:2(需要物体性来识别物体,并应用转换进行旋转)。

6. 转换:几何转换,如缩放、裁剪、平移、旋转、水平和垂直翻转。还包括基于颜色的转换,即改变颜色并用特定颜色填充形状。

   - 示例任务:绘制了一个随机尺度、颜色和位置的随机形状。输出网格是简单地将输入网格中的形状水平翻转。

   - 提议的课程级别:1(需要物体性)。

7. 对称性:这是几何意义上的概念,即物体或网格可以由作为“镜像”应用的可约简组件组成。

   - 示例任务:在输入网格上绘制了各种垂直对称的形状。输出包括删除每个对象的上半部分的输入网格副本。

   - 提议的课程级别:1(需要物体性)。

8. 模式:检测重复、可预测的像素或物体组的能力。

   - 示例任务:在输入网格上平铺了像素的正方形模式。在输出网格中,只需绘制这种模式的一个实例。因此,输出网格与重复模式的尺寸相同。

提议的课程级别:0。

9. 重复:在生成输出网格时迭代和重复模式的能力。这是最直接表达学习者需要执行动态循环的核心知识组之一。

   - 示例任务:在随机尺寸的网格中,用随机颜色和位置绘制一个像素。在输出网格中,这个像素必须向右迭代复制,直到达到网格边缘(有效地将其变成一条直线)。

   - 提议的课程级别:0。

总结来说,必须构建一个序列到序列格式的数据生成器,代表从最原子、最基本的核心技能到可能的最复杂的复合任务的任务。对于这些任务中的每一个,必须根据第4.2节提出的观点仔细选择相关的课程难度级别。这是提出的解决方案中需要最多工程努力以及试错的部分。简单地众包数据生成是行不通的:人们会输入完整的ARC任务。这个数据集将无法学习,虽然它可以作为测试集,例如。

关于要生成任务的实际核心原则,它们必须手动设计(就像这个列表一样)。按定义,如果我们有一个能够设计所有所需任务的自动化方法,我们将拥有一个已经理解所有必要核心原则的算法(因此,只需很少的训练,可能就能解决ARC)。

也就是说,可以开发算法方法来变化核心原则,以类似于机器学习中数据增强的方式“增强”任务。至少,像素颜色和位置的随机化,或者随机形状生成的方面,可以自动化。人们甚至可以在一定程度上随机化任务目标的变化,通过自动生成所需子任务的可能组合。例如,如果我们有一个子任务的目标是裁剪红色正方形的内容并将其用作输出,以及一个子任务的目标是将形状顺时针旋转90度,那么这两个子任务的顺序组合就产生了一个复合任务,其中输出网格必须包含红色正方形的旋转内容。

4.5 路线图和扩展

一个在家用PC上训练的中等规模架构不太可能学会解决ARC挑战。考虑到必须学习所有必要的核心知识才能解决它,以及这个模型本质上是一个“人工通用智能”(AGI)模型,可能需要相当于今天最大的大型语言模型(LLMs)的计算规模。

话虽如此,首先实现一个概念验证版本以证明方法的有效性,然后再投入更多资源到全规模解决方案中是可取的。这就是为什么本节将提出向能够解决ARC的最终版本发展的步骤。

第二阶段:验证核心技能的推理能力

这个阶段的目的是测试以下双重假设:

1. 需要学习的核心技能数量是有限的且合理的。

2. 看似无限的可能ARC任务仅源于这些“少数”核心技能的无数可能变化或组合。

如果假设成立,那么学习新的一组核心技能将能够在超线性的,而不是线性或亚线性的数量级上解锁成功。为了验证这一点,必须在ARC上测试性能,逐步向数据生成器添加新的(子)任务,重新训练并重新评估。解决的ARC任务的新数量应该显著大于为新技能组添加的独特任务数量。

的确,如果不是这样,它意味着需要在数据生成器中实现几乎无限数量的新任务,以能够解决相应地几乎无限数量的可能ARC任务。这样的情况将意味着对这个背后方法的假设的失败,或者算法未能以可组合的方式学习这些核心技能的失败(尽管,原则上,第一阶段应该已经确认了后者)。在这两种情况下,都需要重新审视本文提出的方法。

步骤4:在ARC训练集上测试训练模型是否能够解决非零数量的任务。

步骤5:实现一组新技能,并在包括新核心组在内的新完整数据集上重新训练模型。如果第一阶段没有使用物体性核心技能组,那么它可能是这个阶段的好选择,因为它在可能实现的任务中解锁了很多多样性。此外,大多数ARC任务至少需要一些物体性概念。

步骤6:在同一ARC训练集上重新测试:成功解决的任务数量是否增加了?增加了多少?理想情况下,应该用2或3个新的核心技能重复此过程,以确认初步结果。估计每个在数据生成器中实现的新独特任务成功解决的新ARC任务数量。如果这个比率显著大于1,那么这种方法基本上已经得到了验证。然后建议进入第三阶段。

第三阶段:全规模部署

在这个阶段,当前方法背后的假设已经得到了大部分验证,可以继续进行解决方案的最终扩展步骤。

步骤7:完成数据生成器的开发(即,实现之前列举的核心技能组)。

步骤8:增加生成问题的最大网格尺寸。实施必要的修改,以支持Universal Transformer处理长序列(见附录中的指导)。

步骤9:使用大规模深度学习计算资源,训练选定模型的变体,并增加超参数规模。在每个训练阶段后,注意在ARC验证集上的测试性能。重复直至收敛。

步骤10:如果通过扩展模型达到的性能平稳不满意,第一步是排除故障,确定模型失败的ARC任务类型,并询问:训练数据中是否缺少某种核心技能?

4.6 关键要点

- 算法候选者的关键要求包括:计算通用性、元学习能力、在复杂性上扩展的能力(例如,用于抽象视觉推理)。

- 将编写一个数据生成器,它结合了课程学习,并涵盖了已识别的核心技能组。

- 首先将构建一个较小规模的概念验证,以验证这种方法的基本假设。

- 中心验证原则是测试解决的新ARC任务数量是否与在数据生成器中实现的新独特任务数量呈超线性扩展。

5 结论

总结来说,我们首先分析了深度学习方法学习算法的能力。通过文献综述,我们展示了使用适当的归纳偏差并通过中间概念监督训练的深度学习方法能够学习算法。它们在相对简单的算法外推任务上的能力与基于DSL的方法相当。

这一事实的一个例外是累积近似误差问题,这是由于使用连续值权重的深度学习方法中发现的。梯度下降在推理时产生轻微的近似误差,这些误差在迭代时累积,超出了训练集的范围。虽然这确实是某些问题领域的挑战,但由于我们自己的生成任务数据中可以实施的预定最大网格尺寸和任意复杂性,它似乎并不是ARC挑战的问题。

然后,我们探索了更复杂和抽象的视觉推理基准测试,这些测试由更大规模的算法解决。我们展示了基于深度学习(特别是基于变换器的)的解决方案在这些领域中占主导地位,而关于DSL成功的报告却缺失。值得注意的例外是ARC挑战,DSL仍然是最先进的,但原因是缺乏训练数据。的确,ARC是DSL仍然占主导地位的唯一基准测试。它也是唯一缺乏足够训练数据集的基准测试。

找到训练集可以说是ARC挑战的核心。

在第4节中,提出了解决方案。满足要求的已知算法是DreamCoder和通用变换器(及其变体)。强调了围绕核心知识原则设计的培训机制的重要性,并使用了课程学习。敏锐的读者可能已经注意到了对基于变换器方法的主观偏好,尽管没有提供反对使用DreamCoder的理论论据。

这只是作者个人对两种方法的经验的结果:DreamCoder非常难以使用和定制。另一方面,基于变换器的方法更容易进行实验。两种方法在理论上被视为等效,但使用变换器相比DreamCoder有几个实际优势(如果仅仅是可用性)。

最后,提出了一步一步的路线图。它将允许遵循它的研究人员首先在有限资源上验证方法,然后进行扩展以进行最终评估。还应该重申,所提出的方法论只是方法论:实际上,当尝试路线图中的步骤时,会出现意想不到的问题。附录是试图预见这些问题并提供指向必要文献的指针。



CreateAMind
ALLinCreateAMind.AGI.top , 前沿AGI技术探索,论文跟进,复现验证,落地实验。 鼓励新思想的探讨及验证等。 探索比大模型更优的智能模型。
 最新文章