一、图的基本概念
对于接触过数据结构和算法的人来说,图并不是一个陌生的概念。一个图(Graph)由一些顶点[Vertex,也称为节点(Node)]和连接这些顶点的边(Edge)组成。给定一个图
G
=
(
V
,
E
)
G=(V,E)
G=(V,E),其中
V
=
{
v
1
,
v
2
,
⋯
,
v
n
}
V=\{v_1,v_2,\cdots,v_n\}
V={v1,v2,⋯,vn}是一个具有n个顶点的集合,
E
∈
V
×
V
E{\in}V{\times}V
E∈V×V是边的集合。
a. 邻接矩阵
我们用邻接矩阵(Adjacent Matrix)
A
∈
R
n
×
n
A{\in}R^{n{\times}n}
A∈Rn×n表示顶点之间的连接关系。如果顶点
v
i
v_i
vi和
v
j
v_j
vj之间有连接,就表示
(
v
i
,
v
j
)
(v_i,v_j)
(vi,vj)组成了一条边
(
v
i
,
v
j
)
∈
E
(v_i,v_j){\in}E
(vi,vj)∈E,那么对应的邻接矩阵的元素
A
i
j
=
1
A_{ij}=1
Aij=1,否则
A
i
j
=
0
A_{ij}=0
Aij=0。邻接矩阵的对角线元素通常设置为0。
b. 顶点的度
一个顶点的度(Degree)指的是与该顶点连接的边的总数。我们用
d
(
v
)
d(v)
d(v)表示顶点v的度,则顶点的度和边之间有关系
∑
v
∈
V
d
(
v
)
=
2
∣
E
∣
\sum\nolimits_{v{\in}V}d(v)=2|E|
∑v∈Vd(v)=2∣E∣,即所有顶点的度之和是边的数目的两倍
c. 度矩阵
图G的度矩阵(Degree Matrix)D是一个
n
×
n
n{\times}n
n×n的对角阵,对角线上的元素是对应顶点的度:
d
i
,
j
=
{
d
(
v
i
)
如果
i
=
j
0
其他
d_{i,j}= \begin{cases} d(v_i)& \text{如果}i=j\\ 0& \text{其他} \end{cases}
di,j={d(vi)0如果i=j其他
d. 路径
从顶点u到顶点v的一条路径(Path)是指一个序列
v
0
,
e
1
,
v
1
,
e
2
,
v
2
,
⋯
,
e
k
,
v
k
v_0,e_1,v_1,e_2,v_2,\cdots,e_k,v_k
v0,e1,v1,e2,v2,⋯,ek,vk,其中
v
0
=
u
v_0=u
v0=u是起点,
v
k
=
v
v_k=v
vk=v是终点,
e
i
e_i
ei是一条从
v
i
−
1
v_{i-1}
vi−1到
v
i
v_{i}
vi的边
e. 距离
如果从顶点u到顶点v的最短路径存在,则这条最短路径的长度称为顶点u与顶点v之间的距离。如果u和v之间不存在路径,则距离为无穷大。
f. 邻居节点
如果顶点
v
i
v_i
vi和
v
j
v_j
vj之间有边连接,则
v
i
v_i
vi和
v
j
v_j
vj互为邻接点(Neighborhood),
v
i
v_i
vi的邻接点集合写作
N
v
i
N_{v_i}
Nvi或
N
(
v
i
)
N({v_i})
N(vi)。如果
v
j
v_j
vj到
v
i
v_i
vi的距离为
K
K
K,则称
v
j
v_j
vj为
v
i
v_i
vi的K阶邻居节点
g. 权重图
如果图里的边不仅表示连接关系,而且具有表示连接强弱的权重,则这个图称为权重图(Weighted Graph)。在权重图中,邻接矩阵的元素不再是0,1,而可以是任意实数
A
i
j
∈
R
A_{ij}{\in}R
Aij∈R。顶点的度也相对应地变为与该顶点连接的边的权重的和。由于非邻接点的权重为0,所以顶点的度也等价于邻接矩阵A对应行的元素的和。
h. 有向图
如果一个图中每条边都有方向,则称这个图为有向图(Directed Graph),反之称为无向图。在有向图中,从顶点u到v的边和从v到u的边是两条不同的边。反映在邻接矩阵中,有向图的邻接矩阵通常是非对称的,而无向图的邻接矩阵一定是对称的,即
A
i
j
=
A
j
i
A_{ij}=A_{ji}
Aij=Aji
i. 图的遍历
从图的某个顶点出发,沿着图中的边访问每个顶点且只访问一次,这叫做图的遍历(Graph Traversal)。图的遍历一般有两种:深度优先搜索和广度优先搜索。
j. 图的同构
图的同构(Graph Isomorphism)指的是两个图完全等价。两个图
G
=
(
V
,
E
)
G=(V,E)
G=(V,E)和图
G
′
=
(
V
′
,
E
′
)
G'=(V',E')
G′=(V′,E′)是同构的,当且仅当对于任意
(
u
,
v
)
∈
E
′
(u,v){\in}E'
(u,v)∈E′。
二、简易图谱论
早期,很多图神经网络的概念是基于图信号分析或图扩散的,而这些都需要与图谱论相关的知识。下面介绍一些与图谱论相关的重要概念,如拉普拉斯矩阵及其背后的意义、图论傅里叶变换等。
2.1 拉普拉斯矩阵
对于一个有n个顶点的图G,它的拉普拉斯矩阵(Laplacian Matrix)定义为:
L
=
D
−
A
L=D-A
L=D−A 其中,D是图G的度矩阵,A是图G的邻接矩阵。L中的元素可定义为:
L
i
j
=
{
d
(
v
i
)
如果
i
=
j
−
A
i
j
如果
i
≠
j
并且
v
i
与
v
j
之间有边
0
其他
L_{ij}= \begin{cases} d(v_i)& 如果i=j \\ -A_{ij}& 如果i\ {\neq}\ j并且v_i与v_j之间有边 \\ 0& 其他 \end{cases}
Lij=⎩
⎨
⎧d(vi)−Aij0如果i=j如果i = j并且vi与vj之间有边其他 通常, 我们需要将拉普拉斯矩阵进行归一化。常用的有两种方式。
(1) 对称归一化的拉普拉斯矩阵(Symmetric Normalized Laplacian Matrix)
L
s
y
m
=
D
−
1
2
L
D
−
1
2
=
I
−
D
−
1
2
A
D
−
1
2
L^{sym}=D^{-\frac{1}{2}}LD^{-\frac{1}{2}}=I-D^{-\frac{1}{2}}AD^{-\frac{1}{2}}
Lsym=D−21LD−21=I−D−21AD−21 (2) 随机游走归一化的拉普拉斯矩阵(Random Walk Normalized Laplacian Matrix)
L
r
w
=
D
−
1
L
=
I
−
D
−
1
A
L^{rw}=D^{-{1}}L=I-D^{-{1}}A
Lrw=D−1L=I−D−1A 以下面这个图为例,假设每条边权重为1,得到这个图的邻接矩阵、度矩阵和拉普拉斯矩阵。
从这个L矩阵中可以观察到拉普拉斯的以下几条性质。
○ L是对称的
○ L是半正定矩阵(每个特征值
λ
i
≥
0
\lambda_i{\geq}0
λi≥0)
○ L的每一行每一列的和为0
○ L的最小特征值为0。给定一个特征向量
v
0
=
(
1
,
1
,
⋯
,
1
)
T
v_0=(1,1,\cdots,1)^T
v0=(1,1,⋯,1)T,根据上一条性质,L的每一行之和为0,所以
L
v
0
=
0
Lv_0=0
Lv0=0
2.2 拉普拉斯二次型
拉普拉斯矩阵是半正定矩阵,这就意味着对任意一个n维非0向量
z
z
z,
z
T
L
z
≥
0
z^TLz{\geq}0
zTLz≥0。式子展开后为:
z
T
L
z
=
z
T
D
z
−
z
T
A
z
=
∑
i
=
1
n
d
i
z
i
2
−
∑
i
,
j
=
1
n
z
i
z
j
A
i
j
=
1
2
(
∑
i
=
1
n
d
i
z
i
2
−
2
∑
i
,
j
=
1
n
z
i
z
j
A
i
j
+
∑
j
=
1
n
d
j
z
j
2
)
=
1
2
∑
i
,
j
=
1
n
A
i
j
(
z
i
−
z
j
)
2
=
∑
(
v
i
,
v
j
)
∈
E
w
i
j
(
z
i
−
z
j
)
2
z^TLz=z^TDz-z^TAz=\sum_{i=1}^nd_iz_i^2-\sum_{i,j=1}^nz_iz_jA_{ij}\\=\frac{1}{2}(\sum_{i=1}^nd_iz_i^2-2\sum_{i,j=1}^nz_iz_jA_{ij}+\sum_{j=1}^nd_jz_j^2)\\=\frac{1}{2}\sum_{i,j=1}^nA_{ij}(z_i-z_j)^2\\=\sum_{(v_i,v_j){\in}E}w_{ij}(z_i-z_j)^2
zTLz=zTDz−zTAz=i=1∑ndizi2−i,j=1∑nzizjAij=21(i=1∑ndizi2−2i,j=1∑nzizjAij+j=1∑ndjzj2)=21i,j=1∑nAij(zi−zj)2=(vi,vj)∈E∑wij(zi−zj)2 这个式子称为拉普拉斯二次型。其中,
d
i
d_i
di是度矩阵D的对角元素,
d
i
=
d
(
v
i
)
=
∑
j
=
1
n
A
i
j
d_i=d(v_i)=\sum\nolimits_{j=1}^nA_{ij}
di=d(vi)=∑j=1nAij。为了区分A中的边和非边元素,我们用
w
i
j
w_{ij}
wij表示
v
i
v_i
vi与
v
j
v_j
vj连接时它们之间的权重。很显然,这个式子是大于等于0的,所以L是半正定的。
2.3 拉普拉斯矩阵与图扩散
拉普拉斯矩阵的另一个重要作用是作为图上的离散拉普拉斯算子。假设我们在图上模拟一个热扩散的过程,
ϕ
(
t
)
\phi(t)
ϕ(t)是图上每个顶点的热量分布,热量传播的速度和顶点之间的热量差成正比(根据冷却定律),于是在点
v
i
v_i
vi上这个扩散过程可以表示为
d
ϕ
i
d
t
=
c
∑
j
A
i
j
(
ϕ
j
−
ϕ
i
)
=
c
(
∑
j
A
i
j
ϕ
j
−
∑
j
A
i
j
ϕ
j
)
=
c
(
∑
j
A
i
j
ϕ
j
−
d
(
v
i
)
ϕ
i
)
=
−
c
∑
j
(
d
(
v
i
)
δ
i
j
−
A
i
j
)
ϕ
j
=
−
c
∑
j
L
i
j
ϕ
j
\frac{d\phi_i}{dt} =c\sum_jA_{ij}(\phi_j-\phi_i)\\ =c(\sum_jA_{ij}\phi_j-\sum_jA_{ij}\phi_j)\\ =c(\sum_jA_{ij}\phi_j-d(v_i)\phi_i)\\ =-c\sum_j(d(v_i)\delta_{ij}-A_{ij})\phi_j\\ =-c\sum_jL_{ij}\phi_j
dtdϕi=cj∑Aij(ϕj−ϕi)=c(j∑Aijϕj−j∑Aijϕj)=c(j∑Aijϕj−d(vi)ϕi)=−cj∑(d(vi)δij−Aij)ϕj=−cj∑Lijϕj 其中,
δ
i
j
\delta_{ij}
δij是一个指示变量,如果
i
=
j
i=j
i=j,则
δ
i
j
=
1
\delta_{ij}=1
δij=1,否则
δ
i
j
=
0
\delta_{ij}=0
δij=0。写成整个图上的矩阵形式,可以得到
d
ϕ
(
t
)
d
t
=
−
c
L
ϕ
(
t
)
\frac{d\phi(t)}{dt}=-cL\phi(t)
dtdϕ(t)=−cLϕ(t)
对比热传播方程
d
ϕ
(
t
)
d
t
=
k
ϕ
(
t
)
=
k
△
ϕ
(
t
)
\frac{d\phi(t)}{dt}=k\phi(t)=k\triangle\phi(t)
dtdϕ(t)=kϕ(t)=k△ϕ(t)可知,-L在上式中相当于拉普拉斯算子
△
\triangle
△(欧式空间的二阶微分算子),所以L才被叫作拉普拉斯矩阵(Graph Laplacian)。
2.4 图论傅里叶变换
图论傅里叶变换(Graph Fourier Transformation)将离散傅里叶变换延伸到处理图上的信号,它已经成为图信号分析的一个基础工具。简单地讲,图论傅里叶变换就是基于图拉普拉斯矩阵将图信号从空域(顶点上)f(t)转换到谱域(频域)F(w)的一种方法。
让我们看一个传统的(连续)傅里叶变换:
F
(
w
)
=
∫
f
(
t
)
e
−
i
w
t
d
t
F(w)={\int}f(t)e^{-iwt}dt
F(w)=∫f(t)e−iwtdt 其中,
e
−
i
w
t
e^{-iwt}
e−iwt是其基函数,这个基函数其实与拉普拉斯算子有很大的关系:
△
e
−
i
w
t
=
−
w
2
e
−
i
w
t
{\triangle}e^{-iwt}=-w^2e^{-iwt}
△e−iwt=−w2e−iwt 这是不是与特征值分解方程
L
u
=
λ
u
Lu={\lambda}u
Lu=λu很像?因此,
e
−
i
w
t
e^{-iwt}
e−iwt可以看作拉普拉斯算子的特征函数,而w则与特征值相关。在介绍图扩散的时候说过,图拉普拉斯矩阵对应着图上的拉普拉斯算子,那么如何把傅里叶变换迁移到图上呢?很自然地,我们把拉普拉斯算子的特征函数换成拉普拉斯矩阵的特征向量即可。
L
=
U
Λ
U
−
1
=
U
Λ
U
T
L=U{\Lambda}U^{-1}=U{\Lambda}U^T
L=UΛU−1=UΛUT 其中,U是一个正交化的特征向量矩阵,有
U
U
T
=
U
T
U
=
I
UU^T=U^TU=I
UUT=UTU=I,
Λ
\Lambda
Λ是特征值得对角阵。U提供了一个在图上完全正交的基底,图上的任意一个向量f都可以表示成U中特征向量的线性组合:
f
=
∑
l
ϕ
^
l
u
l
f=\sum_l\hat\phi_lu_l
f=l∑ϕ^lul 其中,
u
l
u_l
ul是U的第l个列向量,也是对应特征值
λ
l
\lambda_l
λl的特征向量。如果我们用这些特征向量替代原来傅里叶变换式中的基底,把原来的时域变为顶点上的空域,那么图上的傅里叶变换就变成
F
(
λ
l
)
=
∑
i
=
1
N
f
(
i
)
u
l
(
i
)
=
u
l
T
f
=
ϕ
^
l
F(\lambda_l)=\sum_{i=1}^Nf(i)u_l(i)=u_l^Tf=\hat\phi_l
F(λl)=i=1∑Nf(i)ul(i)=ulTf=ϕ^l 其中,
λ
l
\lambda_l
λl表示第l个特征值,
f
(
i
)
f(i)
f(i)对应第i个节点上的特征,
u
l
(
i
)
u_l(i)
ul(i)表示特征向量
u
l
u_l
ul的第i个元素。推广到矩阵形式就是
U
T
f
U^Tf
UTf。下面给出图信号、图论傅里叶变换以及逆变换的定义。
○ 图信号:定义在图上的所有顶点上的信号
ϕ
:
V
→
R
n
\phi:V{\rightarrow}R^n
ϕ:V→Rn。可以将图信号当成一个n维的向量
ϕ
∈
R
n
\phi{\in}R^n
ϕ∈Rn,其中
ϕ
i
\phi_i
ϕi对应顶点
v
i
v_i
vi上的值
○ 图论傅里叶变换:对于一个图信号
ϕ
\phi
ϕ,图论傅里叶变换定义为
ϕ
^
=
U
−
1
ϕ
=
U
T
ϕ
\hat{\phi}=U^{-1}\phi=U^T\phi
ϕ^=U−1ϕ=UTϕ
○ 图论傅里叶逆变换:对于一个谱域上的图信号
ϕ
^
\hat{\phi}
ϕ^,图论傅里叶逆变换定义为
U
ϕ
^
U\hat{\phi}
Uϕ^
实际上,图论傅里叶变换本质上就是将一个向量变换到以拉普拉斯矩阵的特征向量为基底的新空间中,这个空间也就是我们常说的谱域,它为图信号在谱域上的处理提供了一个工具。在谱域上,我们可以定义各种图上的信号过滤器,并延伸到定义图上的卷积操作。图论傅里叶变换是可逆的,即
U
ϕ
^
=
U
U
−
1
ϕ
^
=
ϕ
^
U\hat{\phi}=UU^{-1}\hat{\phi}=\hat{\phi}
Uϕ^=UU−1ϕ^=ϕ^。