来自 Allen Institute for AI 的研究人员介绍了 VISPROG:一种神经符号化方法,用于根据自然语言指令解决复杂和组合的视觉任务

寻找通用人工智能系统推动了具备能力的可训练模型的发展,其中许多旨在为用户提供简单的自然语言接口。大规模无监督预训练后跟监督多任务训练一直是开发这些系统的最常见方法。他们最终希望这些系统能够执行规模到难以处理的作业。但是,这种策略需要为每个任务精心选择数据集。通过将自然语言中陈述的复杂活动分解为可由专门的端到端训练模型或其他程序处理的较简单的阶段,他们在这项工作中研究了使用大型语言模型处理复杂任务的长尾。

告诉计算机视觉程序“在此图像中标记《生活大爆炸》电视节目的七个主要角色。”系统必须先理解指令的目的,然后执行以下步骤:检测面部,从知识库中检索《生活大爆炸》主要角色列表,使用角色列表对面部进行分类,并标记已识别的角色的名称和面部图像。虽然有几个视觉和语言系统可以执行每个任务,但自然语言任务执行超出了端到端训练系统的范围。

图1:用于组合视觉推理的模块化和可解释的神经符号系统 – VISPROG。 VISPROG使用GPT-3中的上下文学习为每个新指令开发程序,给定自然语言指令的几个实例和必要的高级程序,然后在输入图像上运行程序以获得预测。此外,VISPROG将中间输出压缩为可理解的视觉证明。我们使用VISPROG来执行需要组装各种模块进行知识检索,算术和逻辑操作以及分析和操作图像的作业。

来自艾伦人工智能研究所的研究人员提出了VISPROG,一种程序,它以视觉信息(单张图片或多张图片)和自然语言命令作为输入,创建一系列指令或可称为视觉程序,然后执行这些指令以产生所需的结果。视觉程序的每一行都调用系统现在支持的众多模块之一。模块可以是预先构建的语言模型,OpenCV图像处理子例程或算术和逻辑运算符。它们还可以是预先构建的计算机视觉模型。先前代码行运行创建的输入被模块消耗,产生可以稍后使用的中间输出。

在前面提到的示例中,面部检测器、作为知识检索系统的GPT-3以及作为开放词汇图像分类器的CLIP都被VISPROG创建的视觉程序使用以提供所需的输出(见图1)。 VISPROG增强了视觉应用程序的生成和执行。神经模块网络(NMN)将专业的、可微分的神经模块组合起来,创建一个针对视觉问题回答(VQA)问题的特定于问题、可训练的端到端网络。这些方法要么使用REINFORCE的弱答案监督训练布局生成器,要么使用脆弱的预先构建的语义解析器确定性地生成模块的布局。

相比之下,VISPROG允许用户使用强大的语言模型(GPT-3)和有限的上下文示例构建复杂的程序,而无需预先训练。通过调用经过训练的最先进模型、非神经Python子例程和比NMN更高级的抽象级别,VISPROG程序也比NMN更抽象。由于这些优点,VISPROG是一种快速、有效和灵活的神经符号系统。此外,VISPROG非常易于解释。首先,VISPROG创建易于理解的程序,用户可以检查其逻辑准确性。其次,通过将预测分解为可管理的部分,VISPROG使用户能够检查中间阶段的结果以发现缺陷,并在必要时对逻辑进行更正。

一个完成的程序带有中间步骤输出(如文本、边界框、分割掩模、生成的图片等),连接在一起展示信息流动的视觉证明,可以作为预测的可视化证明。他们使用VISPROG进行四项不同的活动来展示它的多功能性。这些任务涉及常见的技能(如图像解析),但也需要专业的思维和视觉操作技能。这些任务包括:

  1. 回答构成视觉问题。
  2. 关于图片配对的零样本NLVR。
  3. 从NL指令中进行事实知识对象标记。
  4. 语言引导的图像操作。

他们强调没有更改任何模块或语言模型。通过几个上下文示例和适当的程序,VISPROG可以适应任何任务。VISPROG易于使用,在构成VQA测试方面的得分上比基础VQA模型有2.7个点的显著增益,在NLVR的零样本准确率方面达到62.4%,在知识标记和图片编辑任务方面具有令人满意的定性和定量结果。