Weisfeiler-Lehman(WL)算法
The Weisfeiler-Lehman Test of Isomorphism
- 图核使用来自Weisfeiler−Lehman同构检验的概念,更具体地讲是其一维变体,也称为“朴素顶点修饰”
- 该算法的关键思想是通过对相邻节点的节点标签排序后的集合来扩展节点标签,并将这些扩展后的标签压缩为新的短标签
-
alphabet Σ必须足够大才能使f具内射性。 对于两个图,∣Σ∣=2n个满足条件。

-
(a)网络中每个节点有一个label,如图中的彩色的1,2,3,4,5
-
(b)标签扩展:做一阶广度优先搜索,即只遍历自己的邻居。比如在图(a)网络G中原(5)号节点,变成(5,234),这是因为原(5)节点的一阶邻居有2,3和4
-
(c)标签压缩:仅仅只是把扩展标签映射成一个新标签,如 5,234=>13
-
(d)压缩标签替换扩展标签
-
(e)数标签:比如在G网络中,含有1号标签2个,那么第一个数字就是2。这些标签的个数作为整个网络的新特征
算法:
假设要测试同构的两张图为G和G’,那么在结点v的第i次迭代里,算法都分别做了四步处理:标签复合集定义、复合集排序、标签压缩和重标签

-
WL test的复杂度是O(hm),其中h为iteration次数,m是一次iteration里multiset的个数
一维的Weisfeiler−Lehman如下所示:


稳定后,统计两张图的label的分布,如果分布相同,则一般认为两张图时同构的。

注意:我们可以发现,WL test方法的步骤和GNNs具有异曲同工之妙,都是通过不断聚合邻居信息,得到节点的新表示,这也是为什么Kipf在2017年GCN的论文中单独讨论和GCN和WLtest关系的原因。而正是这种统一性,才使得本文能以 WL test 为基础来分析GNNs框架。
The General Weisfeiler-Lehman Kernels
1.The Weisfeiler-Lehman Kernel Framework
-
Weisfeiler−Lehman algorithm 对图G和G′的结点进行重标签时,只有当两个结点v和v′有相同的标签复合集,它们生成的新标签才一样。
- 因此,我们可以认为对所有图进行标签压缩和重标签时,标签映射函数f都是一样的,定义为r((V,E,li))=(V,E,l(i+1)),其中,V是图G的结点集,E是图G的边集,li和l(i+1)分别是Weisfeiler−Lehman algorithm 在第i次和第i+1次迭代时生成的标签集。

G0是原始图,G1=r(G0)是第一次重新贴标产生的图,依此类推.


性质
- 1.半正定矩阵的行列式是非负的。
- 2.两个半正定矩阵的和是半正定的。
- 3.Gi=r∗G(i−1)=(r2)∗G(i−2)=....=(ri)∗G0=(ri)∗G
证明


**请注意,**可以将非负实权重αi放在k(Gi,Gi′),i=0,1,...,h上,以获得更一般的Weisfeiler−Lehman核定义:

2.The Weisfeiler-Lehman Subtree Kernel

ci(G,σij)是图形G中字母σij的出现次数。

也就是说,Weisfeiler-Lehman子树内核在两个图中计数共同的原始标签和压缩标签

- 假设基本内核k是一个函数,用于计算两个图中的匹配节点标签对:

多图上计算The Weisfeiler-Lehman Subtree Kernel
算法:
- 在N个图和h次迭代的情况下,Σ大小为Nn(h+1)。


举例:


THE RAMON-GARTNER SUBTREE KERNEL
具有子树高度h的Ramon−Gartner子树内核通过迭代比较它们的邻域来比较图G=(V,E,l)和G0=(V0,E0,l)中的所有节点对:



M(v,v′)是v和v′邻域的子集的精确匹配集合。M(v,v′)的每个元素R是来自v∈V和v0∈V0的邻域的一组节点对,因此每对中的节点具有相同的标记,并且不包含多于一对的节点。 因此,从直观上讲,kRG迭代地考虑来自G的节点v和来自G0的v0的邻居之间两个相同标记节点的所有匹配M(v,v′)。 使参数λv和λv′等于单个参数λ会导致每个模式加权λ,并提高到模式中节点数的幂。
LINK TO THE WEISFEILER-LEHMAN SUBTREE KERNEL


3.The Weisfeiler-Lehman Edge Kernel
The Weisfeiler−Lehman edge kernel 是the Weisfeiler−Lehman kernel framework的另一个实例。 对于具有未加权边的图,我们考虑对两个图中具有相同标记的端点(事件节点)的匹配边对进行计数的基本内核。 换句话说,基本内核定义为

其中φE(G)是对(a,b),a,b∈Σ的出现次数的向量,它们表示G中边的端点的有序标签. (a,b)和(a0,b0)分别表示边e和e0的端点的有序标签,以及Dirac kernel的δ,kE可以等效地表示为∑e∈E∑e0∈E′δ(a,a0)δ(b,b0)。如果边缘通过分配权重的函数w加权,则基本核kE可以定义为∑e∈E∑e0∈E′δ(a,a0)δ(b,b0)kw(w(e),w((e0)) ,其中kw是比较边缘权重的内核。

4.The Weisfeiler-Lehman Shortest Path Kernel
在这里,我们使用节点标记的最短路径内核作为基础内核。

Weisfeiler-Lehman Graph Kernels
https://github.com/BorgwardtLab/GraphKernels
https://static.aminer.cn/misc/pdf/20190419.pdf
https://github.com/ysig/GraKeL