Weisfeiler-Lehman Test

Huang N. and Villar S. A short tutorial on the weisfeiler-lehman test and its variants. arXiv preprint arXiv:2201.07083, 2022.

本文介绍了 WL-Test 和它的一些变体, 它会和所设计的 GNN 的表达能力有关, 实际上由不同的变体会导出不同版本的 GNN, 所以还是很有意义的. 不过对于下面这些 Test 如何起到区分异构图的证明我并没有看过, 这里只是列出了算法.

符号说明

  • \(G=(V, E, X_V)\), 图;
  • \(V = \{1, 2, \ldots, n\} := [n]\), 结点;
  • \(E \subset V \times V\), 边;
  • \(X_V = \{X_v: v \in V\} \subset \mathbb{R}^d\), 点上的特征;
  • \(\mathcal{N}_G(v) = \{w: (v, w) \in E\}\), 邻居结点;

注: 如果不存在结点特征, 可以赋予 \(X_v = 1, \forall v \in V\).

同构

\(G = (V, E, X_V), G' = (V', E', X_{V}')\) 同构, 若存在置换 (permutation) \(\prod\) 使得
$$
\prod V = V' \
\prod E = E': \prod (u, v) = (\prod u, \prod v) \
\prod X_V = X_{\prod V} = X_{V}'.
$$

multiset

multiset \(\{\!\{ \cdot \}\!\}\) 可以理解成如下的键值对:
$$
{c_v: \text{count}(c_v)},
$$
即其蕴含了 key 和该 key 出现的次数的信息.

WL

\(\text{WL}(G) \not = \text{WL}(G')\) 的时候, \(G, G'\) 不同构, 反之不一定.

1-WL

  • 输入: \(G = (V, E, X_V)\);
  1. 赋予状态:

    \[c_v^0 \leftarrow \text{hash}(X_v), \quad \forall v \in V; \]

  2. 重复下列操作:

    \[c_v^l \leftarrow \text{hash}(c_v^{l-1}, \{\!\{c_w^{l-1}: w \in \mathcal{N}_G(v) \}\!\}), \quad \forall v \in V \]

    直到满足

    \[c_v^l = c_v^{l-1}, \quad \forall v \in V; \]

  • 输出 \(\{\!\{ c_v^l: v \in V \}\!\}\).

k-WL

注: 这里的 \(k\) 不是单纯的 \(k\), 因为 k-WL with \(k=1\) 不是 1-WL, 1-WL 实际上等价于 k-WL with \(k=2\).

\[\bm{v} = (v_1, \cdots, v_k) \in V^k, \]

下面的算法是每次处理 \(k\) 个点的算法, 记

\[\mathcal{N}_i(\bm{v}) = \{(v_1, \ldots, v_{i-1}, w, v_{i+1}, \ldots, v_k: w \in V\}. \]

以及, 下面的 \(\text{hash}(G(\bm{v}))\) 满足:

\[\text{hash}(G(\bm{v})) = \text{hash}(G(\bm{v}')) \]

当且仅当

\[X_{v_i} = X_{v_i'}, \quad \forall i \in [k] \\ (v_i, v_j) \in E \Leftrightarrow (v_i', v_j') \in E, \quad \forall i, j \in [k] \]

  • 输入: \(G = (V, E, X_V)\);
  1. 赋予状态:

    \[c_{\bm{v}}^0 \leftarrow \text{hash}(G(\bm{v})), \quad \forall \bm{v} \in V^k; \]

  2. 重复下列操作:

    \[c_{\bm{v},i}^l \leftarrow \{\!\{c_w^{l-1}: w \in \mathcal{N}_i(\bm{v}) \}\!\}, \quad \forall \bm{v} \in V^k, i \in [k] \\ c_{\bm{v}}^l \leftarrow \text{hash}(c_{\bm{v}}^{l-1}, c_{\bm{v}, 1}^{l}, \ldots, c_{\bm{v}, k}^{l}), \quad \forall \bm{v} \in V^k, \]

    直到满足

    \[c_{\bm{v}}^l = c_{\bm{v}}^{l-1}, \quad \forall \bm{v} \in V^k; \]

  • 输出 \(\{\!\{ c_{\bm{v}}^l: \bm{v} \in V \}\!\}\).

k-FWL

下面, 我们用 \(c_{\bm{v}[i] \leftarrow w}\) 来表示

\[c_{(v_1, v_2, \ldots, v_{i-1}, w, v_{i+1}, \ldots, v_k)}. \]

  • 输入: \(G = (V, E, X_V)\);
  1. 赋予状态:

    \[c_{\bm{v}}^0 \leftarrow \text{hash}(G(\bm{v})), \quad \forall \bm{v} \in V^k; \]

  2. 重复下列操作:

    \[c_{\bm{v},w}^l \leftarrow (c_{\bm{v}[1] \leftarrow w}^{l-1}, \ldots, c_{\bm{v}[k] \leftarrow w}^{l-1}), \quad \forall \bm{v} \in V^k, w\in V \\ c_{\bm{v}}^l \leftarrow \text{hash} (c_{\bm{v}}^{l-1}, \{\!\{c_{\bm{v},w}^{l}: w \in V \}\!\}, \quad \forall \bm{v} \in V^k \\ \]

    直到满足

    \[c_{\bm{v}}^l = c_{\bm{v}}^{l-1}, \quad \forall \bm{v} \in V^k; \]

  • 输出 \(\{\!\{ c_{\bm{v}}^l: \bm{v} \in V \}\!\}\).

例子

考虑如下的两个不同构的图 \(G, H\) (假设 features 是相同的):

注: 标注就是左边 (1, 2, 3), 右边 (4, 5, 6).

2-WL:

  1. 初始化, 因为结构是相同的, 所以起初会分成两组 (\((v_i, v_j) \in E\)\((v_i, v_j) \not \in E\)), 故可以按照图 2 中的 \(G^0, H^0\) 进行颜色的划分 (均为 12 yellows, 24 greys);
  2. 注意到此时 \(\mathcal{N}_1(\bm{v}), \mathcal{N}_2 (\bm{v})\) 实际上是 \(\bm{v}\) 对应位置的列和行, 以 (3, 3) 位置为例 (图中的颜色标注有误),

    \[\mathcal{N}_{1}((3, 3)) = \{(i, 3): i \in [6]\}, \\ \mathcal{N}_{2}((3, 3)) = \{(3, j): j \in [6]\}, \\ \]

  3. \[c_{(3, 3), 1}^1 = c_{(3, 3), 2}^1 = \{\!\{4 \text{ greys }, 2 \text{ yellows } \}\!\}; \]

  4. 于是

    \[c_{(3, 3)}^1 = \text{hash}(c_{(3, 3)}^0, \{\!\{4 \text{ greys }, 2 \text{ yellows } \}\!\}); \]

  5. 进一步我们会发现, \(c_{\bm{v}}^1\) 可以表示成

    \[c_{\bm{v}, 1}^1 = c_{\bm{v}, 2}^1 = \{\!\{4 \text{ greys }, 2 \text{ yellows } \}\!\}, \\ \text{hash}(c_{\bm{v}}^0, \{\!\{4 \text{ greys }, 2 \text{ yellows } \}\!\}), \]

    故新的 hash 值实际上由初始值 \(c_{\bm{v}}^0\) 决定, 所以 \(G^1, G^0\) 的模式 实际上是一样的, 故到 \(G^1\) 就可以停止了;
  6. 对于 \(H\) 也是同理的, 可以发现, 在算法停止的时候, \(G^1, H^2\) 的颜色模式依旧是一致的, 故 2-WL 算法是没法区分这两个图的;

另一方面 2-FWL 它是能够得出 \(G, H\) 异构的结论的, 所以 2-FWL 的判断能力是强于 2-WL 的. 实际上, 作者在文中说, k-WL 是和 (k-1)-FWL 的判断能力是一致的, 后者会更加高效一点.

posted @ 2022-09-15 11:04  馒头and花卷  阅读(374)  评论(0编辑  收藏  举报