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