【note】GNN
WL-test
https://dl.acm.org/doi/10.5555/1953048.2078187
WL-test 是一个判断图同构问题的启发式算法(可能会把非同构判断成同构)。
1-WL-test 是最简单的一个版本,方法如下:
- 初始时,点 v v v 特征为 l 0 ( v ) l_0(v) l0(v)
- 每次迭代时,用邻点特征的多重集更新每个点的特征,即令 l i ( v ) = f ( { l i − 1 ( u ) ∣ u ∈ N ( v ) } ) l_i(v)=f(\{l_{i-1}(u)|u\in \mathcal N(v)\}) li(v)=f({li−1(u)∣u∈N(v)})
- 最终比较两张图所有点特征的多重集是否相等
迭代 h h h 次,时间复杂度 O ( h m ) O(hm) O(hm)。(就是比较深度为 h h h 的 dfs 树是否同构)
GNN
GNN 有多种结构,但每一层通常都可以写成如下形式:
a v ( k ) = AGGREGATE ( k ) ( { h u ( k − 1 ) : u ∈ N ( v ) } ) a_v^{(k)}=\text{AGGREGATE}^{(k)}\left(\left\{h_u^{(k-1)}:u\in\mathcal{N}(v)\right\}\right) av(k)=AGGREGATE(k)({hu(k−1):u∈N(v)})
h v ( k ) = COMBINE ( k ) ( h v ( k − 1 ) , a v ( k ) ) h_v^{(k)}=\text{COMBINE}^{(k)}\left(h_v^{(k-1)},a_v^{(k)}\right) hv(k)=COMBINE(k)(hv(k−1),av(k))
下面尝试整理一下常见的几种结构。
GCN (spectral)
https://arxiv.org/abs/1312.6203
https://arxiv.org/abs/1606.09375
有点复杂,见得不多
GCN (spatial)
https://arxiv.org/abs/1609.02907
相对简单且常见
H ( l + 1 ) = σ ( D ~ − 1 2 A ~ D ~ − 1 2 H ( l ) W ( l ) ) H^{(l+1)}=\sigma\Big(\tilde{D}^{-\frac12}\tilde{A}\tilde{D}^{-\frac12}H^{(l)}W^{(l)}\Big) H(l+1)=σ(D~−21A~D~−21H(l)W(l))
其中 A ~ = A + I N \tilde{A}=A+I_N A~=A+IN 是邻接矩阵和单位矩阵之和, D ~ i i = ∑ j A i j \tilde{D}_{ii}=\sum_jA_{ij} D~ii=∑jAij 为度数矩阵。
MPNN
https://arxiv.org/abs/1704.01212
m v t + 1 = ∑ w ∈ N ( v ) M t ( h v t , h w t , e v w ) h v t + 1 = U t ( h v t , m v t + 1 ) \begin{aligned}m_v^{t+1}&=\sum_{w\in N(v)}M_t(h_v^t,h_w^t,e_{vw})\\h_v^{t+1}&=U_t(h_v^t,m_v^{t+1})\end{aligned} mvt+1hvt+1=w∈N(v)∑Mt(hvt,hwt,evw)=Ut(hvt,mvt+1)
GraphSAGE
http://arxiv.org/abs/1706.02216
a v ( k ) = M A X ( { R e L U ( W ⋅ h u ( k − 1 ) ) , ∀ u ∈ N ( v ) } ) a_v^{(k)}=\mathrm{MAX}\left(\left\{\mathrm{ReLU}\left(W\cdot h_u^{(k-1)}\right),\mathrm{~}\forall u\in\mathcal{N}(v)\right\}\right) av(k)=MAX({ReLU(W⋅hu(k−1)), ∀u∈N(v)})
h u ( k ) = W ⋅ [ h v ( k − 1 ) , a v ( k ) ] h_u^{(k)}=W\cdot\left[h_v^{(k-1)},a_v^{(k)}\right] hu(k)=W⋅[hv(k−1),av(k)]
GAT
http://arxiv.org/abs/1710.10903
α i j = exp ( LeakyReLU ( a ⃗ T [ W h ⃗ i ∥ W h ⃗ j ] ) ) ∑ k ∈ N i exp ( LеаkyReLU ( a ⃗ T [ W h ⃗ i ∥ W h ⃗ k ] ) ) \alpha_{ij}=\frac{\exp\left(\text{LeakyReLU}\left(\vec{\mathbf{a}}^T[\mathbf{W}\vec{h}_i\|\mathbf{W}\vec{h}_j]\right)\right)}{\sum_{k\in\mathcal{N}_i}\exp\left(\text{LеаkyReLU}\left(\vec{\mathbf{a}}^T[\mathbf{W}\vec{h}_i\|\mathbf{W}\vec{h}_k]\right)\right)} αij=∑k∈Niexp(LеаkyReLU(aT[Whi∥Whk]))exp(LeakyReLU(aT[Whi∥Whj]))
h ⃗ i ′ = ∥ k = 1 K σ ( ∑ j ∈ N i α i j k W k h ⃗ j ) \vec{h}_i^{\prime}=\Big\Vert_{k=1}^K\sigma\left(\sum_{j\in\mathcal{N}_i}\alpha_{ij}^k\mathbf{W}^k\vec{h}_j\right) hi′= k=1Kσ(∑j∈NiαijkWkhj)
AGNN
http://arxiv.org/abs/1803.03735
P i ( t ) = softmax ( [ β ( t ) cos ( H i ( t ) , H j ( t ) ) ] j ∈ N ( i ) ∪ { i } ) P_i^{(t)}=\text{ softmax}{ \left ( [ \beta ^ { ( t ) }\cos(H_i^{(t)},H_j^{(t)})]_{j\in N(i)\cup\{i\}}\right)} Pi(t)= softmax([β(t)cos(Hi(t),Hj(t))]j∈N(i)∪{i})
H i ( t + 1 ) = ∑ j ∈ N ( i ) ∪ { i } P i j ( t ) H j ( t ) H_i^{(t+1)}=\sum_{j\in N(i)\cup\{i\}}P_{ij}^{(t)}H_j^{(t)} Hi(t+1)=∑j∈N(i)∪{i}Pij(t)Hj(t)
GIN
http://arxiv.org/abs/1810.00826
h v ( k ) = M L P ( k ) ( ( 1 + ϵ ( k ) ) ⋅ h v ( k − 1 ) + ∑ u ∈ N ( v ) h u ( k − 1 ) ) h_v^{(k)}=\mathrm{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))