原文首发于个人站点 图卷积网络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由何种推导得来的请参考: 理解傅里叶变换 | 隐舍
先解释下拉普拉斯算子 Δ \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上场了!
下篇更新的文章将讲述三代图卷积网络的前世今生!