Hierarchical Graph Representation Learning with Differentiable Pooling----《DiffPool:可微池化的层次图表示学习》
提出的问题:目前的神经网络是扁平的,只依靠边传递信息,无法以分层方式推断和聚合信息。并且DiffPool不希望先得到所有结点的embedding,然后再一次性得到图的表示,这种方式比较低效,而是希望通过一个逐渐压缩信息的过程就可以得到图的表示。
主要思想:模拟CNN中空间池化操作:
目标:使用 GNN 来提取对图分类有用的节点嵌入,以及提取对分层池化有用的节点嵌入
摘要
最近,图神经网络(GNN)通过有效学习节点嵌入彻底改变了图表示学习领域,并在节点分类和链接预测等任务中取得了最先进的结果。然而,当前的GNN方法本质上是扁平化的,不能学习图的层次表示——这一限制对于图分类任务来说尤其成问题,因为图分类的目标是预测与整个图相关联的标签。在这里,我们提出了DIFFPOOL,这是一个可微分的图池模块,可以生成图的层次表示,并可以与各种图神经网络结构在端到端方式的组合。DIFFPOOL 在深度图神经网络的每个层学习了一个可微的软集群分配,将节点映射到一组簇,然后形成下一个图神经网络层的粗化输入。我们的实验结果表明,与所有现有的池化方法相比,将现有的GNN方法与DIFFPOOL相结合,在图分类基准上平均提高了5-10%的准确性,,并在五个基准图分类任务中的四个上达到了新的最先进水平。
引言
近年来,人们对开发图神经网络(GNNs)产生了浓厚的兴趣。GNNs是一种通用的深度学习架构,可以操作图结构数据,如社交网络数据[16,22,37]或基于图的分子表示[7,11,15]。GNN 的一般方法是将底层图视为计算图,并学习通过在图上传递、转换和聚合节点特征信息来生成单个节点嵌入的神经网络原语 [15, 16]。然后,生成的节点嵌入可以用作任何可微预测层的输入,例如,用于节点分类[16]或链接预测[33],并且整个模型可以以端到端的方式进行训练。
然而,当前 GNN 架构的一个主要限制是它们本质上是扁平的,因为它们仅依赖图的边传播信息,并且无法以分层方式推断和聚合信息。例如,为了成功编码有机分子的图结构,理想情况下希望编码局部分子结构(例如,单个原子及其直接键)以及分子图的粗粒度结构(例如,代表分子中功能单元的原子和键的基团)。这种层次结构的缺乏对于图分类任务来说尤其成问题,因为图分类的目标是预测与整个图相关联的标签。将 GNN 应用于图分类时,标准方法是为图中的所有节点生成嵌入,然后将所有这些节点嵌入全局池化在一起,例如,使用在集合上运行的简单求和或神经网络 [7, 11, 15、26]。这种全局池化方法忽略了图中可能存在的任何层次结构,并且它阻止研究人员为整个图的预测任务构建有效的 GNN 模型。
在这里,我们提出了 DIFFPOOL,这是一种可微图池化模块,可以以分层和端到端的方式适应各种图神经网络架构(图 1)。DIFFPOOL 允许开发更深层次的 GNN 模型,可以学习图的层次表示。我们开发了 CNN 中空间池化操作的图形模拟 [24],它允许深度 CNN 架构对图像的越来越粗略的表示进行迭代操作。与标准的 CNN 相比,GNN 设置的挑战在于图不包含空间局域性的自然概念,也就是说,不能简单地将图上的所有节点汇集在一个“m × m patch”中,因为图的复杂拓扑结构排除了任何直接的、确定性的 “patch” 定义。此外,与图像数据不同的是,图数据集通常包含节点和边数不同的图,这使得定义一个通用的图池化操作更加具有挑战性。
为了解决上述挑战,我们需要一个模型来学习如何将节点聚集在一起,以在底层图之上构建分层的多层支架。我们的方法 DIFFPOOL 在深度 GNN 的每一层学习可微的软分配,根据学习到的嵌入将节点映射到一组集群。在此框架中,我们通过以分层方式“堆叠”GNN 层来生成深度 GNN(图 1):第
l
l
l 层 GNN 模块的输入节点对应于第
l
−
1
l - 1
l−1 层 GNN 模块学习的集群。因此,DIFFPOOL 的每一层都会使输入图越来越粗化,并且 DIFFPOOL 能够在训练后生成任何输入图的层次表示。我们展示了DIFFPOOL可以与各种图神经网络方法结合,导致准确性平均提高了7%,并在五个基准图分类任务中的四个上达到了新的最先进水平。最后,我们展示DIFFPOOL可以学习到与输入图中的明确定义的社区相对应的可解释的分层聚类。
相关工作
我们的工作建立在最近关于图神经网络和图分类的大量研究的基础上。
一般的图神经网络
近年来,人们提出了各种各样的图神经网络(GNN)模型,包括受卷积神经网络[5、8、11、16、22、25、30、37]、循环神经网络[26]启发的方法,递归神经网络 [1, 31] 和循环信念传播 [7]。这些方法大部分都符合Gilmer等人[15]提出的“神经信息传递”框架。在消息传递框架中,GNN被视为一种消息传递算法,其中节点表示是使用可微聚合函数从其邻近节点的特征迭代地计算出来的。Hamilton等人[17]对这一领域的最新进展进行了概念性的回顾,Bronstein等人[4]概述了与谱图卷积的联系。
图神经网络的图分类
GNN 已应用于各种任务,包括节点分类 [16, 22]、链接预测 [32]、图分类 [7,11, 41] 和化学信息学 [29,28,14,19,33]。在图分类(我们在这里研究的任务)的背景下,应用 GNN 的一个主要挑战是从节点嵌入到整个图的表示。解决这个问题的常见方法包括简单地对最后一层[11]中的所有节点嵌入求和或平均,引入一个“虚拟节点”,该节点连接到图[26]中的所有节点,或使用在集合[15]上运行的深度学习体系结构聚合节点嵌入。然而,所有这些方法都有其局限性,即它们不能学习层次表示(即,所有节点嵌入全局地集中在一个单层中),因此无法捕获许多真实世界图形的自然结构。一些最近的方法也提出将CNN架构应用于所有节点嵌入的连接[30,41],但这需要指定(或学习)节点的规范排序,这通常非常困难,相当于求解图的同构。
最后,最近有一些研究通过结合 GNN 和确定性图聚类算法来学习层次图表示[8,36,13],遵循两阶段方法。然而,与前面的这些方法不同的是,我们试图以端到端的方式学习层次结构,而不是依赖于确定性图聚类子例程。
方法
DIFFPOOL 的关键思想是,它通过提供可微模块来分层池化图节点,从而能够构建深层、多层 GNN 模型。在本节中,我们概述了 DIFFPOOL 模块,并展示了它如何在深度 GNN 架构中应用。
准备工作
我们将图 G G G 表示为 ( A , F ) (A,F) (A,F),其中 A ∈ { 0 , 1 } n × n A \in {\{ 0,1\} ^{n \times n}} A∈{0,1}n×n 是邻接矩阵, F ∈ R n × d F \in {R^{n \times d}} F∈Rn×d 是节点特征矩阵,假设每个节点有 d d d 个特征。给定一组标记图 D = { ( G 1 , y 1 ) , ( G 2 , y 2 ) , . . . } D = \{ ({G_1},{y_1}),({G_2},{y_2}),...\} D={(G1,y1),(G2,y2),...},其中 y i ∈ Y {y_i} \in Y yi∈Y 是对应于图 G i ∈ G {G_i} \in G Gi∈G 的标签,图分类的目标是学习映射 f : G → Y f:G \to Y f:G→Y 将图映射到标签集。与标准监督机器学习设置相比,挑战在于我们需要一种方法从这些输入图中提取有用的特征向量。也就是说,为了应用标准机器学习方法进行分类,例如神经网络,我们需要一个过程将每个图转换为 R D {R^D} RD 中的有限维向量。
图神经网络
在这项工作中,我们建立在图神经网络的基础上,以便以端到端的方式学习有用的图分类表示。特别是,我们考虑采用以下通用“消息传递”架构的 GNN:
H ( k ) = M ( A , H ( k − 1 ) ; θ ( k ) ) {H^{(k)}} = M(A,{H^{(k - 1)}};{\theta ^{(k)}}) H(k)=M(A,H(k−1);θ(k)) (1)
其中,
H
(
k
)
∈
R
n
×
d
{H^{(k)}} \in {R^{n \times d}}
H(k)∈Rn×d 是在 GNN 的
k
k
k 个步骤之后计算的节点嵌入(即“消息”),
M
M
M 是消息传播函数,这取决于邻接矩阵、可训练参数
θ
(
k
)
{\theta ^{(k)}}
θ(k) 以及先前消息传递步骤生成的节点嵌入
H
(
k
−
1
)
{H^{(k - 1)}}
H(k−1)。在初始消息传递迭代(
k
=
1
k = 1
k=1)时,使用图上的节点特征对输入节点嵌入
H
(
0
)
{H^{(0)}}
H(0) 进行初始化,即
H
(
0
)
=
F
{H^{(0)}} = F
H(0)=F。
消息传播函数
M
M
M 有很多可能的实现[15,16]。例如,GNNs 的一个流行变体–kipf等人的[22]图卷积网络(GCNs)–结合线性变换和ReLU非线性实现
M
M
M:
H ( k ) = M ( A , H ( k − 1 ) ; W ( k ) ) = R e L U ( D ~ − 1 2 A ~ D ~ − 1 2 H ( k − 1 ) W ( k − 1 ) ) {H^{(k)}} = M(A,{H^{(k - 1)}};{W^{(k)}}) = {\mathop{\rm Re}\nolimits} LU({\tilde D^{ - \frac{1}{2}}}\tilde A{\tilde D^{ - \frac{1}{2}}}{H^{(k - 1)}}{W^{(k - 1)}}) H(k)=M(A,H(k−1);W(k))=ReLU(D~−21A~D~−21H(k−1)W(k−1))
其中,
A
~
=
A
+
I
\tilde A = A + I
A~=A+I,
D
~
=
∑
j
A
~
i
j
\tilde D = \sum\nolimits_j {{{\tilde A}_{ij}}}
D~=∑jA~ij 且
W
(
k
)
∈
R
d
×
d
{W^{(k)}} \in {R^{d \times d}}
W(k)∈Rd×d 是可训练的权重矩阵。我们提出的可微分池模型可以应用于任何实现等式(1)的 GNN 模型,并且与
M
M
M 的实现方式无关。
完整的 GNN 模块将运行方程 (1) 的
K
K
K 次迭代,以生成最终的输出节点嵌入
Z
=
H
(
K
)
∈
R
n
×
d
Z = {H^{(K)}} \in {R^{n \times d}}
Z=H(K)∈Rn×d,其中
K
K
K 通常在 2-6 范围内。为了简单起见,在下面的章节中,我们将抽象 GNN 的内部结构,并使用
Z
=
G
N
N
(
A
,
X
)
Z = GNN(A,X)
Z=GNN(A,X) 表示任意 GNN 模块,根据一些邻接矩阵
A
A
A 和初始输入节点特征
X
X
X,实现消息传递的
K
K
K 次迭代。
堆叠 GNN 和池化层
实现方程 (1) 的 GNN 本质上是扁平的,因为它们仅跨图的边传播信息。这项工作的目标是定义一种通用的、端到端的可微分策略,允许以分层方式堆叠多个 GNN 模块。形式上,给定 Z = G N N ( A , X ) Z = GNN(A,X) Z=GNN(A,X)、GNN 模块的输出和图邻接矩阵 A ∈ R n × n A \in {R^{n \times n}} A∈Rn×n,我们寻求定义一种策略来输出包含 m < n m < n m<n 个节点的新粗化图,并具有加权邻接矩阵 A ′ ∈ R m × m A' \in {R^{m \times m}} A′∈Rm×m 和节点嵌入 Z ′ ∈ R m × d Z' \in {R^{m \times d}} Z′∈Rm×d。然后,这个新的粗化图可以用作另一个 GNN 层的输入,整个过程可以重复 L L L 次,生成一个具有 L L L 个 GNN 层的模型,该模型对输入图的一系列越来越粗的版本进行操作(图 1) 。因此,我们的目标是学习如何使用 GNN 的输出对节点进行聚类或池化,以便我们可以使用这个粗化图作为另一个 GNN 层的输入。与通常的图粗化任务相比,为 GNN 设计这样一个池化层特别具有挑战性,因为我们的目标不是简单地对一个图中的节点进行聚类,而是提供一个通用方法,在广泛的输入图集合上分层地池化节点。也就是说,我们需要我们的模型学习一种池化策略,该策略可以跨具有不同节点和边的图进行泛化,并且可以在推理过程中适应各种图结构。
通过学习分配进行可微分池化
我们提出的方法DIFFPOOL通过使用GNN模型的输出来学习节点上的聚类分配矩阵,从而解决了上述挑战。关键的直觉是,我们堆叠 L L L 个 GNN 模块,并学习使用从第 l − 1 l - 1 l−1 层 GNN 生成的嵌入,以端到端的方式将节点分配给第 l l l 层的集群。因此,我们使用 GNN 来提取对图分类有用的节点嵌入,以及提取对分层池化有用的节点嵌入。通过这种构造,DIFFPOOL中的GNN学习编码一种通用的池化策略,这对于大量的训练图是有用的。我们首先描述 DIFFPOOL 模块如何在给定分配矩阵的情况下池化每一层的节点;接下来,我们讨论如何使用 GNN 架构生成分配矩阵。
使用分配矩阵进行池化
我们将第
l
l
l 层学习到的聚类分配矩阵表示为
S
(
l
)
∈
R
n
l
×
n
l
+
1
{S^{(l)}} \in {R^{{n_l} \times {n_{l + 1}}}}
S(l)∈Rnl×nl+1。
S
(
l
)
{S^{(l)}}
S(l) 的每一行对应于第
l
l
l 层的
n
l
{{n_l}}
nl 个节点(或簇)之一,
S
(
l
)
{S^{(l)}}
S(l) 的每一列对应于下一层
l
+
1
{{l + 1}}
l+1 的
n
l
+
1
{{n_{l + 1}}}
nl+1 个簇之一。直观地说,
S
(
l
)
{S^{(l)}}
S(l) 将第
l
l
l 层的每个节点软分配到下一个粗化层
l
+
1
{{l + 1}}
l+1 中的簇。
假设
S
(
l
)
{S^{(l)}}
S(l) 已经计算出来,即我们已经计算了模型第
l
l
l 层的分配矩阵。我们将这一层的输入邻接矩阵表示为
A
(
l
)
{A^{(l)}}
A(l),将这一层的输入节点嵌入矩阵表示为
Z
(
l
)
{Z^{(l)}}
Z(l)。给定这些输入,DIFFPOOL 层
(
A
(
l
+
1
)
,
X
(
l
+
1
)
)
=
D
I
F
F
P
O
O
L
(
A
(
l
)
,
Z
(
l
)
)
{({A^{(l + 1)}},{X^{(l + 1)}}) = DIFFPOOL({A^{(l)}},{Z^{(l)}})}
(A(l+1),X(l+1))=DIFFPOOL(A(l),Z(l)) 粗化输入图,生成新的粗化邻接矩阵
A
(
l
+
1
)
{A^{(l + 1)}}
A(l+1) 以及该粗化图中每个节点/簇的新嵌入矩阵
X
(
l
+
1
)
{X^{(l + 1)}}
X(l+1)。特别地,我们应用以下两个方程:
X ( l + 1 ) = S ( l ) T Z ( l ) ∈ R n l + 1 × d {X^{(l + 1)}} = {S^{(l)}}^T{Z^{(l)}} \in {R^{{n_{l + 1}} \times d}} X(l+1)=S(l)TZ(l)∈Rnl+1×d (3)
A ( l + 1 ) = S ( l ) T A ( l ) S ( l ) ∈ R n l + 1 × n l + 1 {A^{(l + 1)}} = {S^{(l)}}^T{A^{(l)}}{S^{(l)}} \in {R^{{n_{l + 1}} \times {n_{l + 1}}}} A(l+1)=S(l)TA(l)S(l)∈Rnl+1×nl+1 (4)
其中,方程(3)接受节点嵌入
Z
(
l
)
{Z^{(l)}}
Z(l),根据集群分配矩阵
S
(
l
)
{S^{(l)}}
S(l) 聚合这些嵌入,为
n
l
+
1
{{n_{l + 1}}}
nl+1 个集群生成嵌入。同样,方程(4)接受邻接矩阵
A
(
l
)
{A^{(l)}}
A(l),生成一个粗化的邻接矩阵,表示每对集群之间的连接强度。
通过式(3)和(4),DIFFPOOL层对图进行粗化:下一层邻接矩阵
A
(
l
+
1
)
{A^{(l + 1)}}
A(l+1) 表示具有
n
l
+
1
{{n_{l + 1}}}
nl+1 个节点或簇节点的粗化图,其中新粗化后的每个单独的簇节点图对应于图中第
l
l
l 层的节点簇。注意,
A
(
l
+
1
)
{A^{(l + 1)}}
A(l+1) 是一个实数矩阵,表示一个全连接的边加权图;每个元素
A
i
j
(
l
+
1
)
{A_{ij}}^{(l + 1)}
Aij(l+1) 可以被视为簇
i
i
i 和簇
j
j
j 之间的连接强度。类似地,
X
(
l
+
1
)
{X^{(l + 1)}}
X(l+1)的第
i
i
i 行对应于簇
i
i
i 的嵌入。粗化的邻接矩阵
A
(
l
+
1
)
{A^{(l + 1)}}
A(l+1) 和簇嵌入
X
(
l
+
1
)
{X^{(l + 1)}}
X(l+1) 可以一起用作另一个 GNN 层的输入,我们将在下面详细描述这个过程。
学习分配矩阵
下面我们描述了DIFFPOOL的体系结构,即DIFFPOOL如何生成式(3)和式(4)中使用的分配矩阵 S ( l ) {S^{(l)}} S(l) 和嵌入矩阵 Z ( l ) {Z^{(l)}} Z(l)。我们使用两个独立的 GNN 生成这两个矩阵,它们都应用于输入集群节点特征 X ( l ) {X^{(l)}} X(l) 和粗化邻接矩阵 A ( l ) {A^{(l)}} A(l)。在第 l l l 层嵌入的GNN是一个标准的GNN模块,应用于这些输入:
Z ( l ) = G N N l , e m b e d ( A ( l ) , X ( l ) ) {Z^{(l)}} = GN{N_{l,embed}}({A^{(l)}},{X^{(l)}}) Z(l)=GNNl,embed(A(l),X(l)) (5)
即,我们取 l l l 层的集群节点之间的邻接矩阵(从公式4)和集群的集合特征(从公式3),并通过标准GNN将这些矩阵传递给集群节点以获得新的嵌入 Z ( l ) {Z^{(l)}} Z(l)。相比之下,第 l l l 层的池化 GNN 使用输入聚类特征 X ( l ) {X^{(l)}} X(l) 和聚类邻接矩阵 A ( l ) {A^{(l)}} A(l) 生成分配矩阵:
S ( l ) = s o f t max ( G N N l , p o o l ( A ( l ) , X ( l ) ) ) {S^{(l)}} = soft\max (GN{N_{l,pool}}({A^{(l)}},{X^{(l)}})) S(l)=softmax(GNNl,pool(A(l),X(l))) (6)
其中,softmax函数以逐行的方式应用。
G
N
N
l
,
p
o
o
l
GN{N_{l,pool}}
GNNl,pool 的输出维度对应于第
l
l
l 层中预定义的最大簇数,并且是模型的超参数。
请注意,这两个 GNN 使用相同的输入数据,但具有不同的参数化并发挥不同的作用:嵌入 GNN 为该层的输入节点生成新的嵌入,而池化 GNN 生成输入节点到
n
l
+
1
{n_{l + 1}}
nl+1 个簇的概率分配。
在基本情况下,在第
l
=
0
l = 0
l=0 层中,等式(5)和等式(6)的输入只是原始图的输入邻接矩阵
A
A
A 和节点特征
F
F
F。在使用 DIFFPOOL 的深度 GNN 模型的倒数第二层
L
−
1
L - 1
L−1,我们将分配矩阵
S
(
L
−
1
)
{S^{(L - 1)}}
S(L−1) 设置为 1 的向量,即,最后一层
L
L
L 只有单个簇,生成对应于整个图的最终嵌入向量。然后,最终的输出嵌入可以用作可微分分类器(例如,softmax 层)的特征输入,并且可以使用随机梯度下降对整个系统进行端到端训练。
排列不变性
请注意,为了对图进行分类,池化层应该在节点置换下是不变的。对于DIFFPOOL,我们表明基于DIFFPOOL的任何深度GNN模型在组件GNN是置换不变的情况下也是置换不变的。
辅助链接预测目标和熵正则化
在实践中,仅使用图分类任务中的梯度信号来训练池化 GNN(公式 4)可能很困难。直观上,我们有一个非凸优化问题,并且在训练早期将池化 GNN 推离虚假局部最小值可能很困难。为了缓解这个问题,我们使用辅助链接预测目标来训练池化 GNN,该目标编码了附近节点应该池化在一起的规则。特别地,在每一层
l
l
l,我们最小化
L
L
P
=
∥
A
(
l
)
,
S
(
l
)
S
(
L
)
T
∥
F
{L_{LP}} = {\left\| {{A^{(l)}},{S^{(l)}}{S^{{{(L)}^T}}}} \right\|_F}
LLP=
A(l),S(l)S(L)T
F,其中
∥
⋅
∥
F
{\left\| \cdot \right\|_F}
∥⋅∥F 表示Frobenius范数。请注意,更深层的邻接矩阵
A
(
l
)
{A^{(l)}}
A(l) 是较低层分配矩阵的函数,并在训练期间发生变化。
池化GNN(公式4)的另一个重要特征是,每个节点的输出集群分配通常应该接近一个热向量,这样每个集群或子图的成员关系就被清楚地定义了。因此,我们通过最小化
L
E
=
1
n
∑
i
=
1
n
H
(
S
i
)
{L_E} = \frac{1}{n}\sum\nolimits_{i = 1}^n {H({S_i})}
LE=n1∑i=1nH(Si) 来正则化集群分配的熵,其中
H
H
H 表示熵函数,
S
i
{{S_i}}
Si 是
S
S
S 的第
i
i
i 行。
训练时,将各层的
L
L
P
{L_{LP}}
LLP 和
L
E
{L_E}
LE 加入到分类损失中。在实践中,我们观察到,带有辅助目标的训练需要更长的时间才能收敛,但仍然实现了更好的性能和更可解释的集群分配。
实验
我们根据许多最先进的图分类方法评估 DIFFPOOL 的优势,目的是回答以下问题:
Q1:DIFFPOOL和其他的pooling方法相比怎么样?(如sort pooling和SET2SET方法)
Q2:DIFFPOOL与GNNs的结合与图分类任务(包括GNNs和基于核的方法)的最新技术相比如何?
Q3:DIFFPOOL是否可以得到输入图上有意义,可解释的cluster?
数据集:我们使用的蛋白质数据集包括 ENZYMES、PROTEINS [3, 12]、D&D [10]、社交网络数据集 REDDIT-MULTI-12K [40] 和科学协作数据集 COLLAB [40]。对于所有这些数据集,我们执行 10 倍交叉验证来评估模型性能,并报告 10 倍以上的平均准确度。
模型配置
在实验中,用于DIFFPOOL的GNN模型是建立在GraphSAGE架构之上的。使用GraphSAGE的“mean”聚合函数,并在每两个GraphSAGE层之后应用一个DIFFPOOL层。在数据集上总共使用了2个DIFFPOOL层。对于ENZYMES和COLLAB这样的小数据集,1个DIFFPOOL层可以达到类似的性能。每个DIFFPOOL层之后,在下一个DIFFPOOL层之前执行3层图卷积层。分别用两种不同的稀疏的GraphSAGE模型计算嵌入矩阵和分配矩阵。在 2 个DIFFPOOL层的架构中,cluster数量设置为应用DIFFPOOL之前节点数量的25%,而在1个DIFFPOOL层的架构中,cluster数量设置为节点数的10%。Batch normalization在GraphSAGE的每一层之后应用。实验还发现,在每一层的节点embedding中添加一个来l2正则化可以使训练更加稳定。所有的模型都经过了3000个epoch的训练,当验证损失开始减少时,会提前停止。执行10-fold交叉验证来评估模型性能。
图分类的结果
一个观察结果是,尽管性能有了显著的提高,但是DIFFPOOL在训练的过程中可能是不稳定的,而且在不同的运行中,即使使用相同的超参数设置,准确性也会有显著的变化。增加链接预测使训练更加稳定,降低了不同训练中精度的标准差。
我们观察到 DIFFPOOL 显着提高了 S2V 在 ENZYMES 和 D&D 数据集上的性能。在其他数据集上也观察到类似的性能趋势。结果表明,DIFFPOOL 是一种池化分层结构的通用策略,可以使不同的 GNN 架构受益。
分层集群结构
为了解决问题 3,我们通过可视化不同层中的集群分配来研究 DIFFPOOL 学习有意义的节点集群的程度。图 2 显示了 COLLAB 数据集图表中第一层和第二层节点分配的可视化,其中节点颜色表示其集群成员资格。节点集群成员资格是通过取其集群分配概率的 argmax 来确定的。我们观察到,即使仅基于图分类目标学习聚类分配,DIFFPOOL 仍然可以捕获分层社区结构。我们还观察到,通过链接预测辅助目标,成员分配质量显着提高。
密集与稀疏子图结构
此外,我们观察到 DIFFPOOL 学习以非均匀方式将节点折叠成软簇,并且倾向于将密集连接的子图折叠成簇。由于 GNN 可以在密集的、类似派系的子图上有效地执行消息传递(由于它们的直径较小)[27],因此将如此密集的子图中的节点汇集在一起不太可能导致结构信息的任何丢失。这直观地解释了为什么折叠密集子图对于 DIFFPOOL 来说是一种有用的池化策略。相反,稀疏子图可能包含许多有趣的结构,包括路径、循环和树状结构,并且考虑到稀疏性引起的高直径,GNN 消息传递可能无法捕获这些结构。因此,通过单独池化稀疏子图的不同部分,DIFFPOOL 可以学习捕获稀疏图区域中存在的有意义的结构(例如,如图 2 所示)。
具有相似表示的节点的分配
由于分配网络根据输入节点及其邻居的特征计算软聚类分配,因此具有相似输入特征和邻居结构的节点将具有相似的聚类分配。事实上,我们可以构建综合情况,其中 2 个节点虽然相距较远,但自身和所有邻居具有完全相同的邻域结构和特征。在这种情况下,池化网络被迫将它们分配到同一个集群中,这与图像ConvNets等其他架构中的池化概念不同。在某些情况下,我们确实观察到断开连接的节点被汇集在一起。
在实践中,我们依赖类似于 GraphSAGE [16] 中定理 1 的可识别性假设,其中节点可以通过其特征进行识别。这在许多真实数据集中都成立。据观察,辅助链路预测目标还有助于阻止远处的节点聚集在一起。此外,可以使用更复杂的 GNN 聚合函数,例如高阶矩 [38] 来区分结构和特征空间相似的节点。总体框架保持不变。
预定义最大簇数的灵敏度
我们发现分配根据网络深度和最大簇数 C 的不同而变化。使用更大的 C,池化 GNN 可以建模更复杂的层次结构。代价是,太大的 C 会导致更多的噪声和更低的效率。尽管 C 的值是预定义的参数,但池化网络通过端到端训练学习使用适当数量的簇。特别是,某些簇可能不会被分配矩阵使用。与未使用的簇相对应的列对于所有节点都具有较低的值。这可以在图 2 c中观察到,其中节点主要分配到 3 个集群中。
结论
我们为 GNN 引入了一种可微分池化方法,能够提取现实世界图的复杂层次结构。通过将所提出的池化层与现有的 GNN 模型结合使用,我们在多个图分类基准上取得了最新的结果。未来研究方向包括学习硬簇分配以进一步降低更高层的计算成本,同时确保可微性,并将分层池方法应用于需要对整个图结构进行建模的其他下游任务。
图的层级表示
图的层级表示通常指的是在图结构中,节点之间存在不同层次或级别的关系,并通过这些关系形成层级结构。在图理论和网络科学中,图的层级结构可以帮助理解和描述复杂系统中元素之间的组织和交互。
在层级图中,通常会存在多个层次,每个层次代表了一种抽象水平或者关系的密度。例如,在社交网络中,可以通过用户之间的好友关系构建图,然后根据不同的关系强度或者用户的共同兴趣将图分为不同的层级。这样的层级表示有助于理解社交网络中的社群结构和用户之间的关系。
在某些图数据库和图分析工具中,也可能提供对图进行层级分析和层级查询的功能,以便更好地理解和操作图结构。层级表示对于理解复杂系统中元素之间的关系和结构非常有价值。