7 Theoretical Motivations
这一章主要是介绍不同的GNN理论动机,主要分为3类:
(1)基于图信号处理和图卷积的GNN
(2)基于概率推理的GNN
(3)基于图同构测试GNN
这三种看似截然不同的理论动机,背后其实都有相似的核心思想,最终殊途同归,都可以推导出GNN消息传递框架。
文章目录
7.1 GNNs and Graph Convolutions
这一部分的主要问题是:如何将卷积操作从信号处理领域推广到图数据,进而定义出图卷积(graph convolution)?
7.1.1 Convolutions and the Fourier Transform
总之,这一部分从时序信号(time signal)的卷积和傅里叶变换开始,进行各种令人窒息的数学推导😂,得出了以下几个结论:
(1)信号的离散卷积
f
⋆
h
f\star h
f⋆h可以看作是,对序列
(
f
(
t
1
)
,
.
.
.
,
f
(
t
N
)
)
(f(t_1),...,f(t_N))
(f(t1),...,f(tN))使用滤波器
h
h
h进行滤波操作。
(2)卷积的一个重要性质是平移等变性(equivaraint):先变换再卷积==先卷积再变换。
f
(
t
+
a
)
⋆
h
(
t
)
=
f
(
t
)
⋆
h
(
t
+
a
)
=
(
f
⋆
h
)
(
t
+
a
)
f(t+a)\star h(t)=f(t)\star h(t+a)=(f\star h)(t+a)\\
f(t+a)⋆h(t)=f(t)⋆h(t+a)=(f⋆h)(t+a)
7.1.2 From Time Signals to Graph Signals
这一部分主要是想从离散的时序信号(time signal)推广到图信号(graph signal)上。
那么这是如何做到的呢:
(1)将序列
(
f
(
t
1
)
,
.
.
.
,
f
(
t
N
−
1
)
)
(f(t_1),...,f(t_{N-1}))
(f(t1),...,f(tN−1))看作是一个首尾相接的链图(chain graph)。
(2)将某一时刻的信号值
f
(
t
i
)
f(t_i)
f(ti)看作是节点。
(3)图中的边代表了信号随着时间的传播。
这样,信号就可以表示成向量
f
∈
R
N
\boldsymbol f\in \mathbb R^N
f∈RN。
然后,通过对这个链图各种性质的分析,发现了图的邻接矩阵、拉普拉斯矩阵和信号的变化、差分的之间有着密切的联系。将信号乘以邻接矩阵,可以将信号从一个节点传播到另一个节点,用拉普拉斯乘法,可以计算每个节点上的信号与其相邻节点之间的差值。
类比这些有趣的性质,将卷及操作重新定义为滤波器
Q
h
∈
R
N
×
N
Q_h\in \mathbb R^{N\times N}
Qh∈RN×N和信号向量
f
\boldsymbol f
f的矩阵乘法:
(
f
⋆
h
)
(
t
)
=
Q
h
f
(f\star h)(t)=Q_h\boldsymbol f\\
(f⋆h)(t)=Qhf
接下来的工作就是如何去定义这个
Q
h
Q_h
Qh实值矩阵了。
为了满足对于A或L的平移不变性,一般可以将其定义为邻接矩阵A的多项式函数。
Q
h
=
p
N
(
A
)
=
∑
i
=
0
N
−
1
α
i
A
i
Q_h=p_N(A)=\sum_{i=0}^{N-1}\alpha_iA^i\\
Qh=pN(A)=i=0∑N−1αiAi
Generalizing to general graphs
推广到更一般的图上,卷积滤波器
Q
h
∈
R
∣
V
∣
×
∣
V
∣
Q_h\in \mathbb R^{|V|\times |V|}
Qh∈R∣V∣×∣V∣一般定义为A或L的变换:
Q
h
=
α
0
I
+
α
1
A
+
.
.
.
+
α
N
A
N
Q_h=\alpha_0I+\alpha_1A+...+\alpha_{N}A^N\\
Qh=α0I+α1A+...+αNAN
那么,对于信号
X
∈
R
∣
V
∣
×
m
X\in \mathbb R^{|V|\times m}
X∈R∣V∣×m的卷积(convolution)操作就是:
Q
h
X
=
α
0
I
X
+
α
1
A
X
+
.
.
.
+
α
N
A
N
X
Q_hX=\alpha_0IX+\alpha_1AX+...+\alpha_{N}A^NX\\
QhX=α0IX+α1AX+...+αNANX
可以看出,它聚合了N跳邻居的信息。
Graph convolutions and message passing GNNs
在基本GNN中,我们可以把消息传递层看作是,简单线性滤波器
Q
h
=
I
+
A
Q_h=I+A
Qh=I+A外加一个非线性函数。此外,通过堆叠多个消息传递层,GNN可以隐式计算邻接矩阵的高阶多项式。
The adjacency matrix, Laplacian, or a normalized variant?
一般情况下,
Q
h
Q_h
Qh就定义为A或L的多项式即可。但是在实际情况中,很多人也很喜欢将
Q
h
Q_h
Qh就定义为标准化后的A或L的多项式:
L
s
y
m
=
D
−
1
2
L
D
−
1
2
o
r
A
s
y
m
=
D
−
1
2
A
D
−
1
2
L_{sym}=D^{-\frac12}LD^{-\frac12}\ \ \ \ or\ \ \ \ A_{sym}=D^{-\frac12}AD^{-\frac12}\\
Lsym=D−21LD−21 or Asym=D−21AD−21
这样做的好处是使模型具有数值稳定性,并且这两种形式共享特征向量。
7.1.3 Spectral Graph Convolutions
从频域视角来看图卷积,一样可以推导出和上面相似的结论。
The Fourier transform and the Laplace operator
拉普拉斯算子
Δ
\Delta
Δ可以告诉我们节点和其邻居节点之间函数值的平均差值,经过一些推导。。。🤣发现可以使用L矩阵来近似
Δ
\Delta
Δ。
The graph Fourier transform
根据数学知识,我们知道L矩阵可以进行特征分解,
L
=
U
Λ
U
T
L=U\Lambda U^T\\
L=UΛUT
有了特征向量矩阵U,我们就可以定义图上的卷积操作:先对f和h做图傅里叶变换,再进行逐元素点积,最后使用逆图傅里叶变换,将结果转换到空域。
f
⋆
h
=
U
(
U
T
f
∘
U
T
h
)
=
(
U
d
i
a
g
(
θ
h
)
U
T
)
f
f\star h=U(U^Tf\circ U^Th)\\ =(Udiag(\theta_h)U^T)f\\
f⋆h=U(UTf∘UTh)=(Udiag(θh)UT)f
其中
θ
h
=
U
T
h
\theta_h=U^Th
θh=UTh,以上是无参数版本的滤波器,它并不能满足我们对于卷积的要求,因此需要将它推广到带参数的版本:
f
⋆
h
=
(
U
p
N
(
Λ
)
U
T
)
f
=
p
N
(
L
)
f
f\star h=(Up_N(\Lambda)U^T)f\\ =p_N(L)f\\
f⋆h=(UpN(Λ)UT)f=pN(L)f
最后我们得到的L的多项式
p
N
(
L
)
p_N(L)
pN(L)带有参数,卷积操作就变成了滤波器
Q
h
=
p
N
(
L
)
Q_h=p_N(L)
Qh=pN(L)乘以
f
f
f,和之前的结论是一致的。
7.1.4 Convolution-Inspired GNNs
很多GNN模型都是受到卷积操作的启发才开发出来的。
Purely convolutional approaches
纯卷积方法的模型被定义为堆叠多个具有非线性的卷积层。很多时间,这些模型的研究者都在寻找
p
N
(
Λ
)
p_N(\Lambda)
pN(Λ)或者
p
N
(
L
)
p_N(L)
pN(L),比如使用切比雪夫多项式(Chebyshev polynomials)。
Graph convolutional networks and connections to message passing
在GCN相关模型中,卷积层的定义变得更加简单了,它一般使用基于
I
+
A
I+A
I+A的图卷积操作。通过堆叠多个这样简单的卷积层来构建强大的模型。
H
(
k
+
1
)
=
σ
(
A
~
H
(
k
)
W
(
k
+
1
)
)
H^{(k+1)}=\sigma(\tilde AH^{(k)}W^{(k+1)})\\
H(k+1)=σ(A~H(k)W(k+1))
其中
A
~
=
(
D
+
I
)
−
1
2
(
I
+
A
)
(
D
+
I
)
−
1
2
\tilde A=(D+I)^{-\frac12}(I+A)(D+I)^{-\frac12}
A~=(D+I)−21(I+A)(D+I)−21。
这些基于
I
+
A
I+A
I+A的图卷积操作可以聚合包括自己在内的邻域信息,这样,消息传递就可以对应于包含W和σ的卷积层。
Over-smoothing as a low-pass convolutional filter
经过推理,GNN的消息传递使用的滤波器是一个低通滤波器,因此,堆叠更深的卷积层只会使滤波器变得更加简单,这也是过平滑问题的另一种解释。
GNNs without message passing
很多模型也通过消除消息传递来简化GNN。
Z
=
M
L
P
θ
(
f
(
A
)
M
L
P
ϕ
(
X
)
)
Z=MLP_{\theta}(f(A)\ MLP_{\phi}(X))\\
Z=MLPθ(f(A) MLPϕ(X))
其中f是一个关于A的确定的函数,不同的f可以衍生出不同的GNN模型。
这些方法背后的直觉是,我们通常不需要将可训练的神经网络与图卷积层交错堆叠。相反,我们可以只简单地使用神经网络来学习模型开始和结束时的特征转换,中间使用确定的卷积层来利用图结构。在许多分类基准测试中,这些简单的模型能够优于参数化程度更高的消息传递模型。
7.2 GNNs and Probabilistic Graphical Models
对于这一部分,我只能说我尽力了,但是真的看不懂😭😭😭。
主要内容是概率图模型(PGM),简单来说就是观测到A和X,我们需要用概率图模型去推测出潜在的
z
u
z_u
zu,就是用特定的消息传递算法来推断潜在变量的分布。
我们可以推导出,它其实也可以变成和消息传递框架类似的形式。
7.3 GNNs and Graph Isomorphism
另一种GNN的理论动机是基于同构图测试(graph isomorphism testing)方法的。使用Weisfieler-Lehman (WL) 同构算法也可以推导出基本GNN等模型,并且还可以运用到模型表达能力的分析当中。
7.3.1 Graph Isomorphism
两个图
G
1
G_1
G1和
G
2
G_2
G2同构的充要条件是:
P
A
1
P
T
=
A
2
a
n
d
P
X
1
=
X
2
PA_1P^T=A_2\quad and\quad PX_1=X_2\\
PA1PT=A2andPX1=X2
其中
P
∈
Z
∣
V
∣
×
∣
V
∣
P\in \mathbb Z^{|V|\times |V|}
P∈Z∣V∣×∣V∣是一个置换(排列)矩阵,用来打乱矩阵中的节点排列顺序。
之所以提出图同构的概念,是因为节点的排列顺序和底层的图结构是无关的,这样,如果两个图具有相同的结构,很多事情就变得简单了。
但不幸的是,想要暴力求解P就需要
O
(
∣
V
∣
!
)
O(|V|!)
O(∣V∣!)的时间复杂度,目前为止并没有多项式阶的算法,所以这是一个NP不确定问题(NPI)。
幸运的是,在实践当中,我们找到了一些其他方法。
7.3.2 Graph Isomorphism and Representational Capacity
图同构测试对于图表示学习来说十分有用,因为它可以量化不同GNN方法的表达能力。
我们当然希望定义一种完美的算法:
z
G
1
=
z
G
2
⇔
G
1
和
G
2
同
构
z_{G_1}=z_{G_2}\quad \Leftrightarrow \quad G_1和G_2同构\\
zG1=zG2⇔G1和G2同构
但是不会有这样完美的算法,除非NP=P。这样,就要求我们去找一些近似算法。
7.3.3 The Weisfieler-Lehman Algorithm
最经典的图同构算法非WL算法家族莫属,它和GNN也有着千丝万缕的联系,可以说相当重要了。最简单的1-WL算法可以被表示为:
(1)初始化每个节点的标签
l
G
i
(
0
)
(
v
)
l_{G_i}^{(0)}(v)
lGi(0)(v),一般取节点的度,如果有one-hot节点特征
x
v
x_v
xv也可以使用它。
(2)每次迭代为每个节点分配独一无二的新标签
l
G
i
(
i
+
1
)
(
v
)
l_{G_i}^{(i+1)}(v)
lGi(i+1)(v)。具体操作就是使用hash函数,将节点当前的label和邻居节点label的多集合映射为新的label,这一步操作和消息传递聚合邻域信息极其的相似。注意:这个hash函数是单射的。
l
G
i
(
i
+
1
)
(
v
)
=
H
A
S
H
(
l
G
i
(
i
)
(
v
)
,
{
{
l
G
i
(
i
)
(
u
)
,
∀
u
∈
N
(
v
)
}
}
)
l_{G_i}^{(i+1)}(v)=HASH\left(l_{G_i}^{(i)}(v),\{\{l_{G_i}^{(i)}(u),\forall u\in N(v)\}\}\right)\\
lGi(i+1)(v)=HASH(lGi(i)(v),{{lGi(i)(u),∀u∈N(v)}})
(3)重复步骤(2),直到在不同的图中,所有节点的label都收敛,
l
G
i
(
K
)
(
v
)
=
l
G
i
(
K
−
1
)
(
v
)
l_{G_i}^{(K)}(v)=l_{G_i}^{(K-1)}(v)
lGi(K)(v)=lGi(K−1)(v)。
(4)定义整张图的label表示为:
L
G
i
=
{
{
l
G
j
(
i
)
(
v
)
,
∀
v
∈
V
j
,
i
=
0
,
.
.
.
,
K
−
1
}
}
L_{G_i}=\{\{l_{G_j}^{(i)}(v),\forall v\in V_j,i=0,...,K-1\}\}\\
LGi={{lGj(i)(v),∀v∈Vj,i=0,...,K−1}}
这样,完美算法中的条件就可以改写为:
L
G
1
=
L
G
2
⇔
G
1
和
G
2
同
构
L_{G_1}=L_{G_2}\quad \Leftrightarrow \quad G_1和G_2同构\\
LG1=LG2⇔G1和G2同构
一般情况下,WL算法至多迭代
∣
V
∣
|V|
∣V∣次就可以收敛,并且成功地判断图是否同构。但它也会有失败的时候,就比如它无法区分下面这两张图:
7.3.4 GNNs and the WL Algorithm
GNN和WL真的特别像,但是也有不同之处。WL算法使用hash函数对离散的标签进行聚合;GNN使用神经网络对节点嵌入表示(连续实值向量)进行聚合。GNN可以看作是可微和连续的近似版本的WL算法。
定
理
:
\color{#FF3030}{\boldsymbol 定理:}
定理:如果消息传递GNN(
M
P
−
G
N
N
(
A
,
X
)
MP-GNN(A,X)
MP−GNN(A,X))的节点特征输入是离散量
x
u
∈
Z
m
x_u\in \mathbb Z^{m}
xu∈Zm,那么
h
u
(
K
)
=
h
v
(
K
)
⇔
l
G
(
K
)
(
u
)
=
l
G
(
K
)
(
v
)
h_u^{(K)}=h_v^{(K)}\quad \Leftrightarrow \quad l_{G}^{(K)}(u)=l_{G}^{(K)}(v)\\
hu(K)=hv(K)⇔lG(K)(u)=lG(K)(v)
这个定理指出了,MP-GNN和WL算法具有同样强大的表达能力。
当然,要达到上述要求,MP-GNN的聚合函数和更新函数还必须满足一些条件。如果函数是单射的,例如基本GNN,那么GNN的能力和WL算法同样强大;但大部分GNN模型的函数都不满足单射,因此,它们的表达能力就比不上WL算法。
7.3.5 Beyond the WL Algorithm
如何让MP-GNN比1-WL算法的能力更强大呢?下面介绍的几种方法虽然听起来挺厉害的,但是都存在计算困难的问题,需要使用近似算法才能应用于实践中。
Relational pooling
之前的MP-GNN方法在上面那张图中失败的关键原因是,它无法识别图中的闭合三角形,这才将两张原本不同构的图看作是同构的。
为了解决这一问题,有人提出了添加了节点ID的MP-GNN。
M
P
−
G
N
N
(
A
,
X
⊕
I
)
MP-GNN(A,X\oplus I)\\
MP−GNN(A,X⊕I)
简单地将节点的ID指示矩阵I拼接到特征矩阵X的后面。
但是,这一方法带来的新问题是,它打破了排列等变性这个条件。因此,为了重新满足排列等变性,需要对所有的可能排列进行求和操作,这也被称为关系池化(RP)方法。
R
P
−
G
N
N
(
A
,
X
)
=
∑
P
∈
P
M
P
−
G
N
N
(
P
A
P
T
,
(
P
X
)
⊕
I
)
RP-GNN(A,X)=\sum_{P\in \mathcal P}MP-GNN(PAP^T,(PX)\oplus I)\\
RP−GNN(A,X)=P∈P∑MP−GNN(PAPT,(PX)⊕I)
但不幸的是,由于排列矩阵P的可能性真的是太多了,这种方法在计算上是困难的,只能使用其近似算法。
The k-WL test and k-GNNs
这一类方法是将1-WL算法进行推广和调整为k-WL算法,从而改进GNN模型。
k-WL的核心思想是,它对包含k个节点的子图进行标注。它的算法流程几乎和1-WL算法完全一样,主要区别有2点:
(1)标注是针对子图元组
s
=
(
u
1
,
.
.
.
,
u
k
)
∈
V
k
s=(u_1,...,u_k)\in V^k
s=(u1,...,uk)∈Vk进行的,并且一开始就同构的子图需要有相同的label。
(2)关于子图的邻居如何定义的问题:
N
j
(
s
)
=
{
{
(
u
1
,
.
.
.
,
u
j
−
1
,
v
,
u
j
+
1
,
.
.
.
,
u
k
)
,
∀
v
∈
V
}
}
N_{\color{#FF3030}{j}}(s)=\{\{(u_1,...,u_{j-1},{\color{#FF3030}{v}},u_{j+1},...,u_k),\forall v\in V\}\}\\
Nj(s)={{(u1,...,uj−1,v,uj+1,...,uk),∀v∈V}}
这里表示的是第j个子图的邻居,是把元组s中的
u
j
u_j
uj替换为
v
{\color{#FF3030}{v}}
v。
由于(k+1)-WL一定比k-WL的表达能力要强,所以k-WL算法的表达能力大于1-WL算法的表达能力。这样,基于k-WL算法设计出来的k-GNN模型,就可以获得和k-WL算法具有同样强大的表达能力,从而使GNN模型的表达能力提升。
听起来很唬人,但其实也是计算困难的,必须要使用近似算法才行。
Invariant and equivariant k-order GNNs
这类方法被称为k阶GNN,是因为等变线性层包含了多达k个不同通道的张量。可以证明,k阶GNN模型与k-WL算法同样强大。然而,它在计算上也是困难的。