文章目录
1. 主要脉络梳理
- 本文先从图傅里叶变换说起,图傅里叶变换相对简单,不太需要太多的背景知识,其核心内容是基于拉普拉斯矩阵的正交对角化分解,以及两个定义好的变换公式。
- 傅里叶变换与卷积定理经常一起出现的,在卷积定理部分,推导出图卷积的的通用形式 U g θ U T x Ug_{\theta} U^{T} x UgθUTx
- 基于卷积定理和CNN的三大特性,LeCun组提出Spectral CNN,但其中涉及到了拉普拉斯矩阵分解和稠密特征向量矩阵 U U U相乘,计算量巨大,在大规模图上难以落地。
- ChebyNet利用切比雪夫多项式的矩阵形式参数化核卷积 g θ g_{\theta} gθ和特征值矩阵 Λ \Lambda Λ 的多项式组合,经过一些简单运算,使得卷积定理结果中仅保留了要学习的参数 θ \theta θ和 L L L的多项式,大大减少的参数量和计算复杂度,图卷积神经网络变得实用起来。
- GCN更是在ChebyNet的基础上,简化了更多更多参数,最终才呈现如此简单的模型结构,将谱方法与空间方法进行了统一,因此我们常说谱方法是空间方法的一个特例,两者不是对立关系,而是包含关系;
2. 图傅里叶变换(Graph Fourier Transform)
2.1 拉普拉斯矩阵特征分解
图 的拉普拉斯矩阵
L
L
L是一个实对称矩阵,由于实对称矩阵可以被正交对角化:
L
=
U
Λ
U
T
=
U
(
λ
1
λ
2
⋱
λ
2
)
U
T
L=U\Lambda U^T=U\begin{pmatrix} \lambda _1 & & \\ & \lambda _2 & & \\ & & \ddots & \\ & & & \lambda _2 \end{pmatrix} U^T
L=UΛUT=U⎝⎜⎜⎛λ1λ2⋱λ2⎠⎟⎟⎞UT
其中
U
=
(
u
1
,
u
2
,
⋯
,
u
n
)
U = ( u _ { 1 } , u _ { 2 } , \cdots , u _ { n } )
U=(u1,u2,⋯,un),因为
U
U
U是正交矩阵,
U
U
T
=
I
UU^T=I
UUT=I,所以
u
i
u
i
T
=
1
u_iu_i^T=1
uiuiT=1且
u
i
u
j
T
=
0
u_iu_j^T=0
uiujT=0。特征值
λ
i
=
u
i
T
L
u
i
\lambda _i=u_i^TLu_i
λi=uiTLui,特征值反映了特征向量的平滑度,值越小代表对应的特征向量变化越平缓,取值差异不明显。因此图傅里叶变换就是在将一个图信号分解到不同平滑程度的图信号上,就像传统傅里叶变换将函数分解到不同频率的函数上一样。
此外,拉普拉斯矩阵分解过程,我们发现:
- U U U和特征值 Λ \Lambda Λ的维度与图中节点个数有关,对于大规模的,存在亿级节点的图网络,其参数量巨大,存储代价大
- 与 U U U有关的矩阵相乘时间复杂度 O ( n 2 ) O(n^2) O(n2),矩阵分解的时间复杂度 O ( n 3 ) O(n^3) O(n3)
2.2 傅里叶基和傅里叶系数
在图傅里叶变换中,利用拉普拉斯矩阵特征向量
U
U
U的正交性,
U
T
x
=
U
T
U
x
^
=
x
^
U ^ { T } x = U ^ { T } U \hat{x} = \hat{x}
UTx=UTUx^=x^,将傅里叶变换和傅里叶逆变换**「定义」**如下:
x
^
=
U
T
x
x
=
U
x
^
\left. \begin{array} { l } { \hat{x} = U ^ { T } x } \\ { x = U { \hat{x} } } \end{array} \right.
x^=UTxx=Ux^
我们将图傅里叶逆变换展开成矩阵相乘的形式:
x
=
U
x
^
=
(
⋮
⋮
⋮
…
⋮
u
1
u
2
u
3
…
u
n
⋮
⋮
⋮
…
⋮
)
n
×
n
(
x
1
^
x
2
^
⋮
x
n
^
)
n
×
1
=
x
1
^
u
1
+
x
2
^
u
2
+
⋯
+
x
n
^
u
n
\begin{aligned} x &=U \hat{x} \\ &=\left(\begin{array}{ccccc} \vdots & \vdots & \vdots & \ldots & \vdots \\ u_{1} & u_{2} & u_{3} & \ldots & u_{n} \\ \vdots & \vdots & \vdots & \ldots & \vdots \end{array}\right)^{n \times n}\left(\begin{array}{c} \hat{x_{1}} \\ \hat{x_{2}} \\ \vdots \\ \hat{x_{n}} \end{array}\right)^{n \times 1} \\ &=\hat{x_{1}} u_{1}+\hat{x_{2}} u_{2}+\cdots+\hat{x_{n}} u_{n} \end{aligned}
x=Ux^=⎝⎜⎜⎛⋮u1⋮⋮u2⋮⋮u3⋮………⋮un⋮⎠⎟⎟⎞n×n⎝⎜⎜⎜⎛x1^x2^⋮xn^⎠⎟⎟⎟⎞n×1=x1^u1+x2^u2+⋯+xn^un
从
x
=
U
x
^
=
x
1
^
u
1
+
x
2
^
u
2
+
⋯
+
x
n
^
u
n
x =U \hat{x} =\hat{x_{1}} u_{1}+\hat{x_{2}} u_{2}+\cdots+\hat{x_{n}} u_{n}
x=Ux^=x1^u1+x2^u2+⋯+xn^un可以看出:
- 图上的信号可以通过拉普拉斯矩阵的特征向量的线性加权来表示,因此拉普拉斯矩阵的特征向量 U U U就是傅里叶基
- 通过傅里叶变换后的信号 x ^ \hat{x} x^,为**傅里叶系数**
- 本质上傅里叶系数 x ^ \hat{x} x^是图信号 x x x在傅里叶基上 U U U的投影
3. 图卷积
在信号处理中,卷积和傅里叶变换是共同出现的,大家可以把卷积看做是一种信号在时域内的变换过程,是对信号实施操作的一种方法,如对信号的波形进行平滑等等,同时,信号也可以认为就是一个函数,而卷积操作相比于普通的平移,旋转等操作,更复杂,可以从更底层,更本质地去处理信息,为什么这么说呢?
为了回答这个问题,我们就需要知道信号的傅里叶变换是在做什么,简单地理解,傅里叶变换是将信号分解为正交的不同频率三角函数的过程,那么两个信号相互卷积,就可以选择不同的滤波器,使得某些频率的分量在卷积之后可以保留,而其他就被过滤;
在很多情况下,时域内的卷积过程计算较为复杂,信号经过傅里叶变换,转到频域后利用信号直接相乘,可以方便地完成计算,这就是卷积定理要干的事情。
给定两个信号
f
(
x
)
f(x)
f(x)和
g
(
x
)
g(x)
g(x),根据卷积定理:
f
∗
g
=
F
−
1
(
F
(
f
)
F
(
g
)
)
f * g=\mathcal{F}^{-1}(\mathcal{F}(f) \mathcal{F}(g))
f∗g=F−1(F(f)F(g))
表示的是两个信号在时域中的卷积,可以先通过频域的点积,再通过傅里叶逆变换得到时域内结果。
在图信号上,基于上述卷积定理来进行一番运算,,
∗
G
*\mathcal{G}
∗G表示在图上做卷积,根据图傅里叶变换和傅里叶逆变换:
(
x
∗
G
y
)
=
U
(
U
T
x
⊙
U
T
y
)
=
U
g
θ
U
T
x
(x *\mathcal{G} y)=U\left(U^{T} x \odot U^{T} y\right)\\ =Ug_{\theta} U^{T} x
(x∗Gy)=U(UTx⊙UTy)=UgθUTx
那么上式是怎么推导的?
- 首先,分别对信号 x , y x,y x,y做图傅里叶变换,得到 x ^ = U T x , y ^ = U T y \hat{x} = U ^ { T } x,\hat{y} = U ^ { T } y x^=UTx,y^=UTy
- 然后,在频域内进行点乘 U T x ⊙ U T y U^{T} x \odot U^{T} y UTx⊙UTy,将 U T y ∈ R n U^{T}y\in \mathbb{R}^n UTy∈Rn转变为对角矩阵 g θ ∈ R n × n g_{\theta} \in \mathbb{R}^{n\times n} gθ∈Rn×n, g θ = diag ( [ g 1 ^ , g 2 ^ , ⋯ , g n ^ ] ) g_{\theta} =\operatorname{diag}\left(\left[\hat{g_{1}}, \hat{g_{2}}, \cdots, \hat{g_{n}}\right]\right) gθ=diag([g1^,g2^,⋯,gn^]),点积等价于 g θ U T x g_{\theta} U^{T}x gθUTx。
因此,我们可以将图卷积拆分成3个步骤,同时将 x x x看作为输入图信号,而 y y y 做为一个卷积信号,利用 y y y实现对输入信号 x x x的滤波过程:
步骤1:先根据图拉普拉斯矩阵进行特征分解,得到
U
U
U矩阵,根据
U
U
U对图信号
x
x
x进行傅里叶变换
U
T
x
U^Tx
UTx
步骤2:利用卷积核
g
θ
g_{\theta}
gθ作用在图信号
x
x
x的频域上,
g
θ
U
T
x
g_{\theta} U^{T} x
gθUTx
步骤3:利用图傅里叶逆变换,将处理后的信号,转回到节点域(或者叫空间域),
U
g
θ
U
T
x
Ug_{\theta} U^{T} x
UgθUTx
因此,我们可以得到一个信号处理的通用框架,基于这个框架可以进行图卷积神经网络的设计:
U
g
θ
U
T
x
Ug_{\theta} U^{T} x
UgθUTx
这里需要解释一个很容易进入的误区。
图傅里叶变换使用的变换矩阵,并不同于离散傅里叶变换。离散傅里叶变换所用矩阵形式固定,如下所示
y
=
F
x
y=Fx
y=Fx:
[
y
0
y
1
y
2
⋮
y
n
−
1
]
=
[
1
1
1
⋯
1
1
w
w
2
⋯
w
n
−
1
1
w
2
w
4
⋯
w
2
(
n
−
1
)
⋮
⋮
⋮
⋱
⋮
1
w
n
−
1
w
2
(
n
−
1
)
⋯
w
(
n
−
1
)
2
]
[
x
0
x
1
x
2
⋮
x
n
−
1
]
\left[\begin{array}{c} y_{0} \\ y_{1} \\ y_{2} \\ \vdots \\ y_{n-1} \end{array}\right]=\left[\begin{array}{ccccc} 1 & 1 & 1 & \cdots & 1 \\ 1 & w & w^{2} & \cdots & w^{n-1} \\ 1 & w^{2} & w^{4} & \cdots & w^{2(n-1)} \\ \vdots & \vdots & \vdots & \ddots & \vdots \\ 1 & w^{n-1} & w^{2(n-1)} & \cdots & w^{(n-1)^{2}} \end{array}\right]\left[\begin{array}{c} x_{0} \\ x_{1} \\ x_{2} \\ \vdots \\ x_{n-1} \end{array}\right]
⎣⎢⎢⎢⎢⎢⎡y0y1y2⋮yn−1⎦⎥⎥⎥⎥⎥⎤=⎣⎢⎢⎢⎢⎢⎡111⋮11ww2⋮wn−11w2w4⋮w2(n−1)⋯⋯⋯⋱⋯1wn−1w2(n−1)⋮w(n−1)2⎦⎥⎥⎥⎥⎥⎤⎣⎢⎢⎢⎢⎢⎡x0x1x2⋮xn−1⎦⎥⎥⎥⎥⎥⎤
F是傅里叶矩阵,形式固定,而图傅里叶中所用矩阵随图结构的不同而变化,因此二者不能混为一谈。那么,既然不是标准的离散傅里叶变换,自然也不能想当然地认为它满足傅里叶变换的许多优良性质,比如时域卷积等于频域相乘,这一点我们后文再说。
因此图傅里叶变换并不是通过严谨的数学推导,将傅里叶变换扩展到图上,而是经过许多类比,直接定义成了这个样子。就好像说,傅里叶变换是以拉普拉斯算子的特征向量为基进行投影,那么图傅里叶变换就以拉普拉斯矩阵的特征向量为基进行投影。虽然不是数学上的严格推导,但如果这个结果还能有实际意义,那我们就更容易接受这样一个定义。。
我们都知道,傅里叶变换有一个性质:时域卷积等价于频域相乘。所以有些人说,是因为 f f f和 g g g直接做卷积不好算,所以转到频域上做乘法。但这个说法有几个漏洞
- 第一, f f f和 g g g两个向量做卷积好像没什么难的
- 第二,第二, f f f和 g g g都是长度为 n n n的向量,上式卷积计算结果仍是一个长度为 n n n的向量,但实际上卷积计算的结果应该是长度为! 2 n − 1 2n-1 2n−1的向量
- 第三,图傅里叶变换不是由传统傅里叶变换严格推导而来的,不一定享有“时域卷积等价于频域相乘”的性质
实际上,上述卷积公式并不是推导而来,而是直接定义的。我们把频域乘积再变回来这个过程,叫做图卷积。所以说图卷积跟数学中的卷积定义、CNN中的卷积本质上都不是一个东西了,它并不是真正在做卷积,只是在进行等式右侧的计算,我们将这样的计算叫做图卷积。
4. 卷积神经网络(CNN)的特性
只要了解过CNN,肯定都会知道CNN的几大特性:
- 局部连接
假设给定一张 100 × 100 100\times100 100×100大小的图片,如果不采用局部连接,而是将整个图片转化为10000维的向量,通过1层神经网络映射到其中1个神经元上,那么需要10000个参数,而在卷积核的局部连接情况下,下一层神经元上的输入仅仅与卷积核大小的局部区域有关,减少了参数量 - 权值共享
所谓权值共享,就是一个卷积核在整体个图像(或者特征图)上进行滑动,共享了这个卷积核 - 层次化表达
卷积神经网络可以通过堆叠多层,不同层学习到不同参数的卷积核,不同层提取的特征具有不同的属性,越底层的卷积核,提取了更细节的特征,如边缘,纹理,更高层的特征更具有语义信息
那么图卷积神经网络,是怎么样来保证这3大特征,就是图卷积神经网络演进过程中需要解决的问题。
5. 从卷积神经网络到图卷积神经网络
5.1 谱域卷积神经网络:Spectral CNN
论文:Spectral Networks and Deep Locally Connected Networks on Graphs
spectral convolutional neural network,在2014年由LeCun组提出的第一代模型。核心思想是用可学习的对角矩阵
F
F
F来代替谱域的卷积核
g
θ
g_{\theta}
gθ,模仿CNN的特性,通过叠加多层,加入非线性激活函数,以及在每一层都定义了图卷积核,用于构成一个图卷积神经网络,由于所有的运算都是在节点的谱域完成,因此叫做Spectral CNN:
(
x
∗
G
y
)
=
U
F
U
T
x
(x *_G y)=UF U^{T} x
(x∗Gy)=UFUTx
那么,相邻两层网络之间输入与输出的关系就是:
x
j
k
+
1
=
h
(
∑
i
=
1
f
k
U
F
i
,
j
k
U
T
x
i
k
)
=
h
(
U
∑
i
=
1
f
k
F
i
,
j
k
U
T
x
i
k
)
,
j
=
1
,
⋯
,
f
k
+
1
\begin{aligned} x_{j}^{k+1} &=h\left(\sum_{i=1}^{f_{k}} U F_{i, j}^{k} U^{T} x_{i}^{k}\right) \\ &=h\left(U \sum_{i=1}^{f_{k}} F_{i, j}^{k} U^{T} x_{i}^{k}\right), j=1, \cdots, f_{k+1} \end{aligned}
xjk+1=h(i=1∑fkUFi,jkUTxik)=h(Ui=1∑fkFi,jkUTxik),j=1,⋯,fk+1
- h h h 表示非线性激活函数
- f k , f k + 1 f_k,f_{k+1} fk,fk+1分别表示在神经网络的第 k k k层,输入特征和输出特征的维度,经过一层神经网络后,图中每个节点的embedding向量由 f k f_k fk维 变为 f k + 1 f_{k+1} fk+1维;
- 下一层各节点的embedding向量维度,可以通过多个卷积核 F F F来确定,在等式中 g θ g_{\theta} gθ的作用与 是一致的,只不过这里每层的卷积核个数是由多个组成
- 等式中求和的部分,可以变为等式中第二行的形式进行计算,先对每个通道
x
i
k
∈
R
n
x_i^k\in \mathbb{R}^n
xik∈Rn进行傅里叶变换得到
U
T
x
i
k
U^Tx_i^k
UTxik,在频域内利用卷积核
F
i
,
j
k
F_{i,j}^k
Fi,jk进行变换,此时对一个通道来说,变换后维度依然是
R
n
\mathbb{R^n}
Rn。之后依次计算
x
k
x^k
xk的所有通道,相加后再进行傅里叶逆变换
通过对Spectral CNN的介绍,我们可以知道:
- 计算依赖于拉普拉斯矩阵分解,显式地使用了特征向量矩阵 ,而这个分解和矩阵相乘计算时间非常耗时
- 由于是基于拉普拉斯矩阵分解,导致卷积核不是局部化的,可以理解为一个节点的信息聚合不是来自于其邻居,而是所有节点
5.2 切比雪夫网络:ChebyNet
为了解决Spectral CNN显式地利用了拉普拉斯矩阵特征分解,导致卷积核非局部化的问题,2016年NeuralIPS上发表的ChebyNet提出了一种方法来应对这个局面,使得谱方法才有了落地的可能性。
核心思想是:应用**切比雪夫多项式(Chebyshev polynomials)**以代替谱域的卷积核,加速特征矩阵的求解。
先了解一下切比雪夫多项式,这里使用了第一类的矩阵形式:
T
0
(
L
)
=
I
T
1
(
L
)
=
L
T
n
+
1
(
L
)
=
2
x
T
n
(
L
)
−
T
n
−
1
(
L
)
\left. \begin{array} { l } { T _ { 0 } ( L ) = I } \\ { T _ { 1 } (L ) = L } \\ { T _ { n + 1 } ( L ) = 2 x T _ { n } ( L ) - T _ { n - 1 } ( L ) } \end{array} \right.
T0(L)=IT1(L)=LTn+1(L)=2xTn(L)−Tn−1(L)
我们知道利用拉普拉斯矩阵特征分解后的特征值向量
Λ
=
diag
(
[
λ
1
,
λ
2
,
⋯
,
λ
N
]
)
\Lambda=\operatorname{diag}\left(\left[\lambda_{1}, \lambda_{2}, \cdots, \lambda_{N}\right]\right)
Λ=diag([λ1,λ2,⋯,λN])来表示卷积核,而ChebyNet的就是希望通过多项式近似来参数化这个卷积核,下面来看看它是怎么做的,新定义的卷积核为:
g
θ
=
∑
k
=
0
K
−
1
θ
k
T
k
(
Λ
~
)
,
where
Λ
~
=
2
Λ
λ
max
−
I
N
g_{\theta}=\sum_{k=0}^{K-1} \theta_{k} T_{k}(\tilde{\Lambda}), \text { where } \tilde{\Lambda}=\frac{2 \Lambda}{\lambda_{\max }}-I_{N}
gθ=k=0∑K−1θkTk(Λ~), where Λ~=λmax2Λ−IN
其中,
θ
∈
R
K
\theta \in \mathbb{R}^{K}
θ∈RK是
K
K
K个要学习的模型参数,
Λ
~
\tilde{\Lambda}
Λ~的作用是让特征向量矩阵归一化到[−1,1]之间。但是,仅仅在这里看的话,新的卷积核是原来拉普斯矩阵的特征值的多项式组合,这还是需要使用拉普斯矩阵的特征值,说明还得进行特征分解,所以要达到消除拉普拉斯矩阵特征分解步骤的目的,要怎么做呢?
为了简便计算,我们把卷积核近似写成以下的形式:
g
θ
(
Λ
)
=
∑
k
=
0
K
−
1
θ
k
Λ
k
g_{\theta}(\Lambda)=\sum_{k=0}^{K-1} \theta_{k} \Lambda^k
gθ(Λ)=k=0∑K−1θkΛk
我们将上述卷积核带入到卷积定理中去,全过程是:
x
∗
G
y
=
U
(
(
U
T
x
)
⊙
(
U
T
y
)
)
=
U
g
θ
U
T
x
=
U
(
∑
k
=
0
K
−
1
θ
k
Λ
k
)
U
T
x
=
(
θ
0
I
+
θ
1
L
+
θ
2
L
2
+
⋯
+
θ
k
−
1
L
k
−
1
)
x
\begin{aligned} x * \mathcal{G} y &=U\left(\left(U^{T} x\right) \odot\left(U^{T} y\right)\right) \\ &=U g_{\theta} U^{T} x \\ &=U\left(\sum_{k=0}^{K-1} \theta_{k} \Lambda^{k}\right) U^{T} x \\ &=\left(\theta_{0} I+\theta_{1} L+\theta_{2} L^{2}+\cdots+\theta_{k-1} L^{k-1}\right) x \end{aligned}
x∗Gy=U((UTx)⊙(UTy))=UgθUTx=U(k=0∑K−1θkΛk)UTx=(θ0I+θ1L+θ2L2+⋯+θk−1Lk−1)x
可以看到,上述等式特征值矩阵消失了,只有一组
θ
\theta
θ参数和
L
L
L
可能最后一步的推导不容易想明白,下面详细说一下:
拉普拉斯矩阵的特征向量
U
U
U满足正交性,所以对于
L
2
L^2
L2有:
L
2
=
(
U
Λ
U
T
)
(
U
Λ
U
T
)
=
U
Λ
(
U
T
U
)
Λ
U
T
=
U
Λ
2
U
T
\begin{aligned} L^{2} &=\left(U \Lambda U^{T}\right)\left(U \Lambda U^{T}\right) \\ &=U \Lambda\left(U^{T} U\right) \Lambda U^{T} \\ &=U \Lambda^{2} U^{T} \end{aligned}
L2=(UΛUT)(UΛUT)=UΛ(UTU)ΛUT=UΛ2UT
推广可得:
L
K
=
U
Λ
K
−
1
U
T
L^K=U \Lambda^{K-1} U^{T}
LK=UΛK−1UT
就可以对倒数第二步进行展开了:
U
(
∑
k
=
0
K
−
1
θ
k
Λ
k
)
U
T
x
=
U
(
θ
0
+
θ
1
Λ
+
θ
2
Λ
2
+
⋯
+
θ
K
−
1
Λ
K
−
1
)
U
T
x
=
(
θ
0
U
U
T
+
θ
1
U
Λ
U
T
+
θ
2
U
Λ
2
U
T
+
⋯
+
θ
K
−
1
U
Λ
K
−
1
U
T
)
x
=
(
θ
0
I
+
θ
1
L
+
θ
2
L
2
+
⋯
+
θ
K
−
1
L
K
−
1
)
x
\begin{aligned} U\left(\sum_{k=0}^{K-1} \theta_{k} \Lambda^{k}\right) U^{T} x &=U\left(\theta_{0}+\theta_{1} \Lambda+\theta_{2} \Lambda^{2}+\cdots+\theta_{K-1} \Lambda^{K-1}\right) U^{T} x \\ &=\left(\theta_{0} U U^{T}+\theta_{1} U \Lambda U^{T}+\theta_{2} U \Lambda^{2} U^{T}+\cdots+\theta_{K-1} U \Lambda^{K-1} U^{T}\right) x \\ &=\left(\theta_{0} I+\theta_{1} L+\theta_{2} L^{2}+\cdots+\theta_{K-1} L^{K-1}\right) x \end{aligned}
U(k=0∑K−1θkΛk)UTx=U(θ0+θ1Λ+θ2Λ2+⋯+θK−1ΛK−1)UTx=(θ0UUT+θ1UΛUT+θ2UΛ2UT+⋯+θK−1UΛK−1UT)x=(θ0I+θ1L+θ2L2+⋯+θK−1LK−1)x
证毕。
最后,如果写成ChebyNet的一个通道的网络结构形式:
y
=
σ
(
U
(
∑
k
=
0
K
−
1
θ
k
Λ
k
)
U
T
x
=
σ
(
(
θ
0
I
+
θ
1
L
+
θ
2
L
2
+
⋯
+
θ
K
−
1
L
K
−
1
)
x
)
\begin{aligned} y &=\sigma\left(U\left(\sum_{k=0}^{K-1} \theta_{k} \Lambda^{k}\right) U^{T} x\right.\\ &=\sigma\left(\left(\theta_{0} I+\theta_{1} L+\theta_{2} L^{2}+\cdots+\theta_{K-1} L^{K-1}\right) x\right) \\ \end{aligned}
y=σ(U(k=0∑K−1θkΛk)UTx=σ((θ0I+θ1L+θ2L2+⋯+θK−1LK−1)x)
5.3 图卷积神经网络:GCN
论文:SEMI-SUPERVISED CLASSIFICATION WITH GRAPH CONVOLUTIONAL NETWORKS
graph convolutional neural network,是在ChebyNet基础上,2017年由Kipf提出的,为ChebNet的进一步简化。
核心思想是:对参数的个数进行了限制,每个卷积核仅有一个参数,值考虑1阶切比雪夫多项式。(忽略了input channel和output channel)
x
∗
G
y
=
U
(
∑
k
=
0
K
−
1
θ
k
T
k
(
Λ
~
)
)
U
T
x
=
∑
k
=
0
K
−
1
θ
k
T
k
(
L
~
)
x
=
θ
0
T
0
(
L
~
)
x
+
θ
1
T
1
(
L
~
)
x
=
θ
0
x
+
θ
1
L
~
x
(
切
比
雪
夫
多
项
式
带
入
)
\begin{aligned} x * \mathcal{G} y &=U\left(\sum_{k=0}^{K-1} \theta_{k} T_{k}(\tilde{\Lambda})\right) U^{T} x \\ &=\sum_{k=0}^{K-1} \theta_{k} T_{k}(\tilde{L}) x\\ &= \theta_{0} T_{0}(\tilde{L}) x+\theta_{1} T_{1}(\tilde{L}) x\\ &= \theta_{0} x+\theta_{1} \tilde{L} x (切比雪夫多项式带入)\\ \end{aligned}
x∗Gy=U(k=0∑K−1θkTk(Λ~))UTx=k=0∑K−1θkTk(L~)x=θ0T0(L~)x+θ1T1(L~)x=θ0x+θ1L~x(切比雪夫多项式带入)
对于
L
~
=
2
λ
max
L
−
I
N
\tilde{L}=\frac{2}{\lambda_{\max }} L-I_{N}
L~=λmax2L−IN,令
λ
max
=
2
\lambda_{\max }=2
λmax=2;同时利用归一化的拉普拉斯矩阵来代替原始矩阵
L
L
L
x
∗
G
y
=
θ
0
x
+
θ
1
(
L
−
I
N
)
x
=
θ
0
x
+
θ
1
(
I
N
−
D
−
1
2
A
D
−
1
2
−
I
N
)
x
=
θ
0
x
−
θ
1
D
−
1
2
A
D
−
1
2
x
\begin{aligned} x * \mathcal{G} y &=\theta_{0} x+\theta_{1}\left(L-I_{N}\right) x\\ &=\theta_{0} x+\theta_{1}\left(I_{N}-D^{-\frac{1}{2}} A D^{-\frac{1}{2}}-I_{N}\right) x\\ &= \theta_{0} x-\theta_{1} D^{-\frac{1}{2}} A D^{-\frac{1}{2}} x \end{aligned}
x∗Gy=θ0x+θ1(L−IN)x=θ0x+θ1(IN−D−21AD−21−IN)x=θ0x−θ1D−21AD−21x
在这里,因为Kipf提出的这个网络是作用在图数据上的半监督节点分类任务上,有标注的数据较少,减少参数可以防止过拟合。所以为了进一步减少模型参数,令
θ
0
=
−
θ
1
=
θ
\theta_{0}=-\theta_{1}=\theta
θ0=−θ1=θ:
x
∗
G
y
=
θ
(
I
N
+
D
−
1
2
A
D
−
1
2
)
x
x * \mathcal{G} y =\theta\left(I_{N}+D^{-\frac{1}{2}} A D^{-\frac{1}{2}}\right) x
x∗Gy=θ(IN+D−21AD−21)x
此时,再进行renormalization trick这一操作,
I
N
+
D
−
1
/
2
A
D
−
1
/
2
⟶
D
~
−
1
/
2
A
~
D
~
−
1
/
2
I_{N}+D^{-1 / 2} A D^{-1 / 2} \longrightarrow \widetilde{D}^{-1 / 2} \widetilde{A} \widetilde{D}^{-1 / 2}
IN+D−1/2AD−1/2⟶D
−1/2A
D
−1/2,得到:
x
∗
G
y
=
θ
(
D
~
−
1
/
2
A
~
D
~
−
1
/
2
)
x
x * \mathcal{G} y =\theta\left(\widetilde{D}^{-1 / 2} \widetilde{A} \widetilde{D}^{-1 / 2}\right) x
x∗Gy=θ(D
−1/2A
D
−1/2)x
此时的
θ
\theta
θ仅仅变成了一个缩放因子,但是在神经网络中,这个看起来没有必要,可以在其他参数上体现,因此又可以进一步精简, 先去除
θ
\theta
θ。我们把缩放因子,拉普拉斯矩阵归一化等等带来的其他参数变化,全部让网络去学习,体现在
W
W
W上:
y
=
σ
(
D
^
−
1
2
A
^
D
^
−
1
2
x
W
)
y=\sigma\left(\hat{D}^{-\frac{1}{2}} \hat{A} \hat{D}^{-\frac{1}{2}} x W\right)
y=σ(D^−21A^D^−21xW)
最终,我们将上述等式改写成论文中的形式,表示神经网络中输入与输出的情况:
H
(
l
+
1
)
=
σ
(
D
^
−
1
2
A
^
D
^
−
1
2
H
(
l
)
W
(
l
)
)
H^{(l+1)}=\sigma\left(\hat{D}^{-\frac{1}{2}} \hat{A} \hat{D}^{-\frac{1}{2}} H^{(l)} W^{(l)}\right)
H(l+1)=σ(D^−21A^D^−21H(l)W(l))
- H ( l ) H^{(l)} H(l)是当前层的输入, H ( l + 1 ) H^{(l+1)} H(l+1)是输出, W ( l ) W^{(l)} W(l)是模型参数,可以是MLP网络
- 模型先对输入特征进行变换 H ( l ) W ( l ) H^{(l)} W^{(l)} H(l)W(l),然后通过 D ^ − 1 2 A ^ D ^ − 1 2 \hat{D}^{-\frac{1}{2}} \hat{A} \hat{D}^{-\frac{1}{2}} D^−21A^D^−21完成邻居信息的加权聚合
- 最后节点的输出通过一个非线性激活函数,完成节点的隐含向量的更新
这里的
H
(
l
)
,
H
(
l
+
1
)
H^{(l)},H^{(l+1)}
H(l),H(l+1)对应原论文里的
X
,
Z
X,Z
X,Z