PERCEIVER IO:一种用于结构化输入与输出的通用架构
温馨提示:
本篇文章已同步至"AI专题精讲" PERCEIVER IO:一种用于结构化输入与输出的通用架构
摘要
机器学习的一个核心目标是开发能够解决尽可能多数据领域中的各种问题的系统。然而,当前的架构不能超出一小部分固定设置的应用,因为它们在设计时就固定了领域和任务假设,或者无法有效扩展到大规模输入或输出。在本研究中,我们提出了Perceiver IO,这是一种通用架构,能够处理来自任意设置的数据,并且在输入和输出大小变化时,能够线性扩展。我们的模型通过在Perceiver的基础上增加一个灵活的查询机制,使得输出可以具有不同的大小和语义,避免了任务特定架构工程的需求。该架构在处理跨越自然语言和视觉理解、多任务和多模态推理以及StarCraft II等任务时表现出了强大的性能。特别地,Perceiver IO在GLUE语言基准测试中超越了基于Transformer的BERT基线,尽管移除了输入标记化步骤,并且在Sintel光流估计任务中达到了最先进的性能,而没有明确的多尺度对应机制。
1. 引言
人类具有卓越的能力,能够从多个来源获取数据,顺畅地整合这些数据,并将其应用于各种目标的实现。大多数机器学习研究专注于构建定制化系统,以处理与单一任务相关的固定输入和输出。即便是处理多模态的模型,也通常采用独立处理每种输入的方法,针对每种模态使用特定的架构(例如使用2D ResNet(He et al., 2016)进行视觉处理,使用Transformer(Vaswani et al., 2017)进行语言处理),然后通过第三方融合网络进行整合,并以任务特定的方式输出结果。随着输入或输出变得更加多样化,类似系统的复杂性可能会剧增(例如Abramson et al. 2020; Vinyals et al. 2019; Ramesh et al. 2021),而任务的输入和输出结构可能会对数据处理方式施加强烈的限制,使得适应新设置变得困难。
是否每次处理新的输入和输出集时都必须开发特定任务的模型?如果能够使用单一神经网络架构处理多种输入模态和输出任务,那么生活将变得简单得多。在本研究中,我们提出了这样一个架构,最终目标是构建一个可以轻松整合和转化任意信息以完成任意任务的网络。我们的出发点是Perceiver(Jaegle et al., 2021),这种架构展现了在无需改变网络架构的情况下处理多种模态数据的惊人能力。Perceiver使用注意力机制将来自多种模态的输入映射到一个固定大小的潜在空间,并通过一个深层的完全注意力网络进一步处理该空间的数据。这个过程将网络的主要处理部分与输入的大小和模态特定细节解耦,从而使其能够扩展到大型和多模态数据。
然而,Perceiver仅能处理像分类这样的简单输出空间。现实世界任务的复杂性很大程度上来自于其输出的多样性、大小和结构,而在这方面,原始的Perceiver不能算作是通用架构。在本研究中,我们开发了一种解码结构化输出的机制——例如语言、光流场、视听序列、符号无序集合等——直接从Perceiver的潜在空间中生成,这使得模型能够处理一系列新的领域,同时保留深度、领域无关处理的优势。为此,我们通过使用一个输出查询,指定特定输出的语义,来对潜在数组进行注意力操作,从而生成每个输出。例如,如果我们希望模型预测某个特定像素的光流,我们可以将该像素的xy坐标与光流任务的嵌入结合,形成一个查询:模型随后会利用这个查询进行注意力操作,并生成一个光流向量。通过这种方式,我们的架构能够生成许多输出,每个输出具有任意的形状和结构,而我们架构中的潜在特征则保持与输出的形状和结构无关。
原始的Perceiver不能被认为是通用的。在这项工作中,我们开发了一种机制,可以直接从Perceiver的潜在空间解码结构化的输出——如语言、光流场、视听序列、符号无序集合等——这使得该模型能够在不牺牲深度、领域无关处理的优点下,处理一系列新的领域。为了实现这一点,我们通过一个输出查询来访问潜在数组,输出查询指定了特定输出的语义。例如,如果我们希望模型预测某个特定像素的光流,我们可以通过该像素的xy坐标和一个光流任务嵌入来组成查询:然后,模型将使用该查询进行关注并输出一个光流向量。因此,我们的架构能够生成许多输出,每个输出都可以具有任意的形状和结构,而架构中的潜在特征仍然与输出的形状和结构无关。
Perceiver IO使用完全关注的读取-处理-写入架构来实现这一点:输入被编码(读取)到潜在空间,潜在表示通过多层处理进行优化(处理),然后潜在空间被解码(写入)以生成输出。这种方法继承了Transformer的最佳特性——利用领域无关的原语对输入进行非局部处理——以及在高带宽领域(如计算机视觉或多模态处理)中广泛使用的编码器-解码器架构(例如Ronneberger等人,2015;Newell等人,2016)。这种方法使我们能够将用于大部分计算的元素(潜在)大小与输入和输出空间的大小解耦,同时对输入和输出的空间或局部结构做出最小的假设。
Perceiver IO的解码过程使用一种注意力机制,通过查询系统将潜在向量映射到任意大小和结构的输出,这个查询系统可以灵活地指定在各种领域中所需输出的语义,包括密集型和多任务设置。该解码器使得Perceiver IO能够作为当前在一系列挑战性领域中使用的多种专用网络的替代方案,同时提高了如分类等任务的性能,这些任务原本可以由Perceiver处理。
所提议的架构能够以前所未有的通用性应用。Perceiver IO可以替代BERT(Devlin等人,2019)和AlphaStar(Vinyals等人,2019)中使用的Transformer。同时,Perceiver IO在Sintel光流基准(Butler等人,2012)上取得了最先进的结果,并在ImageNet图像分类(Deng等人,2009)上取得了良好的结果。即使在处理高度多样化的多模态数据时,Perceiver IO也能取得令人信服的结果,例如在Kinetics(Smaira等人,2020)上的联合{视频、音频、标签}自动编码和在AudioSet(Gemmeke等人,2017)上的联合音频-视频分类。Perceiver IO使我们能够简化流水线并消除领域特定的假设:我们在不使用tokenizer的情况下处理语言,且没有性能或速度的损失,能够在多个分类任务上同时进行微调,而不需要[CLS] tokens(第4.1节),不依赖于多尺度对应的显式架构特征来估计光流(第4.2节),在没有单独的网络分支的情况下学习视频、音频和标签的联合表示(第4.3节),并在没有图像2D结构信息的情况下进行图像分类(附录A)。
2 相关工作
神经网络研究长期以来一直在寻求能够处理大规模、任意结构化输入和输出的架构。自编码(Hinton & Zemel, 1994)是最早尝试构建可以编码和再现高维输入(如图像)的表示之一。随着硬件的不断发展,神经网络在图像理解方面取得了突破(Krizhevsky等人,2012;Zeiler & Fergus,2014;Szegedy等人,2015),并激发了更广泛的兴趣:发展了能够处理和完成手写样本的自回归模型(Graves,2013),新的卷积网络设计在像语义分割(Farabet等人,2012;Long等人,2015;Ronneberger等人,2015)、姿态估计(Toshev & Szegedy,2014)、检测(Sermanet等人,2014)、字幕生成(You等人,2016)和光流(Fischer等人,2015)等结构化输出空间中取得了良好的结果。与此同时,自然语言应用研究在捕捉语言的结构化特性方面取得了广泛的进展,通常通过自回归模型(Collobert等人,2011;Sutskever等人,2014;Vaswani等人,2017;Radford等人,2019;Brown等人,2020)或上下文预测(Mikolov等人,2013;Pennington等人,2014;Devlin等人,2019)。
与我们的工作类似,几个研究小组提出了解决多个领域任务的方法(例如Kaiser等人,2017;Alayrac等人,2020;Akbari等人,2021),但通常是在一个固定且预定义的模态集合中通过领域特定的网络进行。然而,尽管单任务的专用网络在视觉领域仍然占主导地位,多任务学习已变得越来越流行(Misra等人,2016;Doersch & Zisserman,2017;Kokkinos,2017;Zamir等人,2018),并且个体模型在有限领域内实现了通用性:例如,Mask-RCNN(He等人,2017)处理目标检测、分割和姿态估计。在语言领域,多个任务的训练或评估也已变得普遍(Collobert & Weston,2008;Luong等人,2016;Devlin等人,2019;Liu等人,2019;Raffel等人,2020)。几个小组已经证明,Transformer(最初为语言设计)可以用于或调整以适应非语言任务(例如Chen等人,2020;Lu等人,2021),但Transformer的有限可扩展性限制了它们作为通用架构的实用性。
几个小组提出使用注意力机制来操控数组的大小或引入处理瓶颈。Set Transformer及相关工作(Lee等人,2019;Goyal等人,2022)通过学习的查询(“诱导点”)来诱导局部瓶颈,通过将集合从少量元素的集合来回映射,以及通过学习的解码器查询(“种子向量”)来映射到输出(“多头注意力池化”)。这些网络的每一层的复杂度与输入大小成线性关系,而Perceiver则使用深度潜在网络,复杂度与输入和输出无关。我们的工作通过对不同大小的输入和输出使用注意力,部分是为了生成高效的注意力架构,且许多其他高效的注意力架构也已被提出,主要用于语言或小规模问题(例如Xiong等人,2021;Wang等人,2020;Tay等人,2021a;Beltagy等人,2020,参见Tay等人,2021b)。我们工作的重点是开发一个高效的架构,同时在多个设置中,在各种输入和输出上都能表现良好。
几项工作使用注意力处理与输入/输出数据接口的潜在空间,采用任务或领域特定的架构(Carion等人,2020;Locatello等人,2020;Wang等人,2021),而交叉注意力本身也广泛用于生成大小或结构与输入不同的输出(Dai等人,2019;Desai & Johnson,2021;Miech等人,2021;Vaswani等人,2017;Raffel等人,2020;Santoro等人,2018;Hudson & Zitnick,2021;Ma等人,2021)。Perceiver IO在这些工作的基础上构建,生成一个可以轻松广泛应用的通用架构。
3 Perceiver IO架构
Perceiver IO架构基于Perceiver(Jaegle等人,2021),通过假设其输入是一个简单的二维字节数组来实现跨领域的通用性:该数组由一组元素组成(这些元素可能是视觉中的像素或补丁、语言中的字符或单词,或者某种形式的嵌入,无论是学习的还是其他方式的),每个元素都由一个特征向量描述。然后,模型使用较少数量的潜在特征向量来编码输入数组的信息,采用类似Transformer的注意力机制,经过迭代处理后,最终进行聚合,输出一个类别标签。
与其输出一个单一的类别不同,Perceiver IO旨在在其输出方面具有与Perceiver在输入方面相同的通用性:即,它应该能够生成任意形状的输出数组。我们可以通过另一个注意力模块来预测输出数组的每个元素,通过使用一个查询特征向量来查询潜在数组,该特征向量对每个输出元素都是唯一的。换句话说,我们定义一个查询数组,其元素数量与所需输出相同。查询可以是手工设计的、学习的嵌入,或者是输入的简单函数。它们通过对潜在数组进行注意力操作,生成所需形状的输出数组。
3.1 编码、处理和解码
图2展示了Perceiver IO的架构。我们首先通过应用一个注意力模块,将输入数组 x∈RM×C\boldsymbol { x } \in \mathbb { R } ^ { M \times C } \,x∈RM×C编码到潜在空间 z∈RN×D\boldsymbol { z } \in \mathbb { R } ^ { N \times D }z∈RN×D。接下来,我们通过一系列模块处理潜在表示 z,这些模块输入和返回的都是潜在空间中的数组。最后,我们通过应用一个注意力模块,将潜在数组解码到输出数组 y∈RO×Ey \in \mathbb { R } ^ { O \times E }y∈RO×E。其中,M、C、O 和 E 是任务数据的属性,可能非常大(见表5),而 N 和 D 是超参数,可以选择合适的值来使模型计算在可控范围内。沿用Perceiver的设计,我们使用Transformer风格的注意力模块实现架构的各个组件。
这些模块每次都应用一个全局的查询-键-值(QKV)注意力操作,随后是一个多层感知器(MLP)。与Transformer风格架构中的常规做法一样,我们独立地将MLP应用到索引维度的每个元素。编码器和解码器都接收两个输入数组,第一个输入用于模块的键和值网络,第二个输入则用于模块的查询网络。模块的输出具有与查询输入相同的索引维度(即相同数量的元素)。
Perceiver IO架构建立在类似于Transformer的基本操作上。那么,为什么Transformer并不是唯一需要的呢?Transformer在计算和内存方面的扩展性非常差(Tay等人,2020)。因为Transformer将注意力模块均匀地部署在整个架构中,每一层都会使用全部输入生成查询和键。这意味着每一层的计算和内存的扩展性是二次方的,这使得在高维数据(如图像)上应用Transformer变得不可行,除非进行某种形式的预处理。即便是在像语言这样的领域,Transformer也往往需要预处理(例如,分词)才能扩展到超过短输入序列的范围。Perceiver IO通过将输入映射到潜在空间, 在该潜在空间中进行处理,并解码到输出空间,避免了Transformer的这种二次方依赖:编码器和解码器的注意力模块分别依赖于输入和输出的线性大小,而潜在空间中的注意力与输入和输出的大小无关(见Sec. E.2)。由于计算和内存需求的相应减少,Perceiver IO能够扩展到更大的输入和输出空间。虽然Transformer通常应用于数据经过预处理,维度最多只有几千的场景(Brown等人,2020;Raffel等人,2020),但我们在处理具有数十万维的领域时,依然取得了良好的结果。
这种架构可以应用于任意形状或空间布局的输入,包括具有不同空间结构的输入或输出(例如声音和视频)。与通常在计算机视觉中使用的潜在空间(如Ronneberger等人,2015)不同,Perceiver IO的潜在空间并不显式地与输入的结构(无论是空间结构还是其他结构)相同。为了解码这些信息,我们通过交叉注意力进行查询。
3.2 使用查询数组解码潜在表示
我们的目标是根据一个大小为 N×DN \times DN×D 的潜在表示,生成一个大小为O×E,O \times E ,O×E, 的最终输出数组。我们通过查询解码器并使用一个具有索引维度 O 的数组来生成该大小的输出。为了捕捉输出空间的结构,我们使用包含每个输出点适当信息的查询,例如它的空间位置或模态。
温馨提示:
阅读全文请访问"AI深语解构" PERCEIVER IO:一种用于结构化输入与输出的通用架构