WL和GNN

1. Weisfeiler-Leman算法

  • 图同构: 通俗点就是两个图的特征及结构信息完全相同。具体来说就是:如果图G和图H同构,那么在G和H的顶点集间存在一个“edge-preserving"的双射函数ff,使得“如果节点u和v在图G中相连,那么f(u)f(u)f(v)f(v)在图H中也相连”。下图展示了两个同构图G和H:

  • Jaccard相似度: Jaccard index,又称为Jaccard相似系数或者叫雅可比相似度系数,用来比较有限样本集之间的相似性与差异性。Jaccard系数值越大,样本相似度越高。狭义的Jaccard系数计算公式如下:

    J(A,B)=ABAB=ABA+BABJ(A,B)=\frac{|A\cap B|}{|A\cup B|}=\frac{|A\cap B|}{|A|+|B|-|A\cap B|}

    当A和B都为空集时,J(A,B)=1J(A,B)=1;当A=BA=B时,J(A,B)=1J(A,B)=1

Weisfeiler-Leman(WL,威斯费勒-莱曼)是用来测试图同构的一种经典算法,可以在准多项式复杂度内判别两个图是否同构。所谓的图同构就是两个图中对应节点的特征信息结构信息都相同,则称两个图同构。因此就需要一种高效地计算方法能将特征信息及结构位置信息映射成一个数值,我们称其为这个节点的ID。最后,两个图的相似度问题就可以转化成两个图节点集合ID的Jaccard相似度问题。

  • 思路: 计算节点ID需要用到节点的特征信息和结构信息。特征信息即节点自带的Embedding,而结构信息可以通过节点的邻居来刻画,比如,如果两个节点的Embedding相同,并且他们连接了Embedding完全相同的邻居,此时我们是无法区分这两个节点的,因此这两个节点的ID相同。我们可以通过对节点ID的Hash来高效判断两个节点ID是否一致。
  • Input: 一对图G=(V,E,X)G=(V,E,X)H=(U,F,Y)H=(U,F,Y)
  • Output: 是否存在双射函数f:VUf:V\rightarrow U,使得Xv=Yf(v) vVX_v=Y_{f(v)}\ \forall v\in V,并且当且仅当{f(u),f(v)F}\{f(u),f(v)\in F\}时,{u,v}E\{u,v\}\in E

1.1 1-WL

hl(t)(v)=HASH(hl(t1)(v),F{hlt1(u)uN(v)})h_l^{(t)}(v)=HASH\Big(h_l^{(t-1)}(v),\mathcal F\Big\{h_l^{t-1}(u)|u\in N(v)\Big\}\Big)

其中vv表示单个节点,F\mathcal F表示邻居EmbeddingEmbedding的聚合函数,可以是简单的拼接。hl(t1)(v)h_l^{(t-1)}(v)表示上一轮迭代中节点vv的Embedding。HASHHASH是哈希函数,也可以是其他单射函数(输入x不同,得到的f(x)一定不同)。

  • 多重集

    多重集是集合概念的推广,它允许集合中元素重复出现。一个多重集可以看做是一个二元组X=(S,m)X=(S,m),其中S为在X中出现的所有元素构成的集合,m:SN1m:S\rightarrow\mathbb N_{\geq1}表示S中每个元素出现的次数。

  • 流程

    Input: 一对图G=(V,E,X)G=(V,E,X)H=(U,F,Y)H=(U,F,Y)

    1. cv(0)Hash(Xv) (vV)c_v^{(0)}\leftarrow Hash(X_v)\ (\forall v\in V)

    2. du(0)Hash(Yu) (uU)d_u^{(0)}\leftarrow Hash(Y_u)\ (\forall u\in U)

    3. for l=1,2,...(untill convergence)l=1,2,...(untill\ convergence)

      (1) if {{cv(l1)  vV}}{{du(l1)  uU}}\{\{c_v^{(l-1)}\ |\ v\in V\}\}\neq \{\{d_u^{(l-1)}\ |\ u\in U\}\} then return “non-isomorphic”

      (2) cv(l)Hash(cv(l1),{{cw(l1)  wNG(v)}}) (vV)c_v^{(l)}\leftarrow Hash(c_v^{(l-1)},\{\{c_w^{(l-1)}\ |\ w\in\mathcal N_G(v)\}\})\ (\forall v\in V)

      (3) du(l)Hash(du(l1),{{dw(l1)  wNH(u)}}) (uU)d_u^{(l)}\leftarrow Hash(d_u^{(l-1)},\{\{d_w^{(l-1)}\ |\ w\in\mathcal N_H(u)\}\})\ (\forall u\in U)

    4. return “possibly isomorphic”

    1-WL一定会在O(V+U)O(|V|+|U|)迭代内终止。如果1-WL算法输出"non-isomorphic",那么G和H一定是非同构的。但是如果1-WL输出"possibly isomorphic",那么G和H也可能是非同构的,如下图所示:

  • 实例

  • 问题1:为什么1-WL返回possibly isomorphicpossibly\ isomorphic时,两个图可能非同构的?

    因为WL用邻居来刻画图的结构信息,如果非同构图G和H中存在这样一个节点对组合:任意一个节点对中两个节点的特征相同,且邻居数量、特征都相同,那么此时1-WL算法无法区分这两个非同构图。

  • 问题2:为什么1-WL最多迭代O(V+U)O(|V|+|U|)

    考虑回答这个问题:为什么k-WL最多迭代O(Vk+Uk)O(|V|^k+|U|^k)次?

    因为k-WL算法中,对于有n个顶点的图最多有nkn^k种颜色类别,所以最多在nkn^k次迭代后颜色状态达到稳定,算法终止。

1.2 k-WL

1-WL算法计算过程中只考虑1个顶点,k-WL算法计算时考虑的是K个顶点组成的k-tuple。

  • 流程

    Input: 一对图G=(V,E,X)G=(V,E,X)H=(U,F,Y)H=(U,F,Y)

    1. cv(0)Hash(G[v]) (vVk)c_\mathbf v^{(0)}\leftarrow Hash(G[\mathbf v])\ (\forall\mathbf v\in V^k)

    2. du(0)Hash(H[u]) (uUk)d_\mathbf u^{(0)}\leftarrow Hash(H[\mathbf u])\ (\forall\mathbf u\in U^k)

    3. for l=1,2,...(untill convergence)l=1,2,...(untill\ convergence)

      (1) if {{cv(l1)  vV}}{{du(l1)  uU}}\{\{c_\mathbf v^{(l-1)}\ |\ \mathbf v\in V\}\}\neq \{\{d_\mathbf u^{(l-1)}\ |\ \mathbf u\in U\}\} then return “non-isomorphic”

      (2) cv,i(l){{cw(l1)  wNG,ikWL(v)}} (vVk,i[k])c_{\mathbf v,i}^{(l)}\leftarrow \{\{c_\mathbf w^{(l-1)}\ |\ \mathbf w\in\mathcal N_{G,i}^{k-WL}(\mathbf v)\}\}\ (\forall\mathbf v\in V^k, i\in[k])

      (3) cv(l)Hash(cv(l1),cv,1(l),...,cv,k(l)}}) (vVk)c_\mathbf v^{(l)}\leftarrow Hash(c_\mathbf v^{(l-1)},c_{\mathbf v,1}^{(l)},...,c_{\mathbf v,k}^{(l)}\}\})\ (\forall\mathbf v\in V^k)

      (4) du,i(l){{dw(l1)  wNH,ikWL(u)}} (uUk,i[k])d_{\mathbf u,i}^{(l)}\leftarrow \{\{d_\mathbf w^{(l-1)}\ |\ \mathbf w\in\mathcal N_{H,i}^{k-WL}(\mathbf u)\}\}\ (\forall\mathbf u\in U^k, i\in[k])

      (5) du(l)Hash(du(l1),du,1(l),...,du,k(l)}}) (uUk)d_\mathbf u^{(l)}\leftarrow Hash(d_\mathbf u^{(l-1)},d_{\mathbf u,1}^{(l)},...,d_{\mathbf u,k}^{(l)}\}\})\ (\forall\mathbf u\in U^k)

    4. return “possibly isomorphic”

    其中NG,ikWL(v)={(v1,...,vi1,w,vi+1,...,vk)  wV}\mathcal N_{G,i}^{k-WL}(\mathbf v)=\{(v_1,...,v_{i-1},w,v_{i+1},...,v_k)\ |\ w\in V\}表示k元组v\mathbf v的i-th邻居,即用G中的其他顶点任意顶点ww替换v\mathbf v中的第i个顶点。对于连个k-tuple,当且仅当下面两个条件都满足时,Hash(G[v1])=Hash(G[v2])Hash(G[\mathbf v^1])=Hash(G[\mathbf v^2])

    • Xvi1=Xvi2,i[k]\mathbf {X_{v_i^1}=X_{v_i^2}}, \forall i\in[k]
    • 当且仅当{vi2vj2}E, i,j[k]\{\mathbf v_i^2\,\mathbf v_j^2\}\in E,\ \forall i,j\in[k]时,vi1,vj1E{\mathbf v_i^1,\mathbf v_j^1}\in E

1.2 k-FWL

WL算法有很多变体形式,主要通过改变邻居信息的聚合方式来进行优化,k-FWL就是其中一种。

  • 流程

    Input: 一对图G=(V,E,X)G=(V,E,X)H=(U,F,Y)H=(U,F,Y)

    1. cv(0)Hash(G[v]) (vVk)c_\mathbf v^{(0)}\leftarrow Hash(G[\mathbf v])\ (\forall\mathbf v\in V^k)

    2. du(0)Hash(H[u]) (uUk)d_\mathbf u^{(0)}\leftarrow Hash(H[\mathbf u])\ (\forall\mathbf u\in U^k)

    3. for l=1,2,...(untill convergence)l=1,2,...(untill\ convergence)

      (1) if {{cv(l1)  vV}}{{du(l1)  uU}}\{\{c_\mathbf v^{(l-1)}\ |\ \mathbf v\in V\}\}\neq \{\{d_\mathbf u^{(l-1)}\ |\ \mathbf u\in U\}\} then return “non-isomorphic”

      (2) cv,w(l)(cv[0]w(l1),...,cv[k]w(l1)) (vVk,wV)c_{\mathbf v,w}^{(l)}\leftarrow (c_{\mathbf v[0]\leftarrow w}^{(l-1)},...,c_{\mathbf v[k]\leftarrow w}^{(l-1)})\ (\forall\mathbf v\in V^k, w\in V)

      (3) cv(l)Hash(cv(l1),{{cv,w(l)  wV}}) (vVk)c_\mathbf v^{(l)}\leftarrow Hash(c_\mathbf v^{(l-1)},\{\{c_{\mathbf v,w}^{(l)}\ |\ w\in V\}\})\ (\forall\mathbf v\in V^k)

      (4) du,w(l)(du[0]w(l1),...,du[k]w(l1)) (uUk,wU)d_{\mathbf u,w}^{(l)}\leftarrow (d_{\mathbf u[0]\leftarrow w}^{(l-1)},...,d_{\mathbf u[k]\leftarrow w}^{(l-1)})\ (\forall\mathbf u\in U^k, w\in U)

      (5) du(l)Hash(du(l1),{{du,w(l)  wU}}) (uUk)d_\mathbf u^{(l)}\leftarrow Hash(d_\mathbf u^{(l-1)},\{\{d_{\mathbf u,w}^{(l)}\ |\ w\in U\}\})\ (\forall\mathbf u\in U^k)

    4. return “possibly isomorphic”

    其中cv[i]w=c(v1,...,vi1,w,vi+1,...,vk)c_{\mathbf v[i]\leftarrow w}=c(v_1,...,v_{i-1},w,v_{i+1},...,v_k)。FWL和WL的区别在于:FWL先concate节点w替换的所有邻居,在将其与k元组v\mathbf v进行Hash操作。kFWLk-FWL算法可以区分kWLk-WL算法不能区分的非同构图,但是也存在kFWLk-FWL无法区分的非同构图。

  • 问题:为什么kFWLk-FWLkWLk-WL要强?

    证明待定。

1.3 不同WL间的性能比较

  1. 1-WL和2-WL性能一样

    证明待定。

  2. k2k\geq2时,kFWLk-FWL(k+1)WL(k+1)-WL性能一样

    证明待定。

  3. k2k\geq2时,(k+1)WL(k+1)-WL一定比kWLk-WL要强

    比如,1-WL不能区分下图,但是3-WL能区分。

证明待定。

上述结论主要根据参考文献“ Pebble games and linear equations ”中下面两条定理得到的:

  • 定理1:ACkBA\equiv_C^k B当且仅当k-WL算法无法区分图A和图B。

  • 定理2:AC2BAC<2BA\equiv_C^2 B \Leftrightarrow A\equiv_C^{<2}B;对于k3k\geq 3ACkBAC<kBACk1BA\equiv_C^k B\Rightarrow A\equiv_C^{<k}B\Rightarrow A\equiv_C^{k-1}B

(上述第二条关于FWL的结论给的参考文献和第三条结论的相同,但是没找到相关结论)

对于WL算法能区分哪些图,不能区分哪些图,学术界也做了很多研究,有一下结论:

  1. 如果两个图是随机均匀获取到的,那么随着图越来越大,1-WL算法的失败率逐渐变为0。

    证明待定。

  2. k2k\geq2时,一定存在一个大小为O(k)O(k)的非同构图(G,H)(G,H),k-WL算法输出"possibly isomorphic"。

    证明待定。

  3. 1-WL算法能区分任意一对非同构树S和T。

    证明待定。

  4. 任意正整数k,nZ+k,n\in\mathbb Z^+,对于有n个顶点的k正则图,1-WL算法输出结果一定是"possibly isomorphic"。

    证明待定。

  5. 1-WL算法可以在准线性时间内区分出它可以区分的非同构图。

    证明待定。

2. GNNs和WL间的联系

定理: 对于任何基于消息传播的GNN模型,在图G和图H上,如果1-WL输出结果为”possibly isomorphic",那么GNN模型的到的图嵌入hGh_GhHh_H一定相同。(1-WL算法性能是GNN的上限)

解释: GNNs中的聚合函数和更新函数可以看做对1-WL中Hansh函数的近似。所以,要想GNNs模型拥有和1-WL一样的性能,需要想办法将GNNs中的聚合函数和更新函数变成单射函数。

2.1 GIN模型——消息传播GNNs的天花板

2.1.1 定理证明

引理:G1G_1G2G_2是非同构图。如果通过GNNA:GRdA:\mathcal G\rightarrow\mathbb R^d得到的图embedding是不同的,那么1-WL算法作用于这两个图上的结果一定是non isomorphicnon\ isomorphic

定理:A:GRd\mathcal A:\mathcal G\rightarrow\mathbb R^d表示GNN。对于一个层数足够的GNN,如果满足下列两个条件,则对于所有1-WL算法输出为非同构的图,GNN模型得到的embedding一定不同:

  • A\mathcal A聚合和更新函数hv(k)=ϕ(hv(k1,f({hu(k1):uN(v)}))h_v^{(k)}=\phi\Big(h_v^{(k-1},f\Big(\Big\{h_u^{(k-1)}:u\in\mathcal N(v)\Big\}\Big)\Big)其中ff作用于多重集的函数,ϕ\phi是单射函数
  • A\mathcal A的graph-level readout函数,即作用于节点特征集合{hv(k)}\{h_v^{(k)}\}上的函数是单射的。

定理3: 假设集合X\mathcal X是可数的。存在一个函数f:XRnf:\mathcal X\rightarrow\mathbb R^n,对于每一个有限大小的集合XXX\subset\mathcal X,使得h(X)=xXf(x)h(X)=\sum_{x\in X}f(x)是唯一的。另外存在一个多重集上的函数g,对于某种函数$ \phi ,可以按照,可以按照g(X)=$$\phi(\sum_{x\in X}f(x))$方式分解。

推论6: 假设集合X\mathcal X是可数的。存在函数f:XRnf:\mathcal X\rightarrow\mathbb R^n,使得h(c,X)=(1+ϵ)f(c)+xXf(x)h(c,X)=(1+\epsilon)·f(c)+\sum_{x\in X}f(x)对于所有(c,X)(c,X)都成立,其中ϵ\epsilon有无数种选择(也可以是无理数),cXc\in\mathcal XXXX\subset \mathcal X。同样地,也存在一个作用于(c,X)(c,X)上的函数g,对于某种函数φ\varphi,可以将g分解为:g(c,X)=φ((1+ϵ)f(c)+g(c,X)=\varphi((1+\epsilon)·f(c)+xXf(x))\sum_{x\in X}f(x))

2.1.2 聚合和更新函数

根据通用近似定理(人工神经网络可以近似任意函数),在GIN中作者用MLP来对f(k+1)φ(k)f^{(k+1)}\circ \varphi^{(k)}进行建模。在第一层中,如果节点特征是one-hot编码,我们不需要使用MLP,因为对他们求和本身就是单射的。GIN中的聚合和更新算法如下:

hv(k)=MLP(k)((1+ϵ)hv(k1)+uN(v)hu(k1))h_v^{(k)}=MLP^{(k)}\Big(\big(1+\epsilon\big)·h_v^{(k-1)}+\sum_{u\in\mathcal N(v)}h_u^{(k-1)}\Big)

2.1.3 graph-level readout函数

为了考虑所有的结构信息,在计算图特征时用到了所有迭代中的节点特征。作者参考Jumping Knowledge那篇论文的架构:

hG=CONCAT(READOUT({hv(k)vG})  k=0,1,...,K)h_G=CONCAT(READOUT(\{h_v^{(k)}|v\in G\})\ |\ k=0,1,...,K)

根据定理3和推论6,如果用求和函数代替READOUT(和第一层不需要用MLP的理由一样),这样GIN就可证明地推广了WL-test和WL subtree kernel。

2.2 比1-WL更强的GNNs

Morris等人在2019年发表了一篇名为“ eisfeiler andlemango neural: Higher-order graph neural network ”的文章,里面基于set K-WL算法提出了一种更强大的模型k-GNNs(之所以不用k-WL是为了减少内存开销)。

2.2.1 Set k-WL算法

Set k-WL和k-WL算法不同的时:不在使用k-tuple作为基本研究对象,而是使用k-set。[V]k={SV  S=k}[V]_k=\{S\subseteq V\ |\ |S|=k\}表示V的一个真子集,大小为k。NV,kset(S)={W[V]k  WV=k1}\mathcal N_{V,k}^{set}(S)=\{W\in[V]_k\ |\ |W\cup V|=k-1\}表示V的所有邻居构成的集合。set k-WL算法流程如下:

  1. cS(0)Hash(G[S])(S[V]k)c_S^{(0)}\leftarrow Hash(G[S])(\forall S\in [V]_k)

  2. dT(0)Hash(H[T])(T[U]k)d_T^{(0)}\leftarrow Hash(H[T])(\forall T\in[U]_k)

  3. for l=1,2,...(util convergence)l=1,2,...(util\ convergence)

    (a) if {{cS(l1)  S[V]k}}{{dT(l1)  T[U]k}}\{\{c_S^{(l-1)}\ |\ S\in[V]_k\}\}\neq\{\{d_T^{(l-1)}\ |\ T\in[U]_k\}\} return “non-isomorphic”

    (b) cS(l)Hash(cS(l1),{{cW(l1)  WNV,kset(S)}})(S[V]k)c_S^{(l)}\leftarrow Hash(c_S^{(l-1)},\{\{c_W^{(l-1)}\ |\ W\in\mathcal N_{V,k}^{set}(S)\}\})(\forall S\in[V]_k)

    © dT(l)Hash(dT(l1),{{dW(l1)  WNU,kset}})(G[U]k)d_T^{(l)}\leftarrow Hash(d_T^{(l-1)},\{\{d_W^{(l-1)}\ |\ W\in\mathcal N_{U,k}^{set}\}\})(\forall G\in[U]_k)

  4. return “possibly isomorphic”

set 3-WL可以检测出三角形的数量(1-WL不行),因此可以区分上面几对图,但是1-WL无法区分。需要注意的是set k-WL算法是严格弱于k-WL算法的。例如3-WL算法可以区分下面两个图,但是set 3-WL区分不了,因为3-WL可以检测出4-cycles的数量:

2.2.2 k-GNNs

hS(0)=f(0)(G[S])hS(k)=W1(k)hS(k1)+WNV,kset(S)W2(k)hW(k1)\begin{aligned} h_S^{(0)}&=f^{(0)}(G[S])\\ h_S^{(k)}&=W_1^{(k)}h_S^{(k-1)}+\sum\limits_{W\in\mathcal N_{V,k}^{set}(S)}W_2^{(k)}h_W^{(k-1)} \end{aligned}

其中f(0)(G[S])f^{(0)}(G[S])给每个S导出的子图赋予一个特征向量。k-GNN可以看作在GkG^{\bigotimes k}上作消息传播,当且仅当TNV,kset(S)T\in\mathcal N_{V,k}^{set}(S)时,S[V]kS\in[V]_kT[V]kT\in[V]_k之间存在一条边。

定理: 对于任意图G和H,k2k\geq2,如果set k-WL输出图G和H是“non-isomorphic”,一定存在一个k-GNN计算出的图嵌入hGh_GhHh_H是不一样的。

3. 高阶GNN

k-GNNs的一个缺点就是需要保留O(nk)O(n^k)个embedding,花费太多内存了。Maron等人在“ provably powerful graph networks ”一文中基于2FWL2-FWL算法提出了一种模型,该模型只需要保留O(n2)O(n^2)个embedding,但是拥有和3-WL一样的表现性能。下面介绍一下高阶invariant和equivariant的GNNs。

3.1 Invariance 和 Equivariance

假设SnS_n表示一个[n]上的对称群,张量XRnkX\in\mathbb R^{n^k},排列pSnp\in S_n,定义(pX)Rnk(p·X)\in\mathbb R^{n^k}(pX)p(i1),p(i2),...,p(in)=Xi1,i2,...,in(p·X)_{p(i_1),p(i_2),...,p(i_n)}=X_{i_1,i_2,...,i_n}。对于一个张量XRnk×dX\in\mathbb R^{n^k\times d}和排列pSnp\in S_n,我们定义(pX)Rnk×d(p·X)\in\mathbb R^{n^k\times d}(pX)p(i1),p(i2),...,p(in),j=Xi1,i2,...,in,j(p·X)_{p(i_1),p(i_2),...,p(i_n),j}=X_{i_1,i_2,...,i_n,j}

  1. Invariance

    如果对于任意XRnkX\in\mathbb R^{n^k}以及pSnp\in S_n,如果f(pX)=f(X)f(p·X)=f(X)成立,那么称f:RnkRf:\mathbb R^{n^k}\rightarrow\mathbb R是invariant。

    如果对于任意XRnk×dX\in\mathbb R^{n^k\times d}以及pSnp\in S_n,如果f(pX)=f(X)f(p·X)=f(X)成立,那么称f:Rnk×dRnl×df:\mathbb R^{n^k\times d}\rightarrow\mathbb R^{n^l\times d'}是invariant。

  2. Equivariance

    如果对于任意XRnkX\in\mathbb R^{n^k}以及pSnp\in S_n,如果f(pX)=pf(X)f(p·X)=p·f(X)成立,那么称f:RnkRf:\mathbb R^{n^k}\rightarrow\mathbb R是equivariant。

    如果对于任意XRnk×dX\in\mathbb R^{n^k\times d}以及pSnp\in S_n,如果f(pX)=pf(X)f(p·X)=p·f(X)成立,那么称f:Rnk×dRnl×df:\mathbb R^{n^k\times d}\rightarrow\mathbb R^{n^l\times d'}是equivariant。

4. Relational Pooling

未完待续。。。

5. 参考文献

打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2021-2022 Yin Peng
  • 引擎: Hexo   |  主题:修改自 Ayer
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信