原文链接
人工智能最近经历了复兴,并在视觉、语言、控制、决策等多个关键领域取得重大进展。这一部分归功于符合深度学习天然优势的廉价数据和计算资源。然而,许多在不同压力下发展出来的人类智慧特征仍是现有方法无法触及的。特别是超出个人经验的泛化能力——从婴儿时期开始的人类智慧标志——仍然是当代人工智能面临的巨大挑战。
本文部分是提出观点、部分是回顾方法、部分是统一模型。我们认为,组合泛化是人工智能想要达到类似人的智能水平的当务之急,并且实现这个目标的关键是结构化表征和计算。正如生物学利用自然和合作培养一样,我们拒绝在“手工设计”和“端到端”学习间做二选一的错误选择,相反,我们提倡结合二者优点的方法。我们探讨如何在深度学习架构中使用关系归纳偏好以促进对实体,关系和组成它们的规则的学习。我们为人工智能工具箱提供了一种具有强关系归纳偏好的新的构造块——图网络——它概括并扩展了各种运行在图上的神经网络方法,为操作结构化知识和产生结构化行为提供了一个简单接口。我们讨论图网络是如何有效支持关系推理和组合泛化,这为更复杂,可解释和灵活的推理模式奠定基础。最后,我们发布了构造图网络的开源软件库,并给出具体实践中的使用方法。
组合泛化是指从已知的构造块中构建出新的推测、预测和行为。比如,一组有限的单词可以生出许多不同的新句子,也就是文中说的“infi nite use of finite means”。本文我们探索如何通过面向结构化表征和计算的偏好学习来提高当前人工智能的组合泛化能力,尤其是作用于图上的系统。
人的组合泛化能力关键依赖于表征结构和推理关系的认知机制。我们将复杂系统表征为实体和实体间联系的组合。我们使用层次结构来从细粒度差异中抽象出来,并捕获表征和行为之间的更一般的共性。(后面都在举例说明类似的观点。)
也就是说,世界是构成的,或者至少我们可以使用建构的方式理解它。 学习时,我们要么将新知识应用到现有的结构化表示中,要么调整结构本身以更好地适应(和利用)新旧结构。
如何构建展示组合泛化的人工系统问题一直是人工智能的核心,并且是许多结构化方法的核心,包括逻辑,语法,经典规划,图形模型,因果推理。(这里举了几个结构化方法)结构化方法在以前的时代对于机器学习如此重要的一个关键原因部分是因为数据和计算资源很昂贵,并且结构化方法强大的归纳偏好所带来的改进的样本复杂性非常有价值。(这部分说的就是摘要里提及的“hand-engineering”方法)
和获取人工智能方法不同,现代深度学习方法经常遵循端到端(end-to-end)的设计理念,强调最小的先验表示和计算假设,并寻求避免明确的结构和“hand-engineering”。这种为更灵活地学习合理选择而权衡样本效率的强调——可能已经得到了肯定——与当前丰富的廉价数据和计算资源相吻合。后面举了几个代表性的突破,比如图像识别、自然语言处理等。
深度学习虽然成功,但是仍面临许多挑战。比如复杂语言和场景理解、结构化数据推理、超出训练条件的迁移学习、少量经验数据学习。这些挑战需要组合泛化来解决,因此,一个避免组合性和显示结构的方法可以尽力满足这些挑战,这并不惊讶。
最近,出现了一些结合深度学习和结构化方法的模型,这些模型关注的方法可以推理显示的架构化数据,尤其是图。这些模型的共性是可以在实体和实体间的关系上进行计算。和传统方法不同的是实体和关系的表征——以及相应的计算——怎样学习,这减少了预先设计他们的需求负担。重要的是,这些方法有很强的关系归纳偏好,以特定的结构假设形式,将这些方法导向关于实体和关系的学习,这也是我联合其他学者建议的要达到人类智能水平的必要条件。
在本文剩下的部分,我们将研究各种深度学习方法的关系归纳偏好,并表明现有的方法通常带有并不明显或立即可见关系假设。急着,我们提出基于实体-关系推理的通用框架——并取名为图网络——来统一和扩展现有的作用在图上的模型,并描述使用图网络作为构造块构造强大结构的关键设计原则。我们发布了构造图网络的开源软件库。
许多机器学习和AI中的方法使用关系归纳偏好而具有关系推理的能力。虽然不是一个精确的,正式的定义,但我们使用这个术语来指代归纳偏好,它对学习过程中实体之间的关系和交互施加约束。
近年来,创新的新机器学习架构迅速扩散。从业者经常遵循组成基本构建块的设计模式,以形成更复杂,更深的计算层次结构和图形。全连接层(fully-connected layers)堆积成多层感知机(MLP),卷积层(convolutional layers)堆积成卷积神经网络(CNN),一个图像处理网络的标准结构是通常是变种的卷积神经网络加上多层感知机(即CNN+MLP)。这种层组合提供了特定类型的关系归纳偏好 ——分层处理 ——其中计算分阶段执行,通常会导致输入信号中的信息之间的长距离交互。正如我们在下面探索的一样,构建块本身也带有各种关系归纳偏好(如下图)。虽然超出了本文的范围,但在深度学习中也使用了各种非关系归纳偏好,比如:激活非线性、权值衰减、dropout、批和层正则化、数据增强、优化算法,都对学习的轨迹和结果施加约束。
为了探索在各种深度学习方法中表现出的关系归纳偏好,必须要清楚几个关键概念:实体、关系和规则 。在深度学习中,实体和关系通常表示为分布式表征,而规则表示为神经网络函数逼近器; 但是,实体、关系和规则的精确形式因架构而异。 为了理解架构之间的这些差异,我们可以进一步探索以下问题来询问每个架构如何支持关系推理:
全连接层可能是最常见的构造块,通常实现为向量输入的非线性向量值函数,输出向量的每个元素或“单位”是权值和向量之间的点积,再加上偏置项,并且最终送往非线性激活单元,例如ReLU。这样,实体就是网络中的单元,关系是多对多的(第i层的所有单元和第j层的所有单元连接),规则是由权值和偏置项确定的。所有的输入信号都是规则的参数,没有重用,没有孤立的信息(因为全连接)。
因此,全连接层的隐藏的关系归纳偏好是很弱的,因为所有的输入和输出相连,可以决定输出单元的值。
另外一个常见的构造块是卷积层。它通过将输入向量或张量与同等级的内核卷积,再加上偏置项,并应用逐点非线性来实现。这里,实体仍然是独立单元(或者格子元素,例如,像素),但是关系更加稀疏。全连接层和卷积层之间的差异强加了一些重要的关系归纳偏好:局部性和变换不变性。局部性反映了关系规则的参数是在输入信号的坐标空间中彼此非常接近的实体,与远端实体隔离。变换不变性反映了在输入的局部重复使用相同的规则。这些偏差对于处理自然图像数据非常有效,因为在局部相邻点存在高协方差,其随着距离而减小,并且因为统计数据在图像中大部分是静止的。
第三种常见的构造块是循环层,通过一系列步骤实现。这里,我们可以将输入和每一步骤的隐含状态看做实体,可以把Markov性质(当前步骤的隐含状态依赖于前一步骤的隐含状态和当前输入)作为关系,规则将当前步骤的输入和隐含状态作为参数来更新隐含状态。每一步骤都重用(reuse)规则,这反映了关系归纳偏好的时间不变性(和CNN的空间变换不变性类似)。
虽然标准深度学习工具包包含具有各种形式的关系归纳偏好的方法,但没有“默认”的运行在任意关系结构上的深度学习组件。我们需要具有实体和关系的明确表示的模型,以及用于计算其交互规则的学习算法,以及基于数据的方法。重要的是,世界上的实体没有自然秩序;但是,排序可以通过他们关系的属性来定义。例如,一组物体之间的尺寸大小关系可以用来排序,也可以用质量、年龄、价格等来排序。除了面对关系,置换不变性是一个用于关系推理的深度学习组件应该要有的特性。
集合是系统的自然表示,这些系统由未确定顺序或不相关的实体描述; 特别是,他们的关系归纳偏好并非来自“存在”,而是“缺失”。为了说明,考虑这样一个任务,要预测有n个行星组成的太阳系的质心,用 { x 1 , x 2 , x 3 , . . . , x n } \{x_1,x_2,x_3,...,x_n\} {x1,x2,x3,...,xn}表示行星的属性(比例质量、位置、速度等)。对于这个计算,行星的顺序是无关紧要的,因为可以用聚合的、平均的量值来单独描述状态。但是,如果我们使用MLP来处理这个任务,将会失败。处理这种组合爆炸的一种自然方法是仅允许依赖于输入属性的对称函数的预测。这可能意味着计算共享的每个对象的特征 { f ( x 1 ) , . . . , f ( x n ) } \{f(x_1),...,f(x_n)\} {f(x1),...,f(xn)},然后,以对称的方式聚合这些特征。这种方法是Deep Sets和related models的本质,我们将在4.2.3节进一步探讨。
当然,在许多问题中,置换不变性不是底层结构的唯一重要形式。例如,集合中的每个物体可能受集合中其他物体的交互影响。在我们的行星问题场景中,现在我们考虑预测时间间隔 Δ t \Delta{t} Δt后每个行星的位置。在这种情况下,使用聚合的、平局的信息并不足够,因为每个行星的移动取决于行星间的引力。相反,我们可以计算每个物体的状态 x i ′ = f ( x i , Σ j g ( x i , x j ) ) x'_i=f(x_i, \Sigma_jg(x_i,x_j)) xi′=f(xi,Σjg(xi,xj)),这里 g g g计算的就是其他星球 j j j作用于 i i i星球的引力, f f f根据行星间的引力 Σ j g ( x i , x j ) \Sigma_jg(x_i,x_j) Σjg(xi,xj)和星球 i i i的属性 x i x_i xi计算出星球 i i i未来的状态。我们在任何地方使用相同的 g g g的事实再次是系统全局置换不变性的结果; 但是,它也支持不同的关系结构,因为 g g g现在需要两个参数而不是一个。
上述的太阳系例子说明了两种关系结构:1)没有关系;2)成对关系。但是,很多真实世界拥有的关系结构在这两种极端结构中间,一些实体对间有关系,一些没有关系。在我们的太阳系的例子中,如果系统现在包含行星和行星的月球,那么在计算时,可能要忽略月球对行星的引力。实际中,这意味着我们只计算部分物体间的相互关系,例如 x i ′ = f ( x i , Σ j ∈ δ ( i ) g ( x i , x j ) ) x'_i=f(x_i, \Sigma_{j\in\delta{(i)}}g(x_i,x_j)) xi′=f(xi,Σj∈δ(i)g(xi,xj)),这里 δ ( i ) ⊆ { 1 , 2 , . . . , n } \delta{(i)\subseteq\{1,2,...,n\}} δ(i)⊆{1,2,...,n}是结点i之间的相邻点。这等同于图,在图中,第i个物体只和其他物体的子集交互。注意,更新的状态仍然不依赖我们描述邻点的顺序。
通常,图形是支持任意(成对)关系结构的表示,并且图形上的计算提供了超过卷积和循环层可以提供的强关系归纳偏好。
这部分介绍了当前的研究现状和现有方法,这里不做详述,可参考原文。
我们现在给出图网络(GN)框架,它为图形结构化表征定义了一类关系推理的函数。我们的GN框架概括和扩展了不同的图神经网络,MPNN,NLNN方法,并且支持从简单构造块构造复杂结构。注意,我们避免在“图网络”中使用“神经”这个术语,这反映出可以不用神经网络而是函数实现,虽然,本文的重点是神经网络实现。
GN框架的主要单元是GN块,一个“图到图”的模块,该模块输入是图,在结构上进行计算,输出图。如下图
图中的结点表示实体,边表示关系,全局属性表示系统级别的属性。GN框架块的组织强调表示需要的关系归纳偏好的可定制和合成的新架构。关键的设计原则是:灵活的表征(4.1节);块内结构可配置(4.2节);多块结构组合(4.3节)。
我们举一个使GN形式更加具体形象的例子。考虑要预测在任意引力场中的一组橡胶球的运动,除了相互反弹外,每个球有一个或多个连接到其他球的弹簧。我们将在下文的定义中贯穿使用这个例子,来解释图表征和计算。
在我们的GN框架中,一个图是有一个三元组G=(u,V,E)来定义的。
参数 | 说明 | 弹簧例子说明 |
---|---|---|
u | 全局属性 | 可能表示引力场 |
V = { v i } i = 1 : N v V=\{v_i\}_{i=1:N^v} V={vi}i=1:Nv | 结点集合, v i {v_i} vi是结点属性 | V表示每个球的位置、速度、质量属性 |
E = { ( e k , r k , s k ) } k = 1 : N e E=\{(e_k,r_k,s_k)\}_{k=1:N^e} E={(ek,rk,sk)}k=1:Ne | 边集合, e k {e_k} ek是边属性, r k {r_k} rk是接收结点的索引, s k {s_k} sk是发送结点的索引 | E可能表示不同求之间是否存在弹簧和相应的弹簧系数。 |
一个GN块包括3个更新函数 ϕ \phi ϕ,和三个聚合函数 ρ \rho ρ。
ϕ e \phi^e ϕe被映射所有边来计算每条边的更新, ϕ v \phi^v ϕv被映射所有结点来计算每个结点的更新, ϕ u \phi^u ϕu在进行全局更新的时候使用一次。 ρ \rho ρ函数每次输入一个集合,将其减少到一个元素,来表示聚合的信息。关键的是, ρ \rho ρ函数必须是输入排列顺序不变的,而且输入参数个数是可变的。
当一张图输入到GN块时,计算步骤是从边->结点->全局级别。下图给出了每种计算所涉及的图元素。更新算法如Algorithm 1所示。
算法流程大致如下:
一个完整的带有更新和聚合函数的GN块如下图所示。
虽然我们这里假设了一种序列步骤,但这种顺序不是强制的,可以颠倒顺序,例如,全局->每个结点-每条边更新。
我们的GN框架在学习过程中作为组件使用时会产生一些强大的关系归纳偏好。首先,图可以表示实体间的任意关系;其次,图用集合表示实体和它们之间的关系,这具有输入排列不变的特点。最后,GN中的每条边和每个结点的函数在整个边和结点的计算中是重复使用,这意味着其具有组合泛化能力。
这里我们主要关注深度学习结构,这使得GN表现的像是可学习的图到图的函数逼近器。
GN网络在2方面支持高灵活表征,一是属性的表征,二是图自身结构的表征。
GN块的全局、结点、边属性可以使用任意的表示形式。在深度学习实现中,实值向量或张量是最常见的。然而,也可以使用其他的数据结构,例如:序列、集合、甚至是图。
问题的需求经常是针对属性决定使用什么样的表征。例如,图片可能使用张量,文本可能使用单词序列。对于更广泛架构内的每个GN块,边和结点输出通常对应于矢量或张量列表,每个边或结点一个,并且全局输出对应于单个矢量或张量。 这允许将GN的输出传递给其他深度学习构建块,例如MLP,CNN和RNN。GN的输出可以裁剪来满足不同的任务。特别地:
在确定输入数据如何表示为图时,通常有两种情况:1)输入明确指出了关系结构; 2)必须推断或假设关系结构。 这些不是硬性的区别,而是连续统一体的极端。
具有更明确指定的实体和关系的数据示例包括知识图谱、社交网络、解析树等。
关系结构未明确,必须推断或假设的数据示例包括:视觉场景、文本语料库、编程语言源代码和多智能体系统。在这些类型的设置中,数据可以被格式化为一组没有关系的实体,或者甚至只是一个矢量或张量。如果没有明确指定实体,可以假设,例如把句子中的每个单词,CNN中每个输出特征图的局部特征向量作为结点。或者可以使用一个单独的学习机制从非结构化数据中推测出实体。如果关系不可用,最简单的方法是实例化实体之间所有可能的有向边。然而,这对于大量实体来说可能是不可用的,因为可能的边的数量随结点的数量呈平方增长。因此,开发更复杂的从非结构化数据推断稀疏结构的方法是未来的重要方向。
这部分回顾了一些现有方法,主要说明了公式1中的 ϕ \phi ϕ和 ρ \rho ρ函数可以用不同的选择配置。比如有的 ϕ \phi ϕ选择神经网络(neural networks), ρ \rho ρ选择元素级别求和(当然最大/最小函数也可以使用)。有的 ϕ \phi ϕ选择使用循环神经网络RNN,如下图中的b。
其他不同的架构也可以用不同函数选择和块内配置的GN结构表示。本小节的剩余部分探讨如何以不同的方式进行GN块内结构的配置,以及使用此类配置的已发布工作的示例(即文中4.2.1-4.2.3小节,其中提及的现有方法可参考相应的论文)。
图网络的一个关键设计原则是通过组合GN块来构造复杂架构。这种图到图的输入输出接口保证了一个GN块的输出可以当作另一个GN块的输入,即使它们内部的配置不同,这类似于标准深度学习工具包中的张量到张量的接口。下图给出了3中架构。
个人理解,后文介绍的很多设计都是参考深度学习设计框架提出的,只不过基本构造单元换成了GN块。
参考项目官方网址。
GN结构自然支持组合泛化,因为它们不在系统级别严格执行计算,而在实体间和关系间应用共享计算。这允许对前所未见的系统进行推理,因为它们是由熟悉的组件构建的。后面具有很多现有工作证明这点。
更普遍地,虽然图是一种结构化信息表征的有力方法,但是它有局限。像递归,控制流和条件迭代这样的概念不能直接用图表示,因此图网络很难保证可以解决此类问题。对这类问题,程序和更类似电脑的处理方式可以提供更好的表征和计算表示。