论文来源:[2511.14761] ARC Is a Vision Problem!

摘要

        ARC(Abstraction and Reasoning Corpus)被设计以促进抽象推理的研究,而抽象推理是人类智能的一方面,常用的ARC方法是将其视为一个面向语言的问题,通过LLMs或者递归推理模型。但是尽管ARC中的拼图任务本质上是视觉的,但是目前的研究很少以视觉为中心来处理这个问题,在这项工作中,作者在视觉范式中建立了ARC,并将其框架作为图像到图像的翻译任务。为了合并视觉先验,作者把输入放在一个“画布”上,以至于可以像自然图像一样处理。基于以上作者选择了标准的视觉框架,比如ViT,来进行图像到图像的映射工作,作者的模型仅在ARC数据上从头开始训练,并通过测试时训练来泛化到不可见的任务中去。作者的框架称为VARC(Vision ARC),实现了在ARC-1基准上60.4%的精度,基本超过了从头开始训练的现有方法。作者的结果与先进的LLMs有竞争力并且缩小了与平均人类表现的差距。

介绍

研究背景

ARC是推动机器抽象推理能力的基准测试,ARC由一组类似拼图的任务,每个任务只有几个少数的例子,机器要从给出的这几个例子的情况下学习到底层规则,如下图所示:

当前方法的局限性

        ARC任务在近年来逐渐被关注,当前主流的方法是基于大语言模型(LLMs)的方法,不过最近在不依赖互联网规模数据的情况相下出现了递归模型,这个模型只需要在ARC数据上从头开始训练,然后循环迭代推理,虽然它们不依赖大模型的语言预训练,但是这些训练模型从语言建模的成果中获得的启发。

大语言模型方法

核心思想:将视觉化的ARC问题转化为语言模型能理解的序列问题。

实现:其实现方法思路是通过自然语言描述网格(这是3×3的网格,第一行是红色、黑色...),然后把样例全部都转换成文本的形式,然后通过LLM进行推理,期望LLM能通过上下文学习补全这个序列并生成推理输出的描述,最后将LLM生成的文本描述转化回2D网格。

优势:其优点非常明显,LLM其实内部蕴含了大量的常识和逻辑,这些知识可以通过语言迁移以解决ARC的问题。

局限:最大的问题是将2D空间结构强行转换为一维序列,这会丢失关键的空间关系和拓扑结构。同时这些知识的推理严重依赖LLM,其本质是上“回忆”和“重组”已知信息。

递归模型方法

核心思想:仿照人类的逐步思考方式,模型不是一次性生成最终答案,而是逐步修正。

实现:其实现方法就是输入,通过初始状态计算出状态1,然后判断状态1是否是最终结果,如果不是就循环计算出状态2,周而复始直到循环结束。

优势:实现了不依赖外部数据,专注ARC本身学习推理模式。

局限:迭代过程可能无法收敛,同时对于设计递归机制和停止判断比较复杂。

作者认为,ARC任务本质上是视觉化的(如图像变换、对称、重力等),但现有研究很少从视觉角度出发

提出新方法

        作者回到ARC的本质,把这个问题建模为图像到图像的转换任务,直接从视觉上解决问题,提出了VARC框架。

作者尝试标准的视觉模型(Vision Transformers or convolutional networks)进行图像到图像的映射。同时加入视觉先验,如2D空间局限性、平移不变形和尺度不变形,因为从零开始学习所有的视觉规律很抵消,我们的主要目的是运用它们进行推理,所以要加入视觉先验。

为了学习这些先验,作者使用“画布”,无论内部的图案多大,我们都是从画布上去学习观察,这样通过随机缩放和平移,从一个训练样本创造出无数个“新”样本,但所有这些样本都共享同一条底层视觉规则。这迫使模型去学习这个不变的规则,而不是记忆像素的位置。

作者指出画布上的一个块可以有指数级的许多颜色组合而成,这极大地扩展了 token 的词汇量,让模型学习的是空间组合的规律,而不是死记硬背颜色代码。

        在视觉为中心的结构下,我们仅使用ARC提供的数据样本训练我们的模型,推理方式通过测试时训练适应新任务,实现少样本泛化。最后作者的框架在只有18M参数量的情况下在ARC-1的基准上达到了54.5%的精度,这个结果超过了其他从ARC上从头开始训练的模型,并且与基于LLM的方法也展现出了竞争力。

研究期望

        最后作者希望自己对于ARC问题的研究能启发研究人员,从视觉的方法进行抽象推理的研究,同时不孤立局限于语言或者视觉,而是跨模态整合信息,互补信息,进一步发展抽象推理。

相关工作

视觉推理

        视觉推理,它的任务不止是感知场景和物品,同是还要推理和抽象场景和物品之间的关系。随着机器学习方法的发展出现了VQA,CLEVR和Winoground。
        这些方法通常由感知模块和类似语言的递归模块组成,比如在神经符号框架中,这些方法演变成了现代语言模型(VLMs),将图像转换成token并和文本一起处理。
        不同于ARC,经典的视觉推理包含测试集和训练集,这两个都被视为同一任务的实例,而ARC则是由大量不同任务组成, 每个任务仅由少数几个例子。

ARC的方法

        由于ARC“小样本、多任务”的特点,LLMs被认为是一个恰当的解决方法,一个新任务可以被转换成一系列的tokens,作为一个提示,然后用LLMs通过语境的小样本学习进行处理。
        最近,递归模型被认证实对ARC任务有效,并且不需要互联网规模的预训练,这些方法旨在模仿人脑的分层和多时间尺度处理进行推理,在推理时,这些方法采用在少样本上测试时训练。
        ViT-ARC方法尝试用视觉模型解决ARC问题,但是,这个方法仅表现出了对测试集中单个任务的拟合能力,它没办法泛化和解决任何未知的测试任务,所以,这个方法无法满足ARC,其本质在于少样本、多任务的泛化。这个方法和作者的框架不同的是,作者要解决这个本质问题。

将ARC作为一个视觉问题!

ARC问题的定义

        ARC基准测试由几百个少样本组成,每个任务都设计一个底层规律,即从xy的映射,记为T,其中,xy都是最大尺寸为30×30的二维网格里,每个位置有C个不同的颜色种类(C=10)
        ARC的问题定义描述如下图所示:

任务:任务(task)是ARC的基本单位,每个任务包含少数的演示(demonstration)实例,对于一对演示(x,y)xy都是已知的,把演示的任务集T记为:\mathcal{D}_{\text {demo }}^{T}=\left\{\left(x_{i}, y_{i}\right)\right\}_{i=1}^{m}m表示为例子对数(通常2~4个),\mathcal{D}_{\text {infer }}^{T}=\left\{\left(x_{i}, y_{i}\right)\right\}_{i=1}^{n}(n为1或2),在推理时,只有示例对\mathcal{D}_{demo}^T和一个输入x_{\text{infer}}\in\mathcal{D}_{\text {infer}}^T,让模型推理出期望输出y_{\text{infer}}

训练集:训练集由多个任务组成,用于离线训练(在给定一个新任务之前),将训练集记为:\mathcal{T}_{\text{train}}=\left \{ T_i \right \}_{i=1}^kk表示任务数量,对于任意的T \in \mathcal{T}_{\text{train}}\mathcal D_{\text{demo}}^T的样本都可用来被训练,训练集中的“推理”样本,对于任意的T \in \mathcal{T}_{\text{train}}\mathcal D_{\text{infer}}^T,被用于验证训练过程。

测试集:测试集是新任务的集合,这些任务在训练的时候不可见,我们将其记为:\mathcal{T}_{\text{text}}=\left \{ T_i \right \}_{i=1}^l,l表示不同的任务,要注意任何一个测试都是完整的新任务,即对于任意一个T \in \mathcal{T}_{\text{text}},同样存在一个演示\mathcal D_{\text{demo}}^T(x,y),所以允许在测试的时候对新样本的演示样本进行训练然后再验证样本上测试。这就是在测试中训练。

图像到图像的转换

        通过这些定义,作者将任务的推理描述成图像到图像的转换,处理这些问题的框架实时按像素分类,类似于语义分割问题。
        神经网络f_\theta以图像x_i作为输入,同时还会给一个与当前任务相关的task token作为条件,让模型知道是哪一个任务,注意,这个task token不是固定预先设计好的,而是在训练过程中通过梯度下降自动学习得到的向量,这个向量会在空间中收敛到某个值来帮助模型区分不同任务。
        神经网络f_\theta输出的是一个网格,每个位置都是一个颜色分布,即每个像素点都会有十个颜色值,只是这个十个颜色值有不同的概率。
        总体的目标函数就是对每个像素的交叉熵损失,如下图,\mathcal D表示真值和神经网络的预测值之间的每个像素的交叉熵损失。

视觉方法

        先前的ARC方法一般是在离散值token的空间进行的,其来源于语言模型的设计,而在图像到图像的转换中,采用了面向视觉的设计。

画布

        为了像自然图像一样灵活的表示,作者提出了画布的概念,原始图像被转换并放置在这张画布上,这样我们可以对原始图像进行随机缩放和平移,让模型学习平移不变性、尺度不变性,同时还能创造大量变换的新视图防止模型过拟合转而学习规则的本质。
        因为颜色只有10种,单纯的把每个原始像素视为一个token,那么只有10个不同的token,这容易导致模型“词汇表太小”而死记硬背组合来学习而非理解空间结构。采用画布的形式能支持更大的块级配置,比如当图像块大小为2×2时,这一个块可以有多种颜色组合,这样巧妙解决了上诉“词汇表”太小的问题。具体如下图所示:

通过画布的形式,能让模型学习不变性和视觉结构,从而展现出更强大的泛化能力。

平移和尺度不变性

        为了让模型能很好地泛化到新任务,它学到的规则不应该依赖于输入图像的绝对大小和绝对位置

尺度增强:将原始的输入网格随机放大或者缩小一个整数倍。将原始网格中的每一个像素,复制成一个s×s的同颜色方块。其目的让模型理解规则无论在大小物体上都是一样的,如下图所示:

平移增强:将缩放后的网格,随机放置在固定大小的画布上。随机选择网格在画布上的位置,并确保整个网格都在画布范围内可见。其目的是为了让模型不依赖绝对的起始位置。如下图所示:

通过后续实验证明,这些视觉先验对于模型在未见过的任务上的泛化能力至关重要。

Vision Transformer

        在将输入放置在画布上之后,使用一个标准的视觉模型来执行图像到图像的转换,默认情况下使用ViT。ViT处理画布的标准流程如下图所示:

离散颜色值映射为连续向量:与自然图像不同的是,像素值是0-255的连续色值,但是ARC网格中的像素值是0-9的离散值,对于颜色1和颜色2之间没有相似性的概念,导致无法求导进行梯度下降,所以要引入一个可学习的嵌入层,对于0-9的离散值,都有一个对应的、固定大小的连续值向量,这样模型通过优化这个连续值向量来反向传播优化。
这里简单说一下嵌入的能力,它是从符号到语义的转变,在嵌入空间里,语义相似的颜色可以彼此靠近,同时还能表示关系结构。

将画布划分为2×2不重叠的块:与原始Transformer不同的是它不处理单个像素,而是处理图像块,这样减少了输入序列的长度并引入了局部性的归纳偏置

线性投影为嵌入向量:将图像块[[255,23],[52,12]]展平为一个向量[255,23,52,12]。然后线性投影映射到高维,这样对于一个画布块能有更多维的表示,获取更多的特征关系,而不是简单的四维

位置嵌入:由于Transformer本身是置换不变的,故需要额外的信息来感知序列,所以需要2D位置嵌入。

Transformer编码器:通过Transformer让模型在所有图像块之间建立全局依赖,从而理解整个画面的上下文并进行抽象推理。

各像素分类:最终的输出把每个像素块对应的输出向量映射会每个像素位置上,每个位置是颜色的概率分布。

2D位置嵌入

        因为图像是二维的,所以我们需要设计一个二维位置编码,以解决图像数据输入到Transformer的核心挑战。
        不同于语言模型被建模成一维序列的语言数据,图像本质上是二维的,故不止左右,还有上下的关系,如果强行把二维改成一维会导致这个2D结构丢失,所以采用可分离的2D位置编码。
        对于D维的位置编码,前一半通道编码水平坐标,后一半编码垂直坐标。例如位置编码总维度是512,我们用前256维编码水平坐标x,后256维编码垂直坐标,最终拼接的位置编码就包含了水平坐标和垂直坐标的编码。这种方法既可以应用于编码绝对位置的加性位置编码,也可以应用于编码相对位置的位置编码(如RoPE)。
PoRE:其核心思想是根据token在序列中的位置旋转其嵌入向量。在2D情况下,可以想象成根据其x坐标和y坐标分别进行旋转,从而在注意力计算中自然地体现出二维的相对距离。

可选:卷积网络

        除了ViT,还尝试采用了U-Net模型,因为最初的U-Net是针对分割的图像到图像转换的问题。

两阶段训练

        作者采用两阶段训练来学习网络的参数。

离线训练

        离线训练在整个训练集\mathcal{T}_{\text{train}}(例如ARC-1的400个任务),训练所使用的是训练集中的所以演示样例,对所有的训练任务训练一个统一的模型,损失函数是上面提到的每个像素交叉熵损失函数,所有任务共享相同参数,这个部分是网络学习通用的视觉抽象和推理能力,除此之外每个任务都有一个可学习向量(任务条件token),当处理任务A的时候就加入A任务的token,这个token的作用是告诉模型要使用哪一种规则。训练集中的\mathcal D_{\text{infer}}^T仅用于验证。

测试时训练(Test-time training / TTT)

        离线训练时为了让模型获得强大的先验知识、推理模式和抽象概念,而测试时训练则是根据已有的视觉推理能力来快速调整,流程如下图所示:

模型初始化:在离线训练的模型基础上,收到一个新的任务,就要生成一个对应的新任务token,它的参数是随机的。

快速微调:在仅针对这个任务时,通过新任务给出的2-4个演示样例进行推理。注意,每个测试任务都是独立微调,互补干扰,更新的时候,不仅token会被更新,同时主模型的一部分或者全部参数也会被更新,模型会根据新任务的特定规则进行微调。由于演示样例比较少,所以在TTT的过程中也会使用数据增强(旋转,翻转)来创造更多虚拟样例防止过拟合。

推理结果:在经过新任务的演示样例快速微调之后,模型掌握了这个规则,然后接收新任务的验证数据集进行推理并给出结果。

TTT的可视化如下图所示:

测试时训练(TTT)是VARC实现泛化能力的关键,它更具有动态和灵活性,可以做到快速适应新的任务。

推理

        在模型针对新任务快速学习之后,通过多次、多角度的观察来提高鲁棒性和准确率。

        单视图推理:给定x_{\text{infer}}和单一视图(在画布上其中一种缩放和平移),让模型来预测输出。由于我们是在原始网格中进行缩放,所以原始网格的一个像素点在画布上可能是2×2的一块大小,不过我们在预测的时候这个块内的像素都会独立预测一个颜色分布。
        为解决这个不同尺度的问题,采用平均池化,即将这个区域内所有像素预测的概率分布进行平均,得到一个更稳定、更平滑的最终概率分布,然后取概率最高的颜色作为该位置的预测。这可以减少随机噪声。

        多视图推理:从多个视图进行预测能提高准确性和稳定性,在单视图里只有一种缩放平移,不过我们可以通过不同的随机缩放和随机平移得到更多不同的视图来进行预测。作者使用510个随机视图,对于输出网格上的每一个像素位置,检查510个视图在这个位置上预测了什么颜色,选择出现次数最多的那个颜色作为该位置的最终颜色。这有效地平滑掉了因特定视角而产生的异常预测,让最终的输出更加稳健。(参见AlexNet)

        ARC基准默认采用pass@2准确率指标,即可以产生两个不同的解决方案进行评估,只要有一个是正确的,该任务就能被认为是成功的。根据这个,作者在多视图推理中采用多数投票来提交前两个答案。

以上是这篇论文的大致思想和方法,具体实现细节和评估结果在论文中给出,感兴趣可以仔细研读这篇论文!

Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐