第5章-图信号处理与图卷积神经网络
参考书目:《深入浅出图神经网络:GNN原理解析》。
图信号处理(GSP)是离信号处理(DSP)理论在图信号领域的应用,其通过傅里叶变换、滤波等信号处理基本概念的迁移,来研究对图信号的压缩、变换、重构等信号处理的基础任务。
基于空域的图卷积神经网络(Spatial-based ConvGNN)就是从图信号处理的理论中不断改进衍生出来的,正所谓“基础不牢,地动山摇”,了解和掌握GSP的相关知识就是基本功中的基本功。
5.1 矩阵乘法的三种视角
1、内积视角(正常)
C
i
j
=
A
i
,
:
B
:
,
j
C_{ij}=A_{i,:}B_{:,j}
Cij=Ai,:B:,j
2、行向量视角(对于理解空域图卷积有很大意义)
将
B
B
B看作是行向量矩阵,
A
A
A看作是系数矩阵
C
i
,
:
=
∑
m
M
A
i
m
B
m
,
:
C_{i,:}=\sum_m^M A_{im}B_{m,:}
Ci,:=m∑MAimBm,:
3、列向量视角
C
:
,
j
=
∑
m
M
B
m
j
A
:
,
m
C_{:,j}=\sum_m^M B_{mj}A_{:,m}
C:,j=m∑MBmjA:,m
5.2 图信号与拉普拉斯矩阵
图信号可以表示成向量或矩阵的形式:
x
=
[
x
1
,
x
2
,
.
.
.
,
x
N
]
T
\Bbb x=[x_1,x_2,...,x_N]^T
x=[x1,x2,...,xN]T
x
i
x_i
xi表示节点
v
i
v_i
vi上信号的强度。
拉普拉斯矩阵(Laplacian Matrix)是研究图的结构性质的核心对象,定义为:
L
=
D
−
A
L=D-A
L=D−A
D
D
D是一个对角阵,是节点的度矩阵,
A
A
A是邻接矩阵,
D
i
i
=
∑
j
A
i
j
D_{ii}=\sum_{j}A_{ij}
Dii=j∑Aij
因此,拉普拉斯矩阵的元素值为,
L
i
j
=
{
d
e
g
(
v
i
)
,
i
=
j
−
1
,
e
i
j
∈
E
0
,
o
t
h
e
r
w
i
s
e
L_{ij} = \begin{cases} deg(v_i), & i = j \\[2ex] -1, & e_{ij}\in E \\[2ex] 0, & otherwise \end{cases}
Lij=⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧deg(vi),−1,0,i=jeij∈Eotherwise
拉普拉斯矩阵的正则化形式,
L
s
y
m
[
i
,
j
]
=
{
1
,
i
=
j
−
1
d
e
g
(
v
i
)
d
e
g
(
v
j
)
,
e
i
j
∈
E
0
,
o
t
h
e
r
w
i
s
e
L_{sym}[i,j]= \begin{cases} 1, & i=j \\[2ex] \frac{-1}{\sqrt{deg(v_i)deg(v_j)}}, & e_{ij}\in E \\[2ex] 0, & otherwise \end{cases}
Lsym[i,j]=⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧1,deg(vi)deg(vj)−1,0,i=jeij∈Eotherwise
拉普拉斯矩阵源于拉普拉斯算子
Δ
\Delta
Δ,反应图信号的局部平滑度。
图信号的总变差
T
V
(
x
)
TV(x)
TV(x)是一个标量,用于衡量图信号的整体平滑度,
T
V
(
x
)
=
x
T
L
x
=
∑
e
i
j
∈
E
(
x
i
−
x
j
)
2
TV(x)=x^TLx=\sum_{e_{ij}\in E}(x_i-x_j)^2
TV(x)=xTLx=eij∈E∑(xi−xj)2
是一个半正定矩阵。
5.3 图傅里叶变换
傅里叶变换将信号从空域(spatial)转化到频域(spetral),给信号处理带来了极大的便利。
由于拉普拉斯矩阵是一个实对称矩阵,因此可以被对角化,
L
=
V
Λ
V
T
=
[
⋮
⋮
⋮
v
1
⋯
v
N
⋮
⋮
⋮
]
[
λ
1
⋱
λ
N
]
[
⋯
v
1
⋯
⋯
⋮
⋯
⋯
v
N
⋯
]
L=V\Lambda V^T=\\[2ex] \begin{bmatrix} \vdots & \vdots & \vdots \\ v_1 & \cdots & v_N \\ \vdots & \vdots & \vdots \\ \end{bmatrix} \begin{bmatrix} \lambda_1 & & \\ & \ddots & \\ & & \lambda_N \\ \end{bmatrix} \begin{bmatrix} \cdots & v_1 & \cdots \\ \cdots & \vdots & \cdots \\ \cdots & v_N & \cdots \\ \end{bmatrix}
L=VΛVT=⎣⎢⎢⎡⋮v1⋮⋮⋯⋮⋮vN⋮⎦⎥⎥⎤⎣⎡λ1⋱λN⎦⎤⎣⎢⎡⋯⋯⋯v1⋮vN⋯⋯⋯⎦⎥⎤
其中
L
∈
R
N
×
N
L\in R^{N\times N}
L∈RN×N,
V
∈
R
N
×
N
V\in R^{N\times N}
V∈RN×N,
V
V
T
=
I
VV^T=I
VVT=I。
V
V
V的每一列表示节点的特征向量,
λ
k
\lambda_k
λk表示第k和特征值。
因此,图傅里叶变换(GFT)为:
x
~
k
=
⟨
v
k
,
x
⟩
x
~
=
V
T
x
\tilde x_k=\langle v_k,x \rangle \\[2ex] \tilde x=V^Tx
x~k=⟨vk,x⟩x~=VTx
其中
x
~
k
\tilde x_k
x~k为傅里叶系数,所有的傅里叶系数合在一起
x
~
\tilde x
x~称为频谱(spectrum)。
逆图傅里叶变换(IGFT)则定义为:
x
=
V
x
~
=
∑
k
=
1
N
x
~
k
v
k
x=V\tilde x=\sum_{k=1}^N\tilde x_kv_k
x=Vx~=k=1∑Nx~kvk
因此,对总变差进行重新改写:
T
V
(
x
)
=
∑
k
N
λ
k
x
~
k
2
TV(x)=\sum_k^N\lambda_k\tilde x_k^2
TV(x)=k∑Nλkx~k2
特征值可以等价为频率,特征值越低,频率越低,节点信号越趋于一致;而傅里叶系数可以等价成对应频率分量上的幅值。频域视角是一个全局视角,反映了图信号大小和拓扑结构,相当于图的一种身份ID。
5.4 图滤波器
使用图滤波器(filter)可以对各频率的强度进行操作。
我们可以定义滤波操作为:
y
=
H
x
=
(
V
Λ
h
V
T
)
x
=
V
[
h
(
λ
1
)
⋱
h
(
λ
N
)
]
V
T
x
y=Hx=(V\Lambda_hV^T)x \\[2ex] =V \begin{bmatrix} h(\lambda_1)& & \\ &\ddots & \\ & &h(\lambda_N) \end{bmatrix} V^Tx
y=Hx=(VΛhVT)x=V⎣⎡h(λ1)⋱h(λN)⎦⎤VTx
其中
H
∈
R
N
×
N
H\in R^{N\times N}
H∈RN×N为滤波器,
y
y
y为输出的信号,通过控制
h
(
λ
k
)
h(\lambda_k)
h(λk)来控制信号的增强或减弱的。
但是,上述计算过于复杂了,我们可以使用泰勒展开进行逼近。因此滤波器又可以定义为:
H
=
∑
k
=
0
K
h
k
S
k
H=\sum_{k=0}^Kh_kS^k
H=k=0∑KhkSk
其中,
K
K
K为滤波器的阶数,可以自定义,
S
S
S为图位移算子,一般可以直接使用
L
L
L或
A
A
A,因此滤波器一般被定义为:
H
=
∑
k
=
0
K
h
k
L
k
H=\sum_{k=0}^Kh_kL^k
H=k=0∑KhkLk
空域角度
下面主要从空域的角度来理解和分析一下滤波器。
我们令,
x
(
k
)
=
L
x
(
k
−
1
)
x^{(k)}=Lx^{(k-1)}
x(k)=Lx(k−1)
则,
y
=
∑
k
=
0
K
h
k
x
(
k
)
y=\sum_{k=0}^Kh_kx^{(k)}
y=k=0∑Khkx(k)
x
(
k
−
1
)
x^{(k-1)}
x(k−1)到
x
(
k
)
x^{(k)}
x(k)只需要借助拉普拉斯矩阵,利用所有节点的一阶邻居进行计算。
因此具有以下2点重要性质:
(1)局部性,k阶子图。
(2)可通过矩阵向量乘法的迭代操作实现滤波操作。
5.5 图卷积神经网络
图信号的卷积运算定义为,
x
1
∗
x
2
=
I
G
F
T
(
G
F
T
(
x
1
)
⨀
G
F
T
(
x
2
)
)
x_1*x_2=IGFT(GFT(x_1)\bigodot GFT(x_2))
x1∗x2=IGFT(GFT(x1)⨀GFT(x2))
其中
⨀
\bigodot
⨀表示哈达玛积,就是频域中的矩阵点乘运算。
从频域角度来看,图卷积等价于图滤波,将图卷积推广到图数据的学习当中就成为了一种自然而然的想法。
1、对特征值对角矩阵进行参数化
特征值矩阵又称为频率响应矩阵,参照图滤波器,进行参数化,可得到网络,
X
′
=
σ
(
V
[
θ
1
⋱
θ
N
]
V
T
X
)
=
σ
(
V
d
i
a
g
(
θ
)
V
T
X
)
X'=\sigma(V \begin{bmatrix} \theta_1& & \\ & \ddots& \\ & & \theta_N \end{bmatrix} V^TX) =\sigma(Vdiag(\theta)V^TX)
X′=σ(V⎣⎡θ1⋱θN⎦⎤VTX)=σ(Vdiag(θ)VTX)
其中
θ
=
[
θ
1
,
.
.
.
,
θ
N
]
\theta=[\theta_1,...,\theta_N]
θ=[θ1,...,θN]是需要学习的参数,因此存在一个较大的问题:引入的参数过多!!!需要学习的参数数量和节点数量一致,根本就无法应用于大型图数据上。
并且,数据的有效信息往往都是在低频段中,没有必要对每个频段都进行学习。
2、对多项式系数进行参数化
很自然地想到了使用多项式进行逼近,前面也有提到过,
X
′
=
σ
(
V
[
∑
k
=
0
K
θ
k
λ
1
k
⋱
∑
k
=
0
K
θ
k
λ
N
k
]
V
T
X
)
=
σ
(
V
(
∑
k
=
0
K
θ
k
Λ
k
)
V
T
X
)
X'=\sigma(V \begin{bmatrix} \sum_{k=0}^K\theta_k\lambda_1^k& & \\ & \ddots& \\ & & \sum_{k=0}^K\theta_k\lambda_N^k \end{bmatrix} V^TX) =\sigma(V(\sum_{k=0}^K\theta_k\Lambda^k)V^TX)
X′=σ(V⎣⎡∑k=0Kθkλ1k⋱∑k=0KθkλNk⎦⎤VTX)=σ(V(k=0∑KθkΛk)VTX)
其中
θ
=
[
θ
1
,
.
.
.
,
θ
K
]
\theta=[\theta_1,...,\theta_K]
θ=[θ1,...,θK]是需要学习的参数,由于
K
K
K可以自由的定义且
K
≪
N
K\ll N
K≪N,大大降低了参数的数量。
3、设定固定的滤波器
前面的方法都对特征矩阵分解比较依赖,因此有很高的计算复杂度。
经过复杂的推理,…省略一万字…,我们可以这么做。先定义重归一化形式的拉普拉斯矩阵,
L
~
s
y
m
=
D
~
−
1
2
A
~
D
~
−
1
2
\tilde L_{sym}=\tilde D^{-\frac{1}{2}}\tilde A\tilde D^{-\frac{1}{2}}
L~sym=D~−21A~D~−21
其中
A
~
=
A
+
I
\tilde A=A+I
A~=A+I,
D
~
i
i
=
∑
j
A
~
i
j
\tilde D_{ii}=\sum_j\tilde A_{ij}
D~ii=∑jA~ij,
L
~
s
y
m
∈
(
−
1
,
1
]
\tilde L_{sym}\in(-1,1]
L~sym∈(−1,1]。可以看出已经不再需要进行矩阵分解操作了(真的是,大道至简)。
为了增加网络的拟合能力,增加了一个参数化的权重矩阵,得到
X
′
=
σ
(
L
~
s
y
m
X
W
)
X'=\sigma(\tilde L_{sym}XW)
X′=σ(L~symXW)
这就是很多论文里面提到的图卷积层(GCN layer),使用这个层进行堆叠的模型成为图卷积网络(GCN)。
图卷积层是对函数拟合上的极大简化,相较于频域(spectral)图卷积中的矩阵分解
O
(
N
3
)
O(N^3)
O(N3)的时间复杂度,空域(spatial)图卷积的时间复杂度可以降至
O
(
∣
E
∣
d
)
O(|E|d)
O(∣E∣d),这也为是什么沿着GCN这一条分支发展的如此迅猛的原因了。
总结
还是先把基础打牢,虽然学习的时候会比较痛苦。