图神经网络基础 naive Graph Neural Network

本文介绍了图神经网络(GNN)的基本原理,包括节点信息传播、消息传递机制、邻接矩阵表示图、置换不变性和等价性。GNN通过节点的局部邻域信息聚合,逐步捕获图的深层结构。基本GNN模型、自环改进、归一化策略、注意力机制以及过平滑问题被详细讨论,展示了GNN如何处理图数据并提取特征。
摘要由CSDN通过智能技术生成

图神经网络

basis

CNN的输入为图像 image
RNN的输入为序列 sequence
GNN的输入为图 Graph

用什么来表示图呢?最容易想到的就是邻接矩阵A,他包含了一个图的所有信息。将图的邻接矩阵输入的一个MLP中可以得到图的embedding
z G = M L P ( A [ 1 ] ⊕ A [ 2 ] ⊕ … ⊕ A [ ∣ V ∣ ] ) \mathbf{z}_{\mathcal{G}}=\mathbf{M L P}(\mathbf{A}[1] \oplus \mathbf{A}[2] \oplus \ldots \oplus \mathbf{A}[|\mathcal{V}|]) zG=MLP(A[1]A[2]A[V])
不过这一模型不是permutation invariant,它会受到邻接矩阵中节点的任意顺序影响,了解语音信号处理的朋友应该知道这一定义,即置换不变性。而下面介绍的GNN则是个permutation equivariant模型
f ( P A P ⊤ ) = f ( A )  (Permutation Invariance)  f ( P A P ⊤ ) = P f ( A )  (Permutation Equivariance),  \begin{aligned} f\left(\mathbf{P A P}^{\top}\right)=f(\mathbf{A}) & \text { (Permutation Invariance) } \\ f\left(\mathbf{P A P}^{\top}\right)=\mathbf{P} f(\mathbf{A}) & \text { (Permutation Equivariance), } \end{aligned} f(PAP)=f(A)f(PAP)=Pf(A) (Permutation Invariance)  (Permutation Equivariance), 

Message Passing

先给出一些符号定义:graph G = ( V , E ) \mathcal{G}=(\mathcal{V}, \mathcal{E}) G=(V,E);node features X ∈ R d × ∣ V ∣ \mathbf{X} \in \mathbb{R}^{d \times|\mathcal{V}|} XRd×V;node embeddings z u , ∀ u ∈ V \mathbf{z}_{u}, \forall u \in \mathcal{V} zu,uV
我们用 h u ( k ) \mathbf{h}_{u}^{(k)} hu(k)表示每个节点 u u u 在GNN第 k k k 层中对应的hidden embedding,则GNN中的节点信息传播过程可以表示为:
h u ( k + 1 ) = UPDATE ⁡ ( k ) ( h u ( k ) ,  AGGREGATE  ( k ) ( { h v ( k ) , ∀ v ∈ N ( u ) } ) ) = UPDATE ⁡ ( k ) ( h u ( k ) , m N ( u ) ( k ) ) \begin{aligned} \mathbf{h}_{u}^{(k+1)} &=\operatorname{UPDATE}^{(k)}\left(\mathbf{h}_{u}^{(k)}, \text { AGGREGATE }^{(k)}\left(\left\{\mathbf{h}_{v}^{(k)}, \forall v \in \mathcal{N}(u)\right\}\right)\right) \\ &=\operatorname{UPDATE}^{(k)}\left(\mathbf{h}_{u}^{(k)}, \mathbf{m}_{\mathcal{N}(u)}^{(k)}\right) \end{aligned} hu(k+1)=UPDATE(k)(hu(k), AGGREGATE (k)({hv(k),vN(u)}))=UPDATE(k)(hu(k),mN(u)(k))

在这里插入图片描述
从上图可以更直观的理解这一过程,整个过程包含UPDATEAGGREGATE 两个部分,对应于信息的更新和信息的汇聚。

m N ( u ) \mathbf{m}_{\mathcal{N}(u)} mN(u) 表示从邻节点获取到的信息,初始时 h u ( 0 ) = x u \mathbf{h}_{u}^{(0)}=\mathbf{x}_{u} hu(0)=xu,经过k轮message passing后得到网络的输出 z u = h u ( K ) , ∀ u ∈ V \mathbf{z}_{u}=\mathbf{h}_{u}^{(K)}, \forall u \in \mathcal{V} zu=hu(K),uV

对于node embedding初始化时的node features x u , ∀ u ∈ V \mathbf{x}_{u}, \forall u \in \mathcal{V} xu,uV,在通常情况下有很多选择,比如生物网络中的基因表达特征或社会网络中的文本特征。如果没有这些特征,也可以图本身的node statistics(移步另一专栏)

Motivations and Intuitions

为什么这一信息传播机制是有效的?

在每次迭代时,每个节点都从其局部邻域聚合信息,随着这些迭代的进行,每个节点嵌入包含越来越多的来自图的更深处的信息。准确地说,在第一次迭代(k = 1)之后,每个节点嵌入都包含来自其1-hop邻域的信息,即每个节点嵌入都包含其直接图邻居的特征信息,这些特征在图中可以通过一条长度为1的路径到达;第二次迭代后(k = 2),每个节点嵌入包含来自其2-hop邻域的信息;一般情况下,经过k次迭代后,每个节点嵌入都包含k-hop邻域信息。

这些“信息”是什么?

  • structural information about the graph
  • feature-based information (类似CNN)

Basic GNN

最基本的GNN模型可以定义为:
h u ( k ) = σ ( W s e l f ( k ) h u ( k − 1 ) + W neigh  ( k ) ∑ v ∈ N ( u ) h v ( k − 1 ) + b ( k ) ) \mathbf{h}_{u}^{(k)}=\sigma\left(\mathbf{W}_{\mathrm{self}}^{(k)} \mathbf{h}_{u}^{(k-1)}+\mathbf{W}_{\text {neigh }}^{(k)} \sum_{v \in \mathcal{N}(u)} \mathbf{h}_{v}^{(k-1)}+\mathbf{b}^{(k)}\right) hu(k)=σWself(k)hu(k1)+Wneigh (k)vN(u)hv(k1)+b(k)
W self  ( k ) , W neigh  ( k ) ∈ R d ( k ) × d ( k − 1 ) \mathbf{W}_{\text {self }}^{(k)}, \mathbf{W}_{\text {neigh }}^{(k)} \in \mathbb{R}^{d^{(k)} \times d^{(k-1)}} Wself (k),Wneigh (k)Rd(k)×d(k1)是可学习的参数; b ( k ) ∈ R d ( k ) \mathbf{b}^{(k)} \in \mathbb{R}^{d^{(k)}} b(k)Rd(k)是bias,通常也可以忽略,但是可以使模型获取更优的表现,所以其实是必须的,上式也可以写为:
m N ( u ) = ∑ v ∈ N ( u ) h v \mathbf{m}_{\mathcal{N}(u)}=\sum_{v \in \mathcal{N}(u)} \mathbf{h}_{v} mN(u)=vN(u)hv

UPDATE ⁡ ( h u , m N ( u ) ) = σ ( W self  h u + W neigh ⁡ m N ( u ) ) \operatorname{UPDATE}\left(\mathbf{h}_{u}, \mathbf{m}_{\mathcal{N}(u)}\right)=\sigma\left(\mathbf{W}_{\text {self }} \mathbf{h}_{u}+\mathbf{W}_{\operatorname{neigh}} \mathbf{m}_{\mathcal{N}(u)}\right) UPDATE(hu,mN(u))=σ(Wself hu+WneighmN(u))

上面是node-level的模型,graph-level的也非常类似

Self-loops

为了防止过拟合,需要在基础模型上进行改进。加入self-loop可以防止节点特征在不断获取邻节点信息后丢失原有特征。
H ( t ) = σ ( ( A + I ) H ( t − 1 ) W ( t ) ) \mathbf{H}^{(t)}=\sigma\left((\mathbf{A}+\mathbf{I}) \mathbf{H}^{(t-1)} \mathbf{W}^{(t)}\right) H(t)=σ((A+I)H(t1)W(t))
W self  \mathbf{W}_{\text {self }} Wself  W neigh  \mathbf{W}_{\text {neigh }} Wneigh 可以统一为一个矩阵。

Aggregation

Neighborhood Normalization

当某个节点的邻节点数量不同会导致各个节点敏感度不同,因此需要进行归一化,常用的方式比如取平均:
m N ( u ) = ∑ v ∈ N ( u ) h v ∣ N ( u ) ∣ \mathbf{m}_{\mathcal{N}(u)}=\frac{\sum_{v \in \mathcal{N}(u)} \mathbf{h}_{v}}{|\mathcal{N}(u)|} mN(u)=N(u)vN(u)hv
或是symmetric normalization
m N ( u ) = ∑ v ∈ N ( u ) h v ∣ N ( u ) ∣ ∣ N ( v ) ∣ \mathbf{m}_{\mathcal{N}(u)}=\sum_{v \in \mathcal{N}(u)} \frac{\mathbf{h}_{v}}{\sqrt{|\mathcal{N}(u)||\mathcal{N}(v)|}} mN(u)=vN(u)N(u)N(v) hv

Aggregators

aggregation function有很多的选择,比如:
m N ( u ) = MLP ⁡ θ ( ∑ v ∈ N ( u ) MLP ⁡ ϕ ( h v ) ) \mathbf{m}_{\mathcal{N}(u)}=\operatorname{MLP}_{\theta}\left(\sum_{v \in N(u)} \operatorname{MLP}_{\phi}\left(\mathbf{h}_{v}\right)\right) mN(u)=MLPθvN(u)MLPϕ(hv)

m N ( u ) = MLP ⁡ θ ( 1 ∣ Π ∣ ∑ π ∈ Π ρ ϕ ( h v 1 , h v 2 , … , h v ∣ N ( u ) ∣ ) π i ) \mathbf{m}_{\mathcal{N}(u)}=\operatorname{MLP}_{\theta}\left(\frac{1}{|\Pi|} \sum_{\pi \in \Pi} \rho_{\phi}\left(\mathbf{h}_{v_{1}}, \mathbf{h}_{v_{2}}, \ldots, \mathbf{h}_{v_{|\mathcal{N}(u)|}}\right)_{\pi_{i}}\right) mN(u)=MLPθ(Π1πΠρϕ(hv1,hv2,,hvN(u))πi)
其中 ρ ϕ \rho_{\phi} ρϕ可以是处理时序输入的神经网络(如LSTM)

Neighborhood Attention

对聚合过程中每个节点信息赋予不同的权重,得到Graph Attention Network (GAT):
m N ( u ) = ∑ v ∈ N ( u ) α u , v h v \mathbf{m}_{\mathcal{N}(u)}=\sum_{v \in \mathcal{N}(u)} \alpha_{u, v} \mathbf{h}_{v} mN(u)=vN(u)αu,vhv
权重 α \alpha α 为:
α u , v = exp ⁡ ( a ⊤ [ W h u ⊕ W h v ] ) ∑ v ′ ∈ N ( u ) exp ⁡ ( a ⊤ [ W h u ⊕ W h v ′ ] ) \alpha_{u, v}=\frac{\exp \left(\mathbf{a}^{\top}\left[\mathbf{W h}_{u} \oplus \mathbf{W h}_{v}\right]\right)}{\sum_{v^{\prime} \in \mathcal{N}(u)} \exp \left(\mathbf{a}^{\top}\left[\mathbf{W h}_{u} \oplus \mathbf{W h}_{v^{\prime}}\right]\right)} αu,v=vN(u)exp(a[WhuWhv])exp(a[WhuWhv])
其中 ⊕ \oplus 为concatenation。
该公式还有一些变形,如
α u , v = exp ⁡ ( h u ⊤ W h v ) ∑ v ′ ∈ N ( u ) exp ⁡ ( h u ⊤ W h v ′ ) \alpha_{u, v}=\frac{\exp \left(\mathbf{h}_{u}^{\top} \mathbf{W} \mathbf{h}_{v}\right)}{\sum_{v^{\prime} \in \mathcal{N}(u)} \exp \left(\mathbf{h}_{u}^{\top} \mathbf{W h}_{v^{\prime}}\right)} αu,v=vN(u)exp(huWhv)exp(huWhv)

α u , v = exp ⁡ ( MLP ⁡ ( h u , h v ) ) ∑ v ′ ∈ N ( u ) exp ⁡ ( MLP ⁡ ( h u , h v ′ ) ) \alpha_{u, v}=\frac{\exp \left(\operatorname{MLP}\left(\mathbf{h}_{u}, \mathbf{h}_{v}\right)\right)}{\sum_{v^{\prime} \in \mathcal{N}(u)} \exp \left(\operatorname{MLP}\left(\mathbf{h}_{u}, \mathbf{h}_{v^{\prime}}\right)\right)} αu,v=vN(u)exp(MLP(hu,hv))exp(MLP(hu,hv))

Over-smoothing

过平滑是图神经网络里一个非常核心的问题,在多轮迭代后,某些节点的“个性”会丢失,使得许多节点的特征趋向与邻节点相同。这一问题限制了GNN网络层数的加深。

一些处理思路和图神经网络深度应用将在后续文章介绍

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值