图卷积神经网络
利用图卷积神经网络提取拓扑图的空间特征,其方式主要可以分为基于空间域(vertex domain,spatial domain)的方法 以及 基于谱域(spectral domain)的方法两种。
(一)基于空间域的方法:
该方法思想较为直观,将图结构的数据转化为卷积神经网络能够高效处理的结构。处理的过程主要分为两个步骤:
1.从图结构当中选出具有代表性的nodes序列;
2.对于选出的每一个node求出一个卷积的邻域(neighborhood field)。
详细介绍可参阅:https://www.leiphone.com/news/201706/ppA1Hr0M0fLqm7OP.html
论文出处:Learning Convolutional Neural Networks for Graphs
(二)基于谱的方法:
基于图谱的方法主要思路是借助图谱的理论来实现拓扑图上的卷积操作。图谱理论简单的概括就是借助于图的拉普拉斯矩阵的特征值和特征向量来研究图的性质。
该方法主要经过以下三个步骤:对图求拉普拉斯矩阵、对拉普拉斯矩阵进行特征分解以及傅立叶转换、卷积运算。
1.拉普拉斯矩阵
对于图
G
=
(
V
,
E
)
G=(V,E)
G=(V,E),其拉普拉斯矩阵的定义为
L
=
D
−
A
L=D-A
L=D−A,其中
D
D
D为对角矩阵,对角矩阵的对角线上各元素依次为各个顶点的度,
A
A
A是图的邻接矩阵。
实际上,常见的拉普拉斯矩阵有以下三种:
- L = D − A L=D-A L=D−A,其更专业的名称叫Combinatorial Laplacian
- L s y s = D − 1 / 2 L D − 1 / 2 L^{sys}=D^{-1/2}LD^{-1/2} Lsys=D−1/2LD−1/2 定义的叫Symmetric normalized Laplacian
- L r w = D − 1 L L^{rw}=D^{-1}L Lrw=D−1L 定义的叫Random walk normalized Laplacian
2.拉普拉斯矩阵的特征分解及傅立叶转换
矩阵特征分解的充要条件为n阶方阵存在n个线性无关的特征向量,而拉普拉斯矩阵是半正定对称矩阵,其有如下性质:
- 对称矩阵一定n个线性无关的特征向量
- 半正定矩阵的特征值一定非负
- 对阵矩阵的特征向量相互正交,即所有特征向量构成的矩阵为正交矩阵
由上可知拉普拉斯矩阵可以特征分解,其特征分解为:
L
=
U
(
λ
1
⋱
λ
n
)
U
−
1
L=U\left(\begin{array}{ccccc} \lambda_1 \\ & \ddots & \\ & & \lambda_n \end{array}\right)U^{-1}
L=U⎝⎛λ1⋱λn⎠⎞U−1
其中,
U
=
(
u
⃗
1
,
u
⃗
2
,
⋯
 
,
u
⃗
n
)
U=(\vec u_1,\vec u_2,\cdots,\vec u_n)
U=(u1,u2,⋯,un)是列向量为单位特征向量的矩阵,即
u
⃗
l
\vec u_l
ul为列向量;
(
λ
1
⋱
λ
n
)
\left(\begin{array}{ccccc} \lambda_1 \\ & \ddots & \\ & & \lambda_n \end{array}\right)
⎝⎛λ1⋱λn⎠⎞是n个特征值构成的对角矩阵。
由于
U
U
U是正交矩阵,即
U
U
T
=
E
UU^{T}=E
UUT=E,所以特征分解又可以写成:
L
=
U
(
λ
1
⋱
λ
n
)
U
T
L=U\left(\begin{array}{ccccc} \lambda_1 \\ & \ddots & \\ & & \lambda_n \end{array}\right)U^{T}
L=U⎝⎛λ1⋱λn⎠⎞UT
U
T
U^{T}
UT即为在此图上的图傅立叶转换矩阵。
因此,图上的傅里叶变换为:
f
^
=
U
T
f
\hat{f}=U^Tf
f^=UTf
其中
f
(
i
)
f(i)
f(i)与图中的顶点一一对应。
3.图的卷积
对图上进行卷积,即为卷积核 h h h与图 f f f进行卷积运算,换言之,我们的目的是求函数 h ( t ) h(t) h(t)与 f ( t ) f(t) f(t)的卷积。
卷积定理: F [ f 1 ( t ) ∗ f 2 ( t ) ] = F 1 ( ω ) ⋅ F 2 ( ω ) F[f_1(t)*f_2(t)]=F_1(\omega)·F_2(\omega) F[f1(t)∗f2(t)]=F1(ω)⋅F2(ω)
卷积定理定义,函数卷积的傅里叶变换是函数傅立叶变换的乘积。
因此,函数
h
(
t
)
h(t)
h(t)与
f
(
t
)
f(t)
f(t)的卷积是其函数傅立叶变换乘积的傅立叶逆变换,即:
f
∗
h
=
F
−
1
[
f
^
h
^
]
f*h=F^{-1}[\hat{f}\hat{h}]
f∗h=F−1[f^h^]
我们已知:
f
^
=
U
T
f
\hat{f}=U^Tf
f^=UTf,
h
^
\hat{h}
h^的矩阵形式为
(
h
^
(
λ
1
)
⋱
h
^
(
λ
n
)
)
\left(\begin{array}{ccccc} \hat{h}(\lambda_1) \\ & \ddots & \\ & & \hat{h}(\lambda_n) \end{array}\right)
⎝⎛h^(λ1)⋱h^(λn)⎠⎞
则两者的傅立叶变换乘积即为:
(
h
^
(
λ
1
)
⋱
h
^
(
λ
n
)
)
U
T
f
\left(\begin{array}{ccccc} \hat{h}(\lambda_1) \\ & \ddots & \\ & & \hat{h}(\lambda_n) \end{array}\right)U^Tf
⎝⎛h^(λ1)⋱h^(λn)⎠⎞UTf
再乘以
U
U
U求两者傅立叶变换乘积的逆变换,则求出卷积:
(
f
∗
h
)
G
=
U
(
h
^
(
λ
1
)
⋱
h
^
(
λ
n
)
)
U
T
f
(f*h)_G=U\left(\begin{array}{ccccc} \hat{h}(\lambda_1) \\ & \ddots & \\ & & \hat{h}(\lambda_n) \end{array}\right)U^Tf
(f∗h)G=U⎝⎛h^(λ1)⋱h^(λn)⎠⎞UTf
4*.傅立叶变换及卷积在图上的推广
具体推导过程涉及把传统傅里叶变换以及卷积迁移到图的过程,以下部分内容可以略过。
(1)图的傅立叶变换
(2)图的傅立叶逆变换
(3)图的卷积
注:
读完知乎大神的回答受益良多,因此重新整理为该文章。知乎原回答为:
如何理解 Graph Convolutional Network(GCN)? - superbrother的回答 - 知乎
https://www.zhihu.com/question/54504471/answer/332657604
关于傅立叶变换的相关知识,推荐这篇博客:https://www.cnblogs.com/h2zZhou/p/8405717.html
受限于我对GCN的理解程度,目前文章并没有太多私货,我只是知识的搬运工,今后将不断丰富内容。