图神经网络GNN学习笔记:图滤波器与图卷积神经网络
4. 图滤波器
在图信号处理中,我们将图滤波器
定义为对给定图信号的频谱中各个频率分量的强度进行增强或衰减的操作。
假设图滤波器为
H
∈
R
N
×
N
,
H
:
R
N
→
R
N
H\in R^{N\times N},H:R^N\rightarrow R^N
H∈RN×N,H:RN→RN,令输出图信号为
y
y
y,则:
y
=
H
x
=
∑
k
=
1
N
(
h
(
λ
k
)
x
~
k
)
v
k
y=Hx=\sum_{k=1}^N(h(\lambda_k)\tilde x_k)v_k
y=Hx=k=1∑N(h(λk)x~k)vk
可以清楚地看到增强还是衰减是通过
h
(
λ
)
h(\lambda)
h(λ)项来控制的。对上式进行变换:
y
=
H
x
=
∑
k
=
1
N
(
h
(
λ
k
)
x
~
k
)
v
k
=
[
.
.
.
.
.
.
.
.
.
.
.
.
v
1
v
2
.
.
.
v
N
.
.
.
.
.
.
.
.
.
.
.
.
]
[
h
(
λ
1
)
x
~
1
h
(
λ
2
)
x
~
2
.
.
.
h
(
λ
N
)
x
~
N
]
=
V
[
h
(
λ
1
)
h
(
λ
2
)
.
.
.
h
(
λ
N
)
]
[
x
~
1
x
~
2
.
.
.
x
~
N
]
=
V
[
h
(
λ
1
)
h
(
λ
2
)
.
.
.
h
(
λ
N
)
]
V
T
x
y=Hx=\sum_{k=1}^N(h(\lambda_k)\tilde x_k)v_k=\begin{bmatrix}... & ... & ... & ...\\v_1 & v_2 & ... & v_N\\... & ... & ... & ... \end{bmatrix}\begin{bmatrix}h(\lambda _1)\tilde x_1 \\h(\lambda _2)\tilde x_2 \\ ... \\h(\lambda _N)\tilde x_N\end{bmatrix}=V\begin{bmatrix}h(\lambda _1) & & & \\ & h(\lambda _2) & & \\ & & ... & \\ & & & h(\lambda _N)\end{bmatrix}\begin{bmatrix}\tilde x_1 \\\tilde x_2 \\ ... \\\tilde x_N\end{bmatrix}=V\begin{bmatrix}h(\lambda _1) & & & \\ & h(\lambda _2) & & \\ & & ... & \\ & & & h(\lambda _N)\end{bmatrix}V^Tx
y=Hx=k=1∑N(h(λk)x~k)vk=⎣⎡...v1......v2...............vN...⎦⎤⎣⎢⎢⎡h(λ1)x~1h(λ2)x~2...h(λN)x~N⎦⎥⎥⎤=V⎣⎢⎢⎡h(λ1)h(λ2)...h(λN)⎦⎥⎥⎤⎣⎢⎢⎡x~1x~2...x~N⎦⎥⎥⎤=V⎣⎢⎢⎡h(λ1)h(λ2)...h(λN)⎦⎥⎥⎤VTx
于是得到
H
=
V
[
h
(
λ
1
)
h
(
λ
2
)
.
.
.
h
(
λ
N
)
]
V
T
=
V
Λ
h
V
T
H = V\begin{bmatrix}h(\lambda _1) & & & \\ & h(\lambda _2) & & \\ & & ... & \\ & & & h(\lambda _N)\end{bmatrix}V^T=V\Lambda_hV^T
H=V⎣⎢⎢⎡h(λ1)h(λ2)...h(λN)⎦⎥⎥⎤VT=VΛhVT相较于拉普拉斯矩阵,H仅仅改动了对角矩阵上的值
。因此H具有以下形式:
H
i
j
=
0
H_{ij}=0
Hij=0,如果
i
≠
j
i\ne j
i=j或者
e
i
j
∈
E
e_{ij}\in E
eij∈E。就是说,H矩阵只在对角与边坐标上时才有可能取非零值。从算子的角度看,
H
x
Hx
Hx描述了一种作用在每个节点一阶子图上的变换操作。一般来说,称满足上述性质的矩阵为G的图位移算子(Graph Shift Operator)
,拉普拉斯矩阵与邻接矩阵都是典型的图位移算子。
图滤波器具有以下性质:
(1)线性
:
H
(
x
+
y
)
=
H
x
+
H
y
H(x+y)=Hx+Hy
H(x+y)=Hx+Hy
(2)滤波操作是顺序无关
的:
H
1
(
H
2
x
)
=
H
2
(
H
1
x
)
H_1(H_2x)=H_2(H_1x)
H1(H2x)=H2(H1x)
(3)如果
h
(
λ
)
≠
0
h(\lambda)\ne 0
h(λ)=0,则该滤波操作是可逆的
。
称
Λ
h
\Lambda _h
Λh为图滤波器H的频率响应矩阵
,对应的函数
h
(
λ
)
h(\lambda)
h(λ)为H的频率响应函数
,不同的频率响应函数可以实现不同的滤波效果。在信号处理中,常见的滤波器有3类:
-
低通滤波器
:只保留信号中的低频成分,关注信号中平滑的部分 -
高通滤波器
:只保留信号中的高频成分,关注信号中快速变化的部分 -
带通滤波器
:只保留信号特定频段的成分
理论上,希望实现任意性质的图滤波器,也就是实现任意类型函数曲线的频率响应函数。通过逼近理论,用泰勒展开——多项式逼近函数去近似任意函数。下面,聚焦拉普拉斯矩阵多项式拓展形式的图滤波器上:
H
=
h
0
L
0
+
h
1
L
1
+
h
2
L
2
+
.
.
.
+
h
K
L
K
=
∑
k
=
0
k
h
k
L
k
H=h_0L^0+h_1L^1+h_2L^2+...+h_KL^K=\sum_{k=0}^kh_kL^k
H=h0L0+h1L1+h2L2+...+hKLK=k=0∑khkLk
其中,K是图滤波器H的阶数。和图信号一样,对于图滤波器,可以从空域视角和频域视角来理解。
4.1 空域视角
对于 y = H x = ∑ k = 0 K h k L k x y=Hx=\sum_{k=0}^Kh_kL^kx y=Hx=∑k=0KhkLkx,如果设定 x ( k ) = L k x = L x ( k − 1 ) x^{(k)}=L^kx=Lx^{(k-1)} x(k)=Lkx=Lx(k−1),则: y = ∑ k = 0 K h k x ( k ) y=\sum_{k=0}^Kh_kx^{(k)} y=∑k=0Khkx(k)。这里将输出信号变成了 ( K + 1 ) (K+1) (K+1)组图信号的线性加权。由于L是一个图位移算子,因此 x ( k − 1 ) x^{(k-1)} x(k−1)到 x ( k ) x^{(k)} x(k)的变换只需要所有节点的一阶邻居参与计算。总的来说, x ( k ) x^{(k)} x(k)的计算只需要所有节点的k阶邻居参与,称这种性质为图滤波器的局部性。
从空域角度看,滤波操作具有以下性质:
- 具有
局部性
,每个节点的输出信号值只需要考虑其K阶子图; - 可以通过K步
迭代式的矩阵向量乘法来完成滤波操作
。
4.2频域角度
由于
L
=
V
Λ
V
T
L=V\Lambda V^T
L=VΛVT,则:
H
=
∑
k
=
0
K
h
k
L
k
=
∑
k
=
0
K
h
k
(
V
Λ
V
T
)
k
=
V
(
∑
k
=
0
K
h
k
Λ
k
)
V
T
=
V
[
∑
k
=
0
K
h
k
λ
1
k
.
.
.
∑
k
=
0
K
h
k
λ
N
k
]
V
T
H=\sum_{k=0}^Kh_kL^k=\sum_{k=0}^Kh_k(V\Lambda V^T)^k=V(\sum_{k=0}^Kh_k\Lambda ^k)V^T=V\begin{bmatrix}\sum_{k=0}^Kh_k\lambda _1^k & & \\ & ... & \\ & & \sum_{k=0}^Kh_k\lambda _N^k \end{bmatrix}V^T
H=k=0∑KhkLk=k=0∑Khk(VΛVT)k=V(k=0∑KhkΛk)VT=V⎣⎡∑k=0Khkλ1k...∑k=0KhkλNk⎦⎤VT
通过上式可知,H的频率响应函数为
λ
\lambda
λ的K次代数多项式,如果K足够大,可以用这种形式去逼近任意一个关于
λ
\lambda
λ的函数。
如果我们用该滤波器进行滤波,则:
y
=
H
x
=
V
(
∑
k
=
0
K
h
k
Λ
k
)
V
T
x
y=Hx=V(\sum_{k=0}^Kh_k\Lambda ^k)V^Tx
y=Hx=V(k=0∑KhkΛk)VTx
即为频域视角下的滤波操作,其变换过程由以下三步组成:
- 通过
图傅里叶变换
,即 V T x V^Tx VTx将图信号变换到频域空间 - 通过
Λ
h
=
∑
k
=
0
K
h
k
Λ
k
\Lambda _h=\sum_{k=0}^Kh_k\Lambda ^k
Λh=∑k=0KhkΛk
对频率分量的强度进行调节
,得到 y ~ \tilde y y~; - 通过
逆图傅里叶变换
,即 V y ~ V\tilde y Vy~将 y ~ \tilde y y~反解成图信号 y y y。
假设所有的多项式系数
h
k
h_k
hk构成向量
h
h
h,则
H
H
H的频率响应矩阵为:
Λ
h
=
∑
k
=
0
K
h
k
Λ
k
=
d
i
a
g
(
Ψ
h
)
\Lambda_h=\sum_{k=0}^Kh_k\Lambda^k=diag(\Psi h)
Λh=k=0∑KhkΛk=diag(Ψh)
其中,
ψ
=
[
1
λ
1
.
.
.
λ
1
K
1
λ
2
.
.
.
λ
2
K
.
.
.
.
.
.
.
.
.
.
.
.
1
λ
N
.
.
.
λ
N
K
]
\psi = \begin{bmatrix} 1 & \lambda_1 & ... & \lambda_1^K\\ 1 & \lambda_2 & ... & \lambda_2^K\\... & ... & ... & ...\\1 & \lambda_N & ... & \lambda_N^K\end{bmatrix}
ψ=⎣⎢⎢⎡11...1λ1λ2...λN............λ1Kλ2K...λNK⎦⎥⎥⎤为范德蒙矩阵
,可以反解得到多项式系数:
h
=
ψ
−
1
d
i
a
g
−
1
(
Λ
h
)
h=\psi^{-1}diag^{-1}(\Lambda_h)
h=ψ−1diag−1(Λh)
其中,
d
i
a
g
−
1
diag^{-1}
diag−1表示将对角矩阵变成列向量。上式说明给定想要的频率响应矩阵,可以反解得到多项式系数。这个公式对于特定性质的图滤波器的设计十分重要。
从频域角度看,图滤波操作的性质如下:
- 从频域视角能够更加清晰地完成对图信号的特定滤波操作
- 图滤波器如何设计具有显式的公式指定
- 对矩阵进行特征分解是一个非常耗时的操作,具有 O ( N 3 ) O(N^3) O(N3)的时间复杂度。相较于空域视角的矩阵向量乘法,工程上有局限性。
5. 图卷积神经网络
给定两组G上的图信号
x
1
,
x
2
x_1,x_2
x1,x2,其图卷积运算
定义如下:
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)\odot GFT(x_2))
x1∗x2=IGFT(GFT(x1)⊙GFT(x2))
其中
⊙
\odot
⊙表示哈达玛积
,即矩阵对应位置元素相乘。这里的定义与离散时间信号处理中的卷积定义是一样的——时域中的卷积运算等价于频域中的乘法运算
。
对上式进行推导:
x
1
∗
x
2
=
V
(
(
V
T
x
1
)
⊙
(
V
T
x
2
)
)
=
V
(
x
~
1
⊙
(
V
T
x
2
)
)
=
V
(
d
i
a
g
(
x
~
1
)
(
V
T
x
2
)
)
=
(
V
d
i
a
g
(
x
~
1
)
V
T
)
x
2
x_1*x_2=V((V^Tx_1)\odot (V^Tx_2))=V(\tilde x_1 \odot (V^Tx_2))=V(diag(\tilde x_1)(V^Tx_2))=(Vdiag(\tilde x_1)V^T)x_2
x1∗x2=V((VTx1)⊙(VTx2))=V(x~1⊙(VTx2))=V(diag(x~1)(VTx2))=(Vdiag(x~1)VT)x2
令
H
x
~
1
=
V
d
i
a
g
(
x
~
1
)
V
T
H_{\tilde x_1}=V diag(\tilde x_1)V^T
Hx~1=Vdiag(x~1)VT,显然
H
x
~
1
H_{\tilde x_1}
Hx~1是一个图位移算子,其频率响应矩阵为
x
1
x_1
x1的频谱,可得:
x
1
∗
x
2
=
H
x
~
1
x
2
x_1*x_2=H_{\tilde x_1}x_2
x1∗x2=Hx~1x2
从上式可得,两组图信号的图卷积运算总能转化为对应形式的图滤波运算。从这个层面上看,图卷积等价于图滤波。后面提到的图卷积运算都是特指上式右边的滤波形式。至于对应的卷积信号,一般并不需要显示地表达出来。
注:前面所有的图信号处理的相关概念里的图信号都能被拓展到矩阵形式。
设矩阵 X ∈ R N × d X\in R^{N\times d} X∈RN×d,可以将 X X X视为 d d d组定义在图 G G G上的图信号,于是称 X X X为图信号矩阵, d d d为图信号的总通道数, X : , j X_{:,j} X:,j表示第 j j j个通道上的图信号。
5.1 对频率响应矩阵进行参数化
既然图卷积操作等价于图滤波操作,而图滤波算子的核心在于频率响应矩阵,那么自然想到对频率响应矩阵进行参数化。定义如下神经网络层:
X
′
=
σ
(
V
[
θ
1
θ
2
.
.
.
θ
n
]
V
T
X
)
=
σ
(
V
d
i
a
g
(
θ
)
V
T
X
)
=
σ
(
Θ
X
)
X'=\sigma (V\begin{bmatrix}\theta _1 & & & \\ & \theta _2 & & \\ & & ... & \\ & & & \theta _n \end{bmatrix}V^TX)=\sigma(V diag(\theta)V^TX)=\sigma(\Theta X)
X′=σ(V⎣⎢⎢⎡θ1θ2...θn⎦⎥⎥⎤VTX)=σ(Vdiag(θ)VTX)=σ(ΘX)
其中,
σ
(
⋅
)
\sigma(\cdot)
σ(⋅)是激活函数,
θ
=
[
θ
1
,
θ
2
,
.
.
.
,
θ
N
]
\theta=[\theta_1,\theta_2,...,\theta_N]
θ=[θ1,θ2,...,θN]是需要学习的参数,
Θ
\Theta
Θ是对应的需要学习的图滤波器,
X
X
X是输入的图信号矩阵,
X
′
X'
X′是输出的图信号矩阵。
可以从空域和频域两个视角来理解这层网络:
- 从空域角度看,该层引入了一个自适应的图位移算子,从而完成对输入图信号的针对性变换操作。
- 从频域角度看,该层在 X X X和 X ′ X' X′之间训练了一个可自适应的图滤波器,图滤波器的频率响应函数可以通过任务与数据之间的对应关系来进行监督学习。
存在的问题:
- 引入的学习参数过多,为图中的节点数,在大规模图上几乎不可行,容易过拟合
- 真实的图数据中,数据的有效性通常都蕴含在低频段中,因此对每个频道都进行学习是没必要的
5.2 对多项式系数进行参数化
为了拟合任意的频率响应函数,将拉普拉斯矩阵的多项式形式转化为一种可学习的形式,具体如下:
X
′
=
σ
(
V
(
∑
k
=
0
K
θ
k
Λ
k
)
V
T
X
)
=
σ
(
V
d
i
a
g
(
Ψ
θ
)
V
T
X
)
X'=\sigma (V(\sum_{k=0}^K\theta_k\Lambda^k)V^TX)=\sigma(V diag(\Psi \theta)V^TX)
X′=σ(V(k=0∑KθkΛk)VTX)=σ(Vdiag(Ψθ)VTX)
其中,
θ
=
[
θ
1
,
θ
2
,
.
.
.
,
θ
K
]
\theta=[\theta_1,\theta_2,...,\theta_K]
θ=[θ1,θ2,...,θK]是多项式系数向量,也是该网络层真正需要学习的参数,与之前方法不同的是,这个方法的参数量
K
K
K可以*控制。K越大,可拟合的频率响应函数的次数就越高,可以对应输入图信号矩阵与输出图信号矩阵之间复杂的滤波关系;K越小,可拟合的次数就越低,输入图信号矩阵与输出图信号矩阵之间的滤波关系越简单。
总的来说,一般设 K < < N K<<N K<<N,这大大降低模型过拟合的风险。
5.3 设计固定的图滤波器
上述方法由于对矩阵特征分解比较依赖,故计算复杂度较高。因此,GCN中对
K
<
<
N
K<<N
K<<N进行了限制,设
K
=
1
K=1
K=1,则:
X
′
=
σ
(
θ
0
X
+
θ
1
L
X
)
X'=\sigma(\theta_0 X+\theta_1LX)
X′=σ(θ0X+θ1LX)
令
θ
0
=
θ
1
=
θ
\theta_0=\theta_1=\theta
θ0=θ1=θ,则:
X
′
=
σ
(
θ
(
I
+
L
)
X
)
=
σ
(
θ
L
~
X
)
X'=\sigma(\theta(I+L)X)=\sigma(\theta\tilde LX)
X′=σ(θ(I+L)X)=σ(θL~X)
注意:这里的
θ
\theta
θ是一个标量,相当于对
L
~
\tilde L
L~的频率响应函数做了一个尺度变换,通过这种尺度变换在神经网络模型中会被归一化操作替代,因此,没必要引入这个参数,故令其为1,即
θ
=
1
\theta=1
θ=1,然后得到一个固定的图滤波器
L
~
\tilde L
L~。
为了加强网络学习时的数值稳定性,对 L ~ \tilde L L~做归一化处理。令 L ~ s y m = D ~ − 1 / 2 A ~ D ~ − 1 / 2 , A ~ = A + I , D ~ i i = ∑ j A ~ i j \tilde L_{sym}=\tilde D^{-1/2} \tilde A \tilde D^{-1/2},\tilde A=A+I,\tilde D_{ii}=\sum_{j}\tilde A_{ij} L~sym=D~−1/2A~D~−1/2,A~=A+I,D~ii=∑jA~ij,称 L ~ s y m \tilde L_{sym} L~sym为重归一化形式的拉普拉斯矩阵。 L ~ s y m \tilde L{sym} L~sym的特征值范围为 ( − 1 , 1 ] (-1,1] (−1,1],可以有效防止多层网络优化时出现的梯度消失或爆炸的现象。
再考虑一下 L ~ s y m \tilde L_{sym} L~sym,想一下它是怎么来的:我们一步步定义、推导出了GFT和IGFT,定义了图滤波器,给出了图卷积的定义,将图卷积的运算写成了图滤波器的形式,为了加强图滤波器的拟合能力给出了多项式形式的图滤波器,最后我们将其化简为只有两项,得到了 L ~ \tilde L L~,再进行归一化得到了 L ~ s y m \tilde L_{sym} L~sym。
也就是说, L ~ s y m \tilde L_{sym} L~sym可以看作是一个图滤波器,也可以看作是图位移算子, L ~ s y m X \tilde L_{sym} X L~symX就是在做图卷积!而得到 L ~ s y m \tilde L_{sym} L~sym无疑是容易的,不需要计算特征值、特征向量,只需要得到邻接矩阵即可。
为了加强网络的拟合能力,设计一个参数化的权重矩阵
W
W
W对输入的图信号矩阵进行仿射变换,于是得到:
X
′
=
σ
(
L
~
s
y
m
X
W
)
X'=\sigma(\tilde L_{sym}XW)
X′=σ(L~symXW)
这里的
W
W
W是可学习的。如果没有其他说明,上式为图卷积层(GCN layer)
,以此为主题堆叠多层的神经网络模型称为图卷积模型(GCN)
。
==图卷积层是对频率响应函数拟合形式上的极大简化,最后相应的图滤波器退化成了
L
~
s
y
m
\tilde L_{sym}
L~sym,图卷积操作变成了
L
~
s
y
m
X
\tilde L_{sym}X
L~symX。==如果将X由信号矩阵的角色切换到特征矩阵上,由于
L
~
s
y
m
\tilde L_{sym}
L~sym是一个图位移算子,依据矩阵乘法的行向量视角,
L
~
s
y
m
X
\tilde L_{sym}X
L~symX的计算等价于对邻居节点的特征向量进行聚合操作,于是,图卷积层在节点层面的计算公式
为:
x
i
=
σ
(
∑
v
j
∈
N
~
(
v
i
)
L
~
s
y
m
[
i
,
j
]
(
W
x
j
)
)
x_i=\sigma(\sum_{v_j\in \tilde N(v_i)}\tilde L_{sym}[i,j](Wx_j))
xi=σ(vj∈N~(vi)∑L~sym[i,j](Wxj))
实际工程中,
L
~
s
y
m
\tilde L_{sym}
L~sym可以用稀疏矩阵来表示,这可以进一步降低图卷积层的计算复杂度。相较于频域图卷积中矩阵分解时
O
(
N
3
)
O(N^3)
O(N3)的时间复杂度,这种空域图卷积计算的时间复杂度可以降至
O
(
∣
E
∣
d
∣
)
O(|E|d|)
O(∣E∣d∣)。
在实际任务中设计固定图滤波器的做法有效性的说明:
(1) L ~ s y m \tilde L_{sym} L~sym本身所具有的滤波特性是比较符合真实数据的特有性质的,能对数据实现高效的滤波操作。
(2)堆叠多层GCN层,在某种程度上,可以达到高阶多项式形式的频率响应函数的滤波能力。
一般,对于只能从频域出发进行矩阵特征分解从而执行图卷积计算的模型,称为频域图卷积模型
;相应地,能在空域视角执行矩阵乘法计算的模型,称之为空域图卷积模型
。注意:虽然空域图卷积模型在工程上具有优越性,但是这类模型也都可以从频域视角进行理解。
参考资料
[1] 《深入浅出图神经网络:GNN原理解析》
[2] 图信号与图卷积神经网络 读书笔记
[3] 图信号与图傅里叶变换
[4] 拉普拉斯矩阵与拉普拉斯算子的关系
[5] 图傅里叶变换
[6] 图卷积网络原来是这么回事(三)