论文:How Powerful are Graph Neural Networks?
作者:来自于斯坦福的Keyulu Xu,Weihua Hu,Jure Leskovec等人
来源:ICLR 2019的Oral文章
论文链接:https://arxiv.org/pdf/1810.00826.pdf
github链接:https://github.com/weihua916/powerful-gnns
GNN目前主流的做法是递归迭代聚合一阶邻域表征来更新节点表示,如GCN和 GraphSAGE,但这些方法大多是经验主义,缺乏理论去理解GNN到底做了什么,还有什么改进空间。本文基于Weisfeiler-Lehman(WL) test 视角理论分析了GNN,本文的贡献:
文中提出了一个理论框架去分析GNNs的表达能力。在学习表示和区分不同的图结构时,描述了不同GNN变体的表达能力。Weisfeiler-Lehman 图同构测试(1968)(WL)是一种强大的检验方法,可以区分大量的图。与GNNs类似,WL测试通过聚集网络邻居的特征向量迭代地更新给定节点的特征向量。WL测试之所以如此强大,是因为它的单射聚合更新将不同的节点邻居映射到不同的特征向量。作者的主要观点是,如果GNN的聚合方案具有高度表达性,并且能够对单射函数建模,那么GNN可以具有与WL测试同样大的区分能力。
为了在数学上形式化上述观点,文中提出的框架首先将给定节点的邻居的特征向量集表示为一个multiset,即,一个可能有重复元素的集合。然后,可以将GNNs中的邻居聚合看作是multiset上的聚合函数。因此,为了拥有强大的表示能力,GNN必须能够将不同的multiset聚合到不同的表示中。文中严格地研究了multiset函数的几个变体,并从理论上描述了它们的区分能力,即,不同的聚合函数如何区分不同的multiset。multiset函数的判别能力越强,GNN的表示能力就越强。
GNNs的表达能力是捕获图结构的关键。文中通过在图分类数据集上的实验来验证理论,对比了使用各种聚合函数的GNNs的性能。
实验结果表明,在作者的理论中最强大的GNN,即图同构网络(GIN),根据经验判断也具有很高的表示能力,因为它几乎完全适合训练数据,而较弱的GNN变体往往严重不适合训练数据。此外,这种表达能力更强的GNN在测试集精度方面优于其他GNNs,并且在许多图分类benchmarks上实现了最先进的性能。
multiset是一个广义的集合概念,它允许有重复的元素。更正式地说,一个multiset是一个2元组 X = ( S , m ) X=(S, m) X=(S,m),其中 S S S是由 X X X的不同的元素组成的子集, m : S → N ≥ 1 m: S \rightarrow \mathbb{N}_{\geq 1} m:S→N≥1表示了元素的多样性。文中的multiset就是节点邻居的特征向量集。
在数学里,单射函数为一函数,其将不同的引数连接至不同的值上。更精确地说,函数f被称为是单射时,对每一值域内的y,存在至多一个定义域内的x使得f(x) = y。
另一种说法为,f为单射,当f(a) = f(b),则a = b(若a≠b,则f(a)≠f(b)),其中a、b属于定义域。
单射在某些书中也叫入射,可理解成“原不同则像不同”。
GNNs的目标是以图结构数据和节点特征作为输入,以学习到节点(或图)的表示,用于分类任务。
基于邻域聚合的GNN可以拆分为以下三个模块:
目前的GNNs都遵循一个邻居聚合的策略,也就是通过聚合邻居的表示然后迭代地更新自己的表示。在 k k k次迭代聚合后就可以捕获到在k-hop邻居内的结构信息。一个 k k k层的GNNs可以表示为:
a v ( k ) = AGGREGATE ( k ) ( { h u ( k − 1 ) : u ∈ N ( v ) } ) , h v ( k ) = COMBINE ( k ) ( h v ( k − 1 ) , a v ( k ) ) (1) \tag{1} a_{v}^{(k)}=\operatorname{AGGREGATE}^{(k)}\left(\left\{h_{u}^{(k-1)}: u \in \mathcal{N}(v)\right\}\right), \quad h_{v}^{(k)}=\operatorname{COMBINE}^{(k)}\left(h_{v}^{(k-1)}, a_{v}^{(k)}\right) av(k)=AGGREGATE(k)({hu(k−1):u∈N(v)}),hv(k)=COMBINE(k)(hv(k−1),av(k))(1)
因此,可以看出AGGREGATE聚合函数和COMBINE连接函数是非常重要的。
GraphSAGE里的pooling AGGREGATE函数为:
a v ( k ) = MAX ( { ReLU ( W ⋅ h u ( k − 1 ) ) , ∀ u ∈ N ( v ) } ) (2) \tag{2} a_{v}^{(k)}=\operatorname{MAX}\left(\left\{\operatorname{ReLU}\left(W \cdot h_{u}^{(k-1)}\right), \forall u \in \mathcal{N}(v)\right\}\right) av(k)=MAX({ReLU(W⋅hu(k−1)),∀u∈N(v)})(2)
其中 W W W是一个可学习的矩阵。COMBINE步骤可以是一个连接,然后是一个线性映射 W ⋅ [ h v ( k − 1 ) , a v ( k ) ] W \cdot\left[h_{v}^{(k-1)}, a_{v}^{(k)}\right] W⋅[hv(k−1),av(k)]。
GCN论文中的AGGREGATEHE(是一个mean pooling)和COMBINE步骤为:
h v ( k ) = ReLU ( W ⋅ MEAN { h u ( k − 1 ) , ∀ u ∈ N ( v ) ∪ { v } } ) (3) \tag{3} h_{v}^{(k)}=\operatorname{ReLU}\left(W \cdot \operatorname{MEAN}\left\{h_{u}^{(k-1)}, \forall u \in \mathcal{N}(v) \cup\{v\}\right\}\right) hv(k)=ReLU(W⋅MEAN{hu(k−1),∀u∈N(v)∪{v}})(3)
文中有两类任务:节点分类和图分类。
对于节点分类问题,节点在最后一层的表示 h v ( K ) h_{v}^{(K)} hv(K),就可以用于预测。
对于图分类问题,需要将graph中所有节点特征转变成graph特征,整个图的表示 h G h_G hG:
h G = READOUT ( { h v ( K ) ∣ v ∈ G } ) (4) \tag{4} h_{G}=\operatorname{READOUT}\left(\left\{h_{v}^{(K)} | v \in G\right\}\right) hG=READOUT({hv(K)∣v∈G})(4)
READOUT表示一个置换不变性函数(permutation invariant function),也可以是一个图级pooling函数,可参考
图的同构测试问题就是判断两个图的拓扑结构是否等价。这是一个非常有挑战的问题,到目前为止,没有一个线性时间内可以解决的算法。除了一些极端情况(Cai等人,1992),Weisfeler-Lehman (WL)图同构测试是一种有效的、计算效率高的方法,它可以区分很多类图。它的一维形式“naïve vertex refinement”类似于GNNs中的邻居聚合。
Weisfeler-Lehman迭代进行以下操作得到节点新标签以判断同构性:
例如如下图经过两次迭代后,可以由以节点1为根节点的子树来表示节点1新标签
再看一个WL test的例子
WL test的复杂度是O(hm),其中h为iteration次数,m是一次iteration里multiset的个数。
这段解释来自论文:Weisfeiler-Lehman Graph Kernels(作者Shervashidze等人,2011)
Shervashidze等人在WL的基础上提出了度量图之间相似性的WL subtree kernel。即使用WL测试中不同迭代的节点标签的数量作为图的特征向量。
WL测试第k次迭代后节点的标签可以用以高度为k的子树来表示(如图1)。
令两个图 G 1 G_1 G1和 G 2 G_2 G2是任意两个非同构的图。如果存在一个图神经网络: A : G → R d \mathcal{A}: \mathcal{G} \rightarrow \mathbb{R}^{d} A:G→Rd将图 G 1 G_1 G1和 G 2 G_2 G2映射到不同的embedding。那么通过图
Weisfeiler-Lehman同构测试也可以确定图 G 1 G_1 G1和 G 2 G_2 G2是非同构的。
证明过程在文中的附录部分。也就是说一个基于图的GNN区分不同的图的能力至多有图
Weisfeiler-Lehman同构测试那么强大。
由定理2可知存在这样一个问题,是否存在一种GNNs与WL测试一样强大?在定理3中,答案是肯定的:如果邻居Aggregate函数和Readout函数是单射的,那么得到的GNN与WL测试一样强大。
令 A : G → R d \mathcal{A}: \mathcal{G} \rightarrow \mathbb{R}^{d} A:G→Rd是一个GNN。对于两个通过Weisfeiler-Lehman同构测试测定为不同构的两个图 G 1 G_1 G1和 G 2 G_2 G2,在GNN层足够多的情况下,如果下面的情况成立,则通过GNN可以将这两个图映射到不同的embedding:
(1) A \mathcal{A} A用下面的公式迭代的聚合和更新节点特征:
h v ( k ) = ϕ ( h v ( k − 1 ) , f ( { h u ( k − 1 ) : u ∈ N ( v ) } ) ) (5) \tag{5} h_{v}^{(k)}=\phi\left(h_{v}^{(k-1)}, f\left(\left\{h_{u}^{(k-1)}: u \in \mathcal{N}(v)\right\}\right)\right) hv(k)=ϕ(hv(k−1),f({hu(k−1):u∈N(v)}))(5)
证明过程在文中的附录部分。
接下来,使用这个推理来构建一个功能最强大的GNN。后面部分还研究了目前主流的GNN变体,发现它们的聚合方案本质上不是单射的,因此功能更弱,但是它们可以捕获图的其他有趣特征。
为了研究GNN的表示能力,可以分析GNN将两个节点映射到embedding空间的同一位置时的表示能力,所以可以将分析简化为这样一个问题:GNN是否可以将不同的图结构映射(即两个multisets)到相同的embedding。这种将任意两个不同的图映射到不同embedding的能力意味着要解决具有挑战性的图同构问题。也就是说,希望同构图的embedding相同,非同构图的embedding不同。一个强大的GNN不会将两个不同的邻域映射到相同的表示,这意味着它的聚合模式必须是单射的(injective)。因此,文中将一个GNN的聚合方案抽象为一类神经网络可以表示的multisets上函数。
除了区分不同的图之外,GNN还有一个值得讨论的重要优点,即捕获图结构的相似性。WL测试中的节点特征向量本质上是one-hot编码,因此不能捕获子树之间的相似性。相反,满足定理3的GNN通过学习将子树嵌入到低维空间来推广WL测试。这使得GNN不仅能够区分不同的结构,而且还能够学习将类似的图结构映射到类似的 embeddings,并捕获图结构之间的依赖关系。
文中提出了一个网络架构,Graph Isomorphism Network (GIN) 图同构网络,这个网络满足Theorem 3的条件。该模型对WL测试进行了推广,从而在GNNs中鉴别能力最强。
作者接着证明提出定理5和推论6,当X为可数时,将aggregate设置为sum, combine 设置为 1 + ϵ 1+\epsilon 1+ϵ时,会存在 f ( x ) f(x) f(x),使 h ( c , X ) h(c,X) h(c,X)为单射:
h ( c , X ) = ( 1 + ϵ ) ⋅ f ( c ) + ∑ x ∈ X f ( x ) h(c, X)=(1+\epsilon) \cdot f(c)+\sum_{x \in X} f(x) h(c,X)=(1+ϵ)⋅f(c)+x∈X∑f(x)
进一步推出任意 g ( c , X ) g(c, X) g(c,X)都可以分解成以下 f ∘ φ f \circ \varphi f∘φ形式,满足单射性
g ( c , X ) = φ ( ( 1 + ϵ ) ⋅ f ( c ) + ∑ x ∈ X f ( x ) ) g(c, X)=\varphi\left((1+\epsilon) \cdot f(c)+\sum_{x \in X} f(x)\right) g(c,X)=φ((1+ϵ)⋅f(c)+x∈X∑f(x))
通过引入多层感知机MLP,去学习 φ \varphi φ和 f f f,保证单射性。最终得到基于MLP+SUM的GIN框架:
h v ( k ) = MLP ( k ) ( ( 1 + ϵ ( k ) ) ⋅ h v ( k − 1 ) + ∑ u ∈ N ( v ) h u ( k − 1 ) ) (6) \tag{6} h_{v}^{(k)}=\operatorname{MLP}^{(k)}\left(\left(1+\epsilon^{(k)}\right) \cdot h_{v}^{(k-1)}+\sum_{u \in \mathcal{N}(v)} h_{u}^{(k-1)}\right) hv(k)=MLP(k)⎝⎛(1+ϵ(k))⋅hv(k−1)+u∈N(v)∑hu(k−1)⎠⎞(6)
通过GIN学习的节点embeddings可以用于类似于节点分类、连接预测这样的任务。对于图分类任务,文中提出了一个“readout”函数:给定独立的节点的embeddings,生成整个图的embedding。
Readout模块使用 concat+sum,对每次迭代得到的所有节点特征求和得到图的特征,然后拼接起来。
h G = CONCAT ( READOUT ( { h v ( k ) ∣ v ∈ G } ) ∣ k = 0 , 1 , … , K ) (7) \tag{7} h_{G}=\operatorname{CONCAT}\left(\operatorname{READOUT}\left(\left\{h_{v}^{(k)} | v \in G\right\}\right) | k=0,1, \ldots, K\right) hG=CONCAT(READOUT({hv(k)∣v∈G})∣k=0,1,…,K)(7)
h G = CONCAT ( sum ( { h v ( k ) ∣ v ∈ G } ) ∣ k = 0 , 1 , … , K ) h_{G}=\operatorname{CONCAT}\left(\operatorname{sum}\left(\left\{h_{v}^{(k)} | v \in G\right\}\right) | k=0,1, \ldots, K\right) hG=CONCAT(sum({hv(k)∣v∈G})∣k=0,1,…,K)
节点 v v v和 v ′ v' v′为中心节点,通过聚合邻居特征生成embeddind,分析不同aggregate设置下是否能区分不同的结构(如果能捕获不同结构,二者的embedding应该不一样)。
图a
图b
图c
结论:由于mean和max-pooling 函数 不满足单射性,无法区分某些结构的图,故性能会比sum差一点。
三种不同的aggregate
9个图分类benchmarks
4个生物信息学数据集
5个社交网络数据集
本文主要基于对 graph分类,证明了 sum 比 mean 、max 效果好,但是不能说明在node 分类上也是这样的效果,另外可能优先场景会更关注邻域特征分布,或者代表性, 故需要都加入进来实验。