最近,图神经网络(GNNs)通过有效学习的节点嵌入,改变了图形表征学习的领域,在节点分类和连接预测等任务中表现了不错的效果。然而,现有的 GNN 方法本质上是平面化的,因此无法学习图形的层级表征——这对于图形分类任务而言尤其成问题,因为图形分类任务的目的是预测与整个图像相关的标签。在这里,我们提出了DIFFPOOL,一个可微分的图形池化模块,可以生成图形的层级表征,并可以使用端到端的方式与各种图神经网络架构相结合。DIFFPOOL为深GNN的每一层的节点学习一个可微分的软簇分配,将节点映射到一组簇中,然后形成下一个GNN层的粗化输入。实验结果表明将现有的GNN方法与DIFFPOOL结合后,在图形分类基准中的准确率平均可以提高5~10%,与现有的所有池化方法相比,在5个基准数据集中,有4个都得到了当前最佳的表现。
近年来,人们对开发图神经网络(GNN)的兴趣激增。图神经网络可以理解为,能在如社交网络数据[16,21,36]或基于图形的分子表征[7,11,15]的图形结构数据上运行的一般的深度学习架构。GNN的一般方法是将底层图作为计算图,通过在图上传递,转换和聚合节点特征信息来学习生成单个节点嵌入的神经网络基元[15,16]。然后,生成的节点可嵌入用作任何可微分预测层的输入,例如,用于节点分类[16]或连接预测[32],并且可以以端到端的方式训练整个模型。
然而,当前GNN体系结构的一个主要限制是它们本身是平面化的,因为它们仅在图的边缘传播信息,以致于它们不能以层级方式推断和聚合信息。例如,为了成功编码有机分子的图形结构,理想情况下需要编码局部分子结构(例如,单个原子和与这些原子直接相连的键)以及分子图的粗粒结构(例如,在分子中表示功能单元的原子基团和键)。对图形分类任务而言,层级结构的缺失是尤为重要的问题,因为这类任务是要预测与整个图相关的标签。在图分类任务中应用 GNN,标准的方法是针对图中所有的节点的生成嵌入,然后对这些嵌入的节点进行全局聚合(池化),如简单地求和或在数据集上运行神经网络 [7,11,15,25]。这种全局聚合的方法忽略了图中可能存在的任何层级结构,并且它妨碍了研究人员为整个图形上的预测任务构而建立有效的GNN模型。
在这里,我们提出了DIFFPOOL,一个可微分的图形池化模块,它可以以层级和端到端的方式适应各种图形神经网络架构(图1)。DIFFPOOL允许开发更深层的GNN模型,可以运行图的层级表示来进行学习。我们开发了CNN中,图形的空间池化操作的变体[23],它允许深度CNN架构能够在一张表征越来越粗糙的图像上迭代地运行。与标准的CNN相比,GNN面临的挑战是图形不包含空间局部性的自然概念,即所有节点不能简单地以「m*m 补丁」的方式聚合在一张图像上,因为图的复杂的拓扑结构排除了任何直接、决定性的「补丁」的定义。此外,与图像数据不同,图形数据集通常包含具有不同数量的节点和边缘的图形,这使得定义一般图形池化操作更具挑战性。
为了解决上述挑战,我们需要一个模型来学习如何将节点聚集在一起,以在底层图形之上构建层级多层支架。我们的方法DIFFPOOL在深度GNN的每一层学习一个可微分的软分配,基于其学习的嵌入,将节点映射为一组簇。在这个框架中,我们通过以层级方式“堆叠”GNN层来生成深度GNN(图1):GNN模块中层l的输入节点对应于在层l -1 处学习的簇。因此,DIFFPOOL的每一层都能使图像越来越粗化,并且经过训练后的DIFFPOOL能够生成任何输入图形的层级表征。我们证明DIFFPOOL可以与各种GNN方法结合使用,使得精确度平均提高7%,并且在五种基准图分类任务中有四种是达到显著水平。最后,DIFFPOOL可以学习到与输入图形中明确定义的集合相对应的可解释的层级簇。
我们的工作建立在最近对图神经网络和图分类的研究基础之上。
一般图神经网络。近年来已经提出了各种各样的图神经网络(GNN)模型,包括受卷积神经网络启发的方法[5,8,11,16,21,24,29,36],循环神经网络[25], 递归神经网络[1,30]和环路信念传播[7]。这些方法中的大多数都在Gilmer等人提出的“神经信息传递”的框架内[15]。在消息传递框架中,GNN被视为对从邻居节点得到的特征使用一个可微分聚合函数来迭代的计算节点表征的消息传递算法。Hamilton等人[17]对这一领域的最新进展进行了概念性回顾,Bronstein等人[4]概述了连接频谱图卷积。
图形分类与图神经网络。GNN已经应用于各种各样的任务,包括节点分类[16,21],连接预测[31],图形分类[7,11,39]和化学信息学[28,27,14,19,32]。在图形分类的背景下,应用GNN的一个主要挑战是从节点嵌入(GNN的输出)到整个图的表征。解决这个问题的常见方法包括简单地对最后一层中的所有节点嵌入进行求和或平均[11],引入一个虚拟节点来连接图中所有的节点[25],或者使用在集合上操作的深度学习架构来聚合节点嵌入[15]。然而,所有这些方法都具局限性:它们不能学习到层级表征(即所有节点嵌入在单个层中全局汇集在一起),因此不能捕获许多真实世界中图的自然结构。最近的一些方法也提出将CNN架构应用于所有节点嵌入的连接[29,39],但这需要指定(或学习)对节点的规范排序,这通常非常困难并且等同于解决图同构。
最后,有一些最近的工作通过将GNN与确定性图聚类算法[8,35,13]相结合来学习层级图表征,遵循两阶段方法。然而,与以前的方法不同,我们寻求以端到端的方式学习层级结构,而不依赖于确定性图形聚类子程序。
DIFFPOOL的关键思想是通过为层级池化图节点提供可微分的模块,来构建深层,多层GNN模型。在本节中,我们概述了DIFFPOOL模块,并展示了它如何应用深度GNN架构。
我们将图G表示为(A,F),其中A∈{0,1}n×n是邻接矩阵,并且F∈Rn×d是假设每个节点具有d个特征的节点特征矩阵(我们不考虑边缘特征,尽管可以使用[35]中介绍的技术轻松扩展算法以支持边缘特征)。给定一组标记图D = {(G1,y1),(G2,y2),...}其中yi∈Y是对应于图Gi∈G的标签,图形分类的目标是学习映射f:G → Y将图形映射到标签集。与标准监督机器学习相比,我们所面临的挑战是,我们需要一种从这些输入图中提取有用特征向量的方法。也就是说,为了将标准机器学习方法应用于分类,例如神经网络,我们需要一种程序将每个图形转换为RD中的有限维向量。
图神经网络。在这项工作中,我们建立了图神经网络,以便使用端到端的方式为图形分类学习到有用的表征。特别是,我们考虑采用以下一般“消息传递”架构的GNN:
H(k)= M(A,H(k-1);θ(k)), (1)
其中H(k)∈Rn×d是GNN和M经过k个步骤之后计算的节点嵌入(即“消息”)的消息传播函数,它取决于邻接矩阵,可训练参数θ(k)和从先前的消息传递步骤生成的节点嵌入H(k-1)(为了符号方便,我们假设所有H(k)的嵌入维数为d; 但是,一般来说,这种限制是不必要的)。在初始消息传递迭代(k = 1)处嵌入 H(0)的输入节点,并且使用图上的节点特征进行初始化,H(0)= F。
传播函数M[15,16]有许多可能的实现。例如,Kipf等人提出的[21]图卷积网络(GCNs),是GNNs的一种流行变体。使用线性变换和ReLU非线性的组合实现M(消息传递):
其中~A = A + I,~D = ∑j~Aij和W(k)∈Rd×d是可训练的权重矩阵。我们提出的可微池化模型可以通过运用等式(1)将其应用于任何GNN模型,并且对于如何实现M的具体化是不可知的。
完整GNN模块将迭代K次等式(1)以生成最终输出节点嵌入Z=H(K)∈Rn×d,其中K通常在2-6范围内。为简单起见,在以下部分中,我们将抽象出GNN的内部结构,并使用Z = GNN(A,X)来表示任意根据某些邻接矩阵A和初始输入节点特征X来实现的K次迭代后消息传递的GNN模块。
堆叠GNN和池化层。实现等式(1)的GNN本质上是因为它们仅在图的边缘传播信息。这项工作的目标是定义一个通用的,端到端的可微分策略,允许以层级方式堆叠多个GNN模块。形式上,给定Z = GNN(A,X),GNN模块的输出和图形邻接矩阵A∈Rn×n,我们寻求定义一种策略来输出包含m
我们提出的方法DIFFPOOL通过使用GNN模型的输出在节点上学习聚类分配矩阵来解决上述挑战。关键的直觉是我们堆叠L个GNN模块并学习使用从层l -1的GNN生成的嵌入,以端到端的方式将节点分配给第1层的集群。因此,我们使用GNN来提取对图形分类有用的节点嵌入,以及提取对层级池化有用的节点嵌入。使用这种结构,DIFFPOOL中的GNN学习编码一个通用池化策略,该策略对大量训练图有用。 我们首先描述DIFFPOOL模块如何在给定分配矩阵的情况下汇集每层的节点;接下来,我们将讨论如何使用GNN架构生成分配矩阵。
池化分配矩阵。我们将第1层的学习聚类分配矩阵表示为S(l)∈Rnl×nl + 1。 S(1)的每一行对应于l层的n1个节点(或簇)中的一个,并且S(1)的每列对应于下一层1 + 1处的n1 + 1个簇中的一个。直观地,S(l)提供第1层的每个节点到下一个粗化层1 + 1中簇的软分配。
假设已经计算了S(l),即我们已经计算了模型的第l层的分配矩阵。我们将该层的输入邻接矩阵表示为A(1),并将该层的输入节点嵌入矩阵表示为Z(1)。给定这些输入,DIFFPOOL层(A(l + 1),X(l + 1))= DIFFPOOL(A(1),Z(l))粗化输入图,A(l + 1)是生成新的粗化邻接矩阵,和用于粗化图中的每个节点/簇的新的嵌入矩阵X(1 + 1)。特别是,我们应用以下两个方程式:
等式(3)采用节点嵌入Z(1)并根据聚类分配S(1)聚合这些嵌入,从而为每个n1 + 1聚类生成嵌入。类似地,等式(4)取邻接矩阵A(1)并生成表示每对簇之间连通强度的粗化邻接矩阵。
通过等式(3)和(4),DIFFPOOL层粗化图:下一层邻接矩阵A(l + 1)表示具有nl + 1个节点或簇节点的粗化图,其中新粗化图中的每个单独的簇节点对应于图中,l层中的节点簇。值得注意的是,A(l + 1)是实矩阵,表示完全连通图;每个条目A(l + 1)ij可以被视为聚类i和聚类j之间的连接强度。类似地,X(1 + 1)的第i行对应于簇i的嵌入。粗化的邻接矩阵A(1 + 1)和簇嵌入X(1 + 1)合在一起可以用作另一个GNN层的输入,这个过程我们在下面详细描述。
分配矩阵的学习。在下文中,我们描述了DIFFPOOL的体系结构,即DIFFPOOL如何使用等式(3)和(4)生成的分配矩阵S(1)和嵌入矩阵Z(1)。我们使用两个单独的GNN生成这两个矩阵,这两个GNN都应用于输入聚类节点特征X(1)和粗化邻接矩阵A(1)。第1层嵌入GNN是应用于这些输入的标准GNN模块:
即我们采用第1层的聚类节点(来自等式4)与聚类的聚类特征(来自等式3)之间的邻接矩阵,并通过标准GNN传递这些矩阵,以获得聚类的新嵌入Z(l)节点。相反,第1层的池化GNN使用输入簇特征X(l)和簇邻接矩阵A(l)来生成分配矩阵:
其中softmax函数以行方式应用。请注意,这两个GNN使用相同的输入数据,但使用不同的参数化并扮演不同的角色:嵌入GNN为此层的输入节点生成新的嵌入,而池化GNN生成输入节点到nl + 1簇的概率分配。
在基本情况下,层1 = 0处的等式(5)和等式(6)的输入仅仅是输入邻接矩阵A和原始图的节点特征F。在使用DIFFPOOL的深GNN模型的倒数第二层L-1处,我们将分配矩阵S(L-1)设置为1’s的向量,即最终层L处的所有节点被分配给单个簇,从而生成最终嵌入对应于整个图形的向量。然后,该最终输出嵌入可以用作可微分类(例如,softmax层)的特征输入,并且可以使用随机梯度下降来端对端地训练整个系统。
置换不变性。注意,为了对图形分类有用,池化层在节点排列下应该是不变的。对于DIFFPOOL,我们得到以下积极结果,这表明任何基于DIFFPOOL的深度GNN模型都是置换不变的,只要组件GNN是置换不变的。
命题1.令P∈{0,1} n×n为任何置换矩阵,然后DIFFPOOL(A,Z)= DIFFPOOL(PAPT,PX),只要GNN(A,X)= GNN(PAPT,X)( 即只要使用的GNN方法是置换不变量)。
证明。等式(5)和(6)是假设GNN模块是置换不变的置换不变量。并且由于任何置换矩阵都是正交的,因此将PTP = I应用于等式(3)和(4)来完成证明。
在实践中,仅使用来自图分类任务的梯度信号来训练池化GNN(等式4)可能是困难的。直观地说,我们有一个非凸优化问题,并且在训练早期将池化GNN推离虚假局部最小值是很困难的。为了缓解这个问题,我们使用辅助链接预测目标训练池化GNN,该目标编码了附近节点应该汇集在一起的直觉。特别地,在每个层l,我们最小化LLP = || A(1)-S(1)S(1)T ||F,其中||·||F表示Frobenius范数。注意,较深层的邻接矩阵A(1)是较低级别分配矩阵的函数,并且在训练期间是变化的。
池化GNN(等式4)的另一个重要特征是每个节点的输出聚类分配通常应该接近独热向量,以便明确定义每个簇或子图之间的关系。因此,我们通过最小化LE = 1 /n∑ni = 1 H(Si)来规范簇分配的熵,其中H表示熵函数,Si是S的第i行。在训练期间,每层的LLP和LE 被加入到分类损失中。在实践中,我们观察到侧面目标的训练需要更长时间才能收敛,但仍然可以实现更好的性能和更可解释的聚类分配。
我们评估了DIFFPOOL对一些最先进的图形分类方法的好处,目的是回答以下问题:
Q1:与其他已提出的GNN池化方法(如使用排序池化 [39] 或 SET2SET 方法 [15])相比,DIFFPOOL如何?
Q2:与现有最好的图形分类任务模型(包括 GNN 和基于核的方法)相比,结合了 DIFFPOOL的GNN 如何?
Q3:DIFFPOOL是否在输入图上计算有意义且可解释的簇?
数据集。为了探究DIFFPOOL从不同域中的图形学习复杂层级结构的能力,我们评估了从图形分类中常用的基准中选择的各种相对较大的图形数据集[20]。 我们使用蛋白质数据集,包括ENZYMES,PROTEINS [3,12],D&D [10],社交网络数据集REDDIT-MULTI-12K [38]和科学协作数据集COLLAB [38]。有关统计信息和属性,请参阅附录A.对于所有这些数据集,我们随机抽样10%的图形用作验证集,其余图表用于执行10折交叉验证以评估模型性能。
模型配置。在我们的实验中,用于DIFFPOOL的GNN模型建立在GRAPHSAGE架构之上,因为我们发现这种架构与[21]中介绍的标准GCN方法相比具有更好的性能。我们使用GRAPHSAGE [16]的“mean”变体,并在我们的体系结构中每两个GRAPHSAGE层之后应用DIFFPOOL层。共有三个DIFFPOOL层用于D&D,REDDIT-MULTI-12K和COLLAB数据集,两个DIFFPOOL层用于ENZYMES和PROTEINS数据集。嵌入矩阵和分配矩阵分别由两个单独的GRAPHSAGE模型计算。在每个DIFFPOOL层,在应用DIFFPOOL之前,簇的数量设置为节点数的25%。批量标准化[18]应用于GRAPHSAGE的每一层之后。我们还发现,在每层的节点嵌入中添加“L2归一化”使训练更加稳定。在第4.2节中,我们还在STRUCTURE2VEC [7]架构上测试了DIFFPOOL的类似变体,以演示如何在其他GNN模型之上应用DIFFPOOL。所有型号都经过3000个周期的训练,在验证损失开始下降时应用早期停止。我们还评估了DIFFPOOL的两个简化版本:
•DIFFPOOL-DET,是一种DIFFPOOL模型,其中使用确定性图聚类算法生成分配矩阵[9]。
•DIFFPOOL-NOLP是DIFFPOOL的变体,其中连接预测部分目标已关闭。
在图形分类的性能比较中,我们考虑基于GNN的基线(结合不同的汇集方法)以及最先进的基于内核的方法。
基于GNN的方法。
•具有全局平均池化的GRAPHSAGE[16]。其他GNN变体(例如[21]中提出的变体)被省略,因为经验上GraphSAGE在任务中获得了更高的性能。
•STRUCTURE2VEC(S2V)[7]是一种先进的图形表示学习算法,它将潜变量模型与GNN结合起来,它使用全局平均池化。
•CNN中用于图形(ECC)的边缘条件过滤器[35]将边缘信息合并到GCN模型中,并使用图形粗化算法执行池化。
•PATCHYSAN [29]为每个节点定义一个感受域(邻域),并使用规范节点排序,对节点嵌入的线性序列应用卷积。
•SET2SET通过在SET2SET[37]中使用的聚合替换了传统GNN体系结构中的全局平均池化。在以前的工作中,Set2Set聚合的性能优于平均池化[15]。我们使用GRAPHSAGE作为基本GNN模型。
•SORTPOOL[39]应用GNN架构,然后执行单层软池化,然后对已排序的节点嵌入执行1D卷积。
对于所有GNN基线,我们使用原始作者在可能时报告的10倍交叉验证数。 对于GRAPHSAGE和SET2SET基线,我们使用基本实现和超参数扫描,如我们的DIFFPOOL方法。当基线方法没有必要的公布数字时,我们联系了原作者,并使用他们的代码(如果有的话)运行模型,根据原作者的指南执行超参数搜索。
基于内核的算法。我们使用GRAPHLET[34],SHORTEST-PATH[2],WEISFEILERLEHMAN内核(WL)[33]和WEISFEILER-LEHMAN OPTIMAL ASSIGNMENT KERNEL(WLOA)[22]作为内核基线。对于每个内核,我们计算了归一化的gram矩阵。我们使用LIBSVM[6]的C-SVM实现计算了分类精度,使用10倍交叉验证。 通过在训练折叠上进行的10倍交叉验证,从{10-3,10-2,...,102,103}中选择C参数。此外,对于WL和WL-OA,我们还从{0,...,5}中选择了迭代次数。
DIFFPOOL代码和所有已实施的基线将在发布前公布。
表1比较了DIFFPOOL与这些最先进的图表分类基线的性能。这些结果为我们的激励问题Q1和Q2提供了积极的答案:我们观察到我们的DIFFPOOL方法在GNN的所有池化方法中获得最高的平均性能,在基础GRAPHSAGE架构上平均提高了7.01%,并实现了 5个基准测试中有4个是最先进的。有趣的是,我们简化的模型变体DIFFPOOLDET在COLLAB基准测试中实现了最先进的性能。这是因为COLLAB中的许多协作图仅显示单层社区结构,可以使用预先计算的图形聚类算法[9]很好地捕获这些结构。
STRUCTURE2VEC的可微分池化。除了GRAPHSAGE之外,DIFFPOOL还可以应用于其他GNN体系结构,以捕获图形数据中的层次结构。为了进一步支持回答Q1,我们还在Structure2Vec(S2V)上应用了DIFFPOOL。我们使用具有三层架构的S2V进行了实验,如[7]中所述。在第一个变体中,在S2V的第一层之后应用一个DIFFPOOL层,并且在DIFFPOOL的输出之上堆叠另外两个S2V层。第二种变体分别在S2V的第一层和第二层之后应用一个DIFFPOOL层。在两种变体中,S2V模型用于计算嵌入矩阵,而GRAPHSAGE模型用于计算分配矩阵。
表2中总结了分类精度的结果。我们观察到DIFFPOOL显着改善了S2V在ENZYMES和D&D数据集上的性能。在其他数据集上也观察到类似的性能趋势。 结果表明,DIFFPOOL是一种池化层次结构的一般策略,可以使用不同的GNN架构。
运行时间。尽管应用DIFFPOOL需要额外计算分配矩阵,但我们观察到DIFFPOOL在实践中不会产生大量额外的运行时间。这是因为每个DIFFPOOL层通过提取图形的较粗略表示来减小图形的大小,这加速了下一层中的图形卷积操作。 具体而言,我们发现使用DIFFPOOL的GRAPHSAGE比使用SET2SET池化的GRAPHSAGE模型快12倍,同时在所有基准测试中仍然可以获得显着更高的准确度。
层级聚类结构。为了解决Q3,我们研究了DIFFPOOL通过可视化不同层中的聚类分配来学习有意义的节点聚类的程度。图2显示了COLLAB数据集图表中第一层和第二层中节点分配的可视化,其中节点颜色表示其聚类成员。节点聚类成员是通过获取其聚类分配概率的最大参数值来确定的。我们观察到即使在仅基于图形分类目标(即没有辅助连接预测目标)学习聚类分配时,DIFFPOOL仍然可以捕获层级结构。
密集与稀疏子图结构。此外,我们观察到DIFFPOOL学会以非均匀的方式将节点折叠成软簇,并且倾向于将密集连接的子图折叠成簇。由于GNN可以在密集的,类似clique的子图上有效地执行消息传递(由于它们的直径较小)[26],因此将这些密集子图中的节点聚合在一起不太可能导致任何结构信息的丢失。 这直观地解释了为什么崩溃的是密集的子图,因为DIFFPOOL会导致策略错误。 相比之下,稀疏子图可能包含许多有趣的结构,包括路径,循环和树状结构,并且由于稀疏性引起的高直径,GNN消息传递可能无法捕获这些结构。因此,通过分别聚合稀疏子图的不同部分,DIFFPOOL可以学习捕获稀疏图区域中存在的有意义的结构(例如,如图2所示)。
我们为GNN引入了一种可微分的池化方法,它能够提取真实图形的复杂层次结构。通过将提出的池化层与现有的GNN模型结合使用,我们在几个图形分类基准测试中获得了显著的效果。有趣的未来方向包括学习硬聚类分配以进一步降低更高层的计算成本,同时还确保可微分性,并将层级池化方法应用于需要对整个图形结构进行建模的其他下游任务。