原文首发于个人站点 图卷积网络GCN(Graph Convolution Network)(二)图上的傅里叶变换和逆变换
公众号:【DreamHub】
由于文章篇幅较长,因此将其分解为三部分:
- 图卷积网络GCN(Graph Convolution Network)(一)研究背景和空域图卷积
- 图卷积网络GCN(Graph Convolution Network)(二)图上的傅里叶变换和逆变换
- 图卷积网络GCN(Graph Convolution Network)(三)详解三代图卷积网络理论
背景知识
如要了解谱图卷积,首先需要学习图理论基础和图中如何进行傅里叶变换。
对于傅里叶变换,本文不再赘述。详细内容可以参考:
图上的傅立叶变换
傅立叶变换是将时域的函数转换成频域上的函数,是对于同一个函数的不同视角,数学定义如下:
F
(
w
)
=
F
(
f
(
t
)
)
=
∫
f
(
t
)
e
−
i
w
t
d
t
(
1
)
\mathcal{F}(w)=\mathcal{F}(f(t))=\int{f(t)e^{-iwt}}dt \quad\quad\quad (1)
F(w)=F(f(t))=∫f(t)e−iwtdt(1)
公式(1)表示的意义是傅立叶变换是时域信号
f
(
t
)
f(t)
f(t) 与基函数
e
−
i
w
t
e^{-iwt}
e−iwt 的积分。
为什么选择 e − i w t e^{-iwt} e−iwt作为基函数?原因有二:
- e − i w t e^{-iwt} e−iwt是正交函数系。
- e − i w t e^{-iwt} e−iwt是拉普拉斯算子 Δ \Delta Δ的特征函数。
至于 e − i w t e^{-iwt} e−iwt由何种推导得来的请参考: 理解傅里叶变换 | 隐舍
先解释下拉普拉斯算子 Δ \Delta Δ的定义
在数学中,拉普拉斯算子(Laplacian)是由欧几里得空间中的一个函数的梯度的散度给出的微分算子,记为
Δ
f
=
∇
2
f
=
∇
⋅
∇
f
\Delta f=\nabla^{2} f=\nabla \cdot \nabla f
Δf=∇2f=∇⋅∇f,表示
n
n
n维空间笛卡尔坐标系
x
i
x_i
xi中所有非混合二阶偏导数之和,其数学定义为
Δ
=
∑
i
=
1
n
∂
2
∂
2
x
i
(
2
)
\Delta=\sum_{i=1}^n\frac{\partial^2}{\partial{^2x_{i}}} \quad\quad\quad(2)
Δ=i=1∑n∂2xi∂2(2)
这表达式什么意思呢?以二维空间为例:
Δ
f
(
x
,
y
)
=
∂
2
f
∂
x
2
+
∂
2
f
∂
y
2
=
[
f
(
x
+
1
,
y
)
+
f
(
x
−
1
,
y
)
−
2
f
(
x
,
y
)
]
+
[
f
(
x
,
y
+
1
)
+
f
(
x
,
y
−
1
)
−
2
f
(
x
,
y
)
]
=
f
(
x
+
1
,
y
)
+
f
(
x
−
1
,
y
)
+
f
(
x
,
y
+
1
)
+
f
(
x
,
y
−
1
)
−
4
f
(
x
,
y
)
\begin{aligned} \Delta f(x, y) &=\frac{\partial^{2} f}{\partial x^{2}}+\frac{\partial^{2} f}{\partial y^{2}} \\ &=[f(x+1, y)+f(x-1, y)-2 f(x, y)]+[f(x, y+1)+f(x, y-1)-2 f(x, y)] \\ &=f(x+1, y)+f(x-1, y)+f(x, y+1)+f(x, y-1)-4 f(x, y) \end{aligned}
Δf(x,y)=∂x2∂2f+∂y2∂2f=[f(x+1,y)+f(x−1,y)−2f(x,y)]+[f(x,y+1)+f(x,y−1)−2f(x,y)]=f(x+1,y)+f(x−1,y)+f(x,y+1)+f(x,y−1)−4f(x,y)
上式中每一项的系数就是拉普拉斯在二维图像中的卷积核:
再解释下 e − i w t e^{-iwt} e−iwt为何拉普拉斯算子 Δ \Delta Δ的特征函数
拉普拉斯算子的特征方程为:
Δ
g
=
λ
g
(
3
)
\Delta g=\lambda g \quad\quad\quad (3)
Δg=λg(3)
代入函数 e − i w t e^{-iwt} e−iwt可得:
Δ e − i w t = ∂ 2 ∂ 2 x i e − i w t = ∂ 2 ∂ 2 t e − i w t = − w 2 e − i w t ( 4 ) \Delta e^{-iwt}=\frac{\partial ^2}{\partial^2 x_i}e^{-iwt}=\frac{\partial ^2}{\partial^2 t}e^{-iwt}=-w^2e^{-iwt} \quad\quad\quad(4) Δe−iwt=∂2xi∂2e−iwt=∂2t∂2e−iwt=−w2e−iwt(4)
其中特征值 λ = − w 2 \lambda=-w^2 λ=−w2 ,即 w w w 和特征值 λ \lambda λ 密切相关。
由上述证明可得结论:傅立叶变换是时域信号与拉普拉斯算子特征函数的积分。
从整体推特殊,将以上的结论推广到(离散)图中可知:图上的傅立叶变换就是时域信号与图拉普拉斯算子特征函数的求和!
对于傅里叶变换式(1),将特征函数转换为特征向量(特征函数可以认为是无限维的特征向量),将积分转换为求和,那么
N
N
N个顶点图上的傅立叶变化表达式为:
F
(
λ
l
)
=
f
^
(
λ
l
)
=
∑
i
=
1
N
f
(
i
)
∗
u
l
(
i
)
(
5
)
\mathcal{F}(\lambda_l)=\widehat f(\lambda_l)=\sum_{i=1}^N f(i)*u_l(i) \quad\quad\quad(5)
F(λl)=f
(λl)=i=1∑Nf(i)∗ul(i)(5)
其中,
λ
l
\lambda_l
λl 为图拉普拉斯算子第
l
l
l 个特征值,
u
l
u_{l}
ul 为第
l
l
l 个特征值对应的特征向量,公式(5)是
λ
l
\lambda_{l}
λl 对应的傅立叶变换,对于图拉普拉斯算子,具有
N
N
N个特征值,将式 (5) 全部分量展开可得:
(
f
^
(
λ
1
)
f
^
(
λ
2
)
⋮
f
^
(
λ
N
)
)
=
(
u
1
(
1
)
u
1
(
2
)
…
u
1
(
N
)
u
2
(
1
)
u
2
(
2
)
…
u
2
(
N
)
⋮
⋮
⋱
⋮
u
N
(
1
)
u
N
(
2
)
…
u
N
(
N
)
)
(
f
(
1
)
f
(
2
)
⋮
f
(
N
)
)
(
6
)
\left(\begin{array}{c} \hat{f}\left(\lambda_{1}\right) \\ \hat{f}\left(\lambda_{2}\right) \\ \vdots \\ \hat{f}\left(\lambda_{N}\right) \end{array}\right)=\left(\begin{array}{cccc} u_{1}(1) & u_{1}(2) & \dots & u_{1}(N) \\ u_{2}(1) & u_{2}(2) & \dots & u_{2}(N) \\ \vdots & \vdots & \ddots & \vdots \\ u_{N}(1) & u_{N}(2) & \dots & u_{N}(N) \end{array}\right)\left(\begin{array}{c} f(1) \\ f(2) \\ \vdots \\ f(N) \end{array}\right) \quad\quad\quad(6)
⎝⎜⎜⎜⎛f^(λ1)f^(λ2)⋮f^(λN)⎠⎟⎟⎟⎞=⎝⎜⎜⎜⎛u1(1)u2(1)⋮uN(1)u1(2)u2(2)⋮uN(2)……⋱…u1(N)u2(N)⋮uN(N)⎠⎟⎟⎟⎞⎝⎜⎜⎜⎛f(1)f(2)⋮f(N)⎠⎟⎟⎟⎞(6)
将公式(6)写成矩阵形式即为:
f
^
=
U
T
f
(
7
)
\widehat f=U^{T}f \quad\quad\quad (7)
f
=UTf(7)
此处
U
U
U为拉普拉斯谱分解的正交矩阵。
最后再来看看图中拉普拉斯算子的定义:
L
=
D
−
W
(
8
)
L=D-W \quad\quad\quad (8)
L=D−W(8)
其中
W
W
W是邻接矩阵,
D
D
D是度矩阵,
D
i
,
i
D_{i,i}
Di,i等于
W
W
W矩阵的第
i
i
i行的和,非对角线上元素为0,
D
D
D是个对角矩阵,这个图谱理论关于图拉普拉斯算子的的定义。详细推到过程参考:图拉普拉斯算子为何定义为D-W
拉普拉斯矩阵是实对称矩阵,实对称矩阵一定可以用正交矩阵进行正交相似对角化(特征分解):
L = U ( λ 1 ⋱ λ N ) U − 1 = U ( λ 1 ⋱ λ N ) U T ( 9 ) L=U\left(\begin{array}{ccc} \lambda_{1} & & \\ & \ddots & \\ & & \lambda_{N} \end{array}\right) U^{-1} =U\left(\begin{array}{ccc} \lambda_{1} & & \\ & \ddots & \\ & & \lambda_{N} \end{array}\right) U^{T} \quad\quad\quad (9) L=U⎝⎛λ1⋱λN⎠⎞U−1=U⎝⎛λ1⋱λN⎠⎞UT(9)
U U U 为特征向量构成的正交矩阵,而正交矩阵的逆等于正交矩阵的转置: U − 1 = U T U^{-1}=U^T U−1=UT
假定
λ
1
,
⋯
,
λ
n
\lambda_{1},\cdots,\lambda_{n}
λ1,⋯,λn 从小到大排序,其对应的特征向量为
u
1
,
⋯
,
u
n
u_1,\cdots, u_n
u1,⋯,un,特征值越小,对应的特征向量越平稳,这和傅立叶变换中频率的定义是类似的。下图是对 random sensor network 做特征值分解后的特征向量分布展示,可以看到特征值越小,对应的特征向量越平滑。
图上傅里叶逆变换
有了傅立叶变换,如何将频率函数变换为时域函数呢?这是傅立叶逆变换需要干的事情,公式如下:
F − 1 [ F ( w ) ] = 1 2 π ∫ F ( w ) e − i w t d w ( 10 ) \mathcal{F}^{-1}[\mathcal{F}(w)]=\frac{1}{2\pi}\int \mathcal{F}(w)e^{-iwt}dw \quad\quad\quad(10) F−1[F(w)]=2π1∫F(w)e−iwtdw(10)
公式(10)和公式(1)类似,差一个常数系数。公式(1)积分之后是一个关于
w
w
w 的函数,公式(10) 对
w
w
w 积分后是关于
t
t
t 的函数,从频域变换到了时域,图上傅立叶变换类似为:
(
f
(
λ
1
)
f
(
λ
2
)
⋯
f
(
λ
N
)
)
=
(
u
1
(
1
)
u
1
(
2
)
…
u
1
(
N
)
u
1
(
1
)
u
1
(
2
)
…
u
1
(
N
)
⋯
…
…
u
1
(
1
)
u
1
(
2
)
…
u
1
(
N
)
)
(
f
^
(
λ
1
)
f
^
(
λ
2
)
…
f
^
(
λ
N
)
)
(
11
)
\left(\begin{array}{c} f\left(\lambda_{1}\right) \\ f\left(\lambda_{2}\right) \\ \cdots \\ f\left(\lambda_{N}\right) \end{array}\right)=\left(\begin{array}{cccc} u_{1}(1) & u_{1}(2) & \dots & u_{1}(N) \\ u_{1}(1) & u_{1}(2) & \dots & u_{1}(N) \\ \cdots & \dots & & \dots \\ u_{1}(1) & u_{1}(2) & \dots & u_{1}(N) \end{array}\right)\left(\begin{array}{c} \hat{f}\left(\lambda_{1}\right) \\ \hat{f}\left(\lambda_{2}\right) \\ \dots \\ \hat{f}\left(\lambda_{N}\right) \end{array}\right) \quad\quad\quad (11)
⎝⎜⎜⎛f(λ1)f(λ2)⋯f(λN)⎠⎟⎟⎞=⎝⎜⎜⎛u1(1)u1(1)⋯u1(1)u1(2)u1(2)…u1(2)………u1(N)u1(N)…u1(N)⎠⎟⎟⎞⎝⎜⎜⎛f^(λ1)f^(λ2)…f^(λN)⎠⎟⎟⎞(11)
写成矩阵形式:
f
=
U
U
−
1
f
=
U
U
T
f
=
U
f
^
(
12
)
f=\mathbf{U} \mathbf{U}^{-1} f=\mathbf{U} \mathbf{U}^{T} f=\mathbf{U} \hat{f}\quad\quad\quad (12)
f=UU−1f=UUTf=Uf^(12)
上述内容详述了如何在图中进行傅里叶变换和逆变换,下面就是主角图卷积网络GCN上场了!
下篇更新的文章将讲述三代图卷积网络的前世今生!