自学内容网 自学内容网

【note】GNN

WL-test

https://dl.acm.org/doi/10.5555/1953048.2078187

WL-test 是一个判断图同构问题的启发式算法(可能会把非同构判断成同构)。

1-WL-test 是最简单的一个版本,方法如下:

  1. 初始时,点 v v v 特征为 l 0 ( v ) l_0(v) l0(v)
  2. 每次迭代时,用邻点特征的多重集更新每个点的特征,即令 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({li1(u)uN(v)})
  3. 最终比较两张图所有点特征的多重集是否相等

迭代 h h h 次,时间复杂度 O ( h m ) O(hm) O(hm)。(就是比较深度为 h h h 的 dfs 树是否同构)

GNN

GNN 有多种结构,但每一层通常都可以写成如下形式:

m a ( t ) = AGGREGATE N ( { ( A ~ v u , h u ( t ) ) ∣ u ∈ N ( v ) } ) , m v ( t ) = AGGREGATE I ( { A ~ v u ∣ u ∈ N ( v ) } ) h v ( t ) , h v ( t + 1 ) = COMBINE ( m v ( t ) , m a ( t ) ) . \begin{aligned} &\begin{aligned}m_a^{(t)}=\text{AGGREGATE}^N\left(\left\{(\tilde{A}_{vu},h_u^{(t)})|u\in\mathcal{N}(v)\right\}\right),\end{aligned} \\ &m_v^{(t)}=\text{AGGREGATE}^I\left(\left\{\tilde{A}_{vu}|u\in\mathcal{N}(v)\right\}\right)h_v^{(t)}, \\ &\begin{aligned}h_v^{(t+1)}&=\text{COMBINE}\Big(m_v^{(t)},m_a^{(t)}\Big).\end{aligned} \end{aligned} ma(t)=AGGREGATEN({(A~vu,hu(t))uN(v)}),mv(t)=AGGREGATEI({A~vuuN(v)})hv(t),hv(t+1)=COMBINE(mv(t),ma(t)).

下面尝试整理一下常见的几种结构。

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 为(带权)度数矩阵。

时间 O ( m d 2 ) O(md^2) O(md2) 空间 O ( m ) O(m) O(m)

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=wN(v)Mt(hvt,hwt,evw)=Ut(hvt,mvt+1)

GraphSAGE

http://arxiv.org/abs/1706.02216

该结构的 OOD 泛化性较强

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(Whu(k1)), uN(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(k1),av(k)]

时间 O ( s n d 2 ) O(snd^2) O(snd2) 空间 O ( n ) O(n) O(n)

GAT

http://arxiv.org/abs/1710.10903
http://arxiv.org/abs/2105.14491 (GATv2)

就是在图上做 attention,原文的 attention score 是用 MLP 算的。

α 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=kNiexp(LеаkyReLU(a T[Wh iWh k]))exp(LeakyReLU(a T[Wh iWh j]))

时间 O ( h n d 2 + h m d ) O(hnd^2+hmd) O(hnd2+hmd) 空间 O ( n 2 ) O(n^2) O(n2)

GATv2 改为: e ( h i , h j ) = a ⊤ LeakyReLU ( W ⋅ [ h i ∥ h j ] ) e\left(\boldsymbol{h}_i,\boldsymbol{h}_j\right)=\boldsymbol{a}^\top\text{LeakyReLU}\left(\boldsymbol{W}\cdot[\boldsymbol{h}_i\|\boldsymbol{h}_j]\right) e(hi,hj)=aLeakyReLU(W[hihj])

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) h i= k=1Kσ(jNiαijkWkh j)

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))]jN(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)=jN(i){i}Pij(t)Hj(t)

GIN

http://arxiv.org/abs/1810.00826

文章指出 GNN 表达能力的上限是 1-WL-test,而 GIN 可以接近这个上限。

其中聚合函数用 sum 表达能力会比 mean 和 max 强。

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(k1)+uN(v)hu(k1))

时间 O ( m d 2 ) O(md^2) O(md2) 空间 O ( m ) O(m) O(m)

GNN beyond 1-WL-test

后续又提出了一些超越 1-WL-test 表达能力的 GNN,下面尝试整理一下。

NGNN

http://arxiv.org/abs/2110.13197

使用 GNN 套 GNN,学习到的特征从 subtree 变成了 subgraph,但复杂度高了很多。

m v , G w h t + 1 = ∑ u ∈ N ( v ∣ G w h ) M t ( h w t , h u , G w h t , e v u ) \boldsymbol{m}_{v,G_w^h}^{t+1}=\sum_{u\in N(v|G_w^h)}M_t(\boldsymbol{h}_w^t,\boldsymbol{h}_{u,G_w^h}^t,\boldsymbol{e}_{vu}) mv,Gwht+1=uN(vGwh)Mt(hwt,hu,Gwht,evu)

h v , G w h t + 1 = U t ( h v , G w h t , m v , G w h t + 1 ) \boldsymbol{h}_{v,G_w^h}^{t+1}=U_t(\boldsymbol{h}_{v,G_w^h}^t,\boldsymbol{m}_{v,G_w^h}^{t+1}) hv,Gwht+1=Ut(hv,Gwht,mv,Gwht+1)

GraphSNN

https://openreview.net/forum?id=uxgg9o7bI_3

根据结构定义边权,从而增强 GNN 的表达能力,方法如下:

计算每个点和所有邻点的导出子图: S v = G ( N ( v ) ∪ { v } ) S_v=G(\mathcal N(v)\cup \{v\}) Sv=G(N(v){v})

S v u = S v ∩ S u S_{vu}=S_v\cap S_u Svu=SvSu

给每条边计算权值: A v u = ω ( S v , S v u ) A_{vu}=\omega(S_v,S_{vu}) Avu=ω(Sv,Svu)

文中 ω \omega ω 定义为: ω ( S v , S v u ) = ∣ E v u ∣ ∣ V v u ∣ λ − 1 ∣ V v u − 1 ∣ \omega(S_v,S_{vu})=\frac{|E_{vu}||V_{vu}|^{\lambda-1}}{|V_{vu}-1|} ω(Sv,Svu)=Vvu1∣Evu∣∣Vvuλ1,其中 λ > 0 \lambda>0 λ>0

归一化的边权为 A ~ v u = A v u ∑ u ∈ N ( v ) A v u \tilde{A}_{vu}=\frac{A_{vu}}{\sum_{u\in\mathcal{N}(v)}A_{vu}} A~vu=uN(v)AvuAvu

每层 h v ( t + 1 ) = M L P θ ( γ ( t ) ( ∑ u ∈ N ( v ) A ~ v u + 1 ) h v ( t ) + ∑ u ∈ N ( v ) ( A ~ v u + 1 ) h u ( t ) ) h_v^{(t+1)}=\mathsf{MLP}_\theta\Big(\gamma^{(t)}\Big(\sum_{u\in\mathcal{N}(v)}\tilde{A}_{vu}+1\Big)h_v^{(t)}+\sum_{u\in\mathcal{N}(v)}\Big(\tilde{A}_{vu}+1\Big)h_u^{(t)}\Big) hv(t+1)=MLPθ(γ(t)(uN(v)A~vu+1)hv(t)+uN(v)(A~vu+1)hu(t))

时间 O ( m d 2 ) O(md^2) O(md2) 空间 O ( m ) O(m) O(m)


原文地址:https://blog.csdn.net/qq_47903865/article/details/143079715

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!