1. GNN的构建
我们将节点的邻居定义为可计算的图,图神经网络的主要想法是:每一个节点可以从周围的邻居中汇聚信息,而这个汇聚的方式就是通过神经网络来进行。以下图为例,我们来进行解释:
首先以节点A为目标节点,其邻居为B, C, D,那么A的信息就由B, C, D进行汇聚;接着进行递归,B的信息来源于A, C(由于是无向图,因此A也需要进行考虑,下面类似);C的信息来源于A, B, E, F;D又来源于A。因此得到上右图所示的网络。
接着我们考虑所有的节点,均作为目标节点,构建一个这样的传递模型。
这种传递模型可以为任意深度,且有如下几个性质:
- 节点在每一层都有嵌入(embedding);
- 节点 v v v 的第 0 层的嵌入是其输入特征, x v x_{v} xv;
- 第 k k k层的嵌入从 k k k 的邻居节点( k − 1 k-1 k−1层)获取信息。
下面详细考虑每一层中具体的网络结构与更新迭代公式。
h v ( k + 1 ) = σ ( W k ∑ u ∈ N ( v ) h u ( k ) ∣ N ( v ) ∣ + B k h v ( k ) ) , ∀ k ∈ { 0 , … , K − 1 } \mathrm{h}_{v}^{(k+1)}=\sigma\left(\mathrm{W}_{k} \sum_{u \in \mathrm{N}(v)} \frac{\mathrm{h}_{u}^{(k)}}{|\mathrm{N}(v)|}+\mathrm{B}_{k} \mathrm{h}_{v}^{(k)}\right), \forall k \in\{0, \ldots, K-1\} hv(k+1)=σ⎝⎛Wku∈N(v)∑∣N(v)∣hu(k)+Bkhv(k)⎠⎞,∀k∈{ 0,…,K−1}
初始层为节点的输入特征: h v 0 = x v \mathrm{h}_{v}^{0}=\mathrm{x}_{v} hv0=x