文章目录
6.GCN的性质
6.1 GCN和CNN的联系
从本质上看,二者都是聚合邻域信息的运算,只是作用的数据对象不同。
1.图像是一种特殊的图数据
CNN与GCN的最大区别是没有显式地表达出邻接矩阵,如果我们将图像中的每个像素视作一个节点,那么以 3 × 3 3\times 3 3×3大小的卷积核为例,可以将中心节点附近 3 × 3 3\times 3 3×3的栅格内的像素等价为自己的邻居。这种将像素等价于节点,像素之间空间坐标的连线作为彼此之间的边,如此图像数据就成了一种结构非常规则的图数据。
CNN处理这种2D栅格的图数据,其邻域结构关系几乎相似,而GCN处理的单个节点附近的邻域关系千差万别。因此GCN中的卷积计算是用来处理更普遍的非结构化的图数据的。
2.从网络连接方式来看,二者均是局部连接
GCN: ∑ v j ∈ N ( v i ) w x j \sum_{v_j\in N(v_i)}\pmb w\pmb x_j ∑vj∈N(vi)wwwxxxj,计算作用在一阶子图上;
CNN: ∑ v j ∈ [ − 4 , + 4 ] w j x i + j \sum_{v_j\in{[-4,+4]}}\pmb w_j \pmb x_{i+j} ∑vj∈[−4,+4]wwwjxxxi+j,计算作用在 3 × 3 3\times 3 3×3栅格内。
这种节点下一层的特征计算只依赖于自身邻域的方式,在网络上都表现为局部连接,比起全连接结构减少了单层网络计算复杂度。CNN具有栅格数量的权重参数,GCN为了适应不同的图数据结构,其卷积核权重参数退化为一组。
3.二者卷积核的权重处处共享
GCN的这组权重参数作用该层全图所有的节点,这样的处理方式大大减少了单层网络的参数量。
4.从模型的层面来看,感受域随着卷积层的增加而变大
每多一层卷积计算,中心节点就能多融入更外一圈的信息,其节点提取的特征就能够得到更抽象化的表示。
CNN:两个 3 × 3 → 一 个 5 × 5 3\times 3 \rightarrow一个5\times 5 3×3→一个5×5。
GCN:两次卷积就相当于中心节点融合信息从一阶扩展到二阶邻居。
GCN的任务
图像分类:脑信号图分类任务;
节点分类:基于论文应用数据集对图中的每个节点(代表论文)进行学科类别分类。
6.2 GCN能够对图数据进行端对端学习
深度学习的成功离不开端到端学习,端到端学习实现了一种自动化地从数据中进行高效学习的机制。这种高度自动化的特性的达成,需要背后大量的针对特定类型数据的学习任务的适配工作,这种适配体现在当下十分流行的各种网络层或层块结构的设计上。e.g.Conv2D层对于图像数据的学习、LSTM层对于序列数据的学习、Global Pooling层对于全局信息的提取等。这些层计算过程必须最大限度地按照我们期望的方式去适配数据的内在规律模式。
大量实践经验证明:深度学习能够在某个场景任务中取得极其优秀的效果,很大程度上得益于这类网络层或者由该网络层所构建的网络层块的定制化设计。
图数据中含有两部分信息:属性信息和结构信息。属性信息描述了图中对象的固有性质;结构信息描述了对象之间的关联性质,这种由关联产生的结构不仅与图数据中节点的刻画有很大的帮助作用,而且对该全图的刻画也起着关键作用。一个优秀的针对图数据的学习系统,必须能够做到对属性信息和结构信息进行端对端的学习。
GCN如何适配图数据内在规律?
图数据典型的两种学习方式:基于手工特征与基于随机游走的方法。
属性信息根据属性类型进行编码设计,然后就可以将其拼接成一个表示节点的特征向量;节点信息比较难处理,因此两个方法有所区别,这也是两个方法的核心。
基于手工特征的方法
依赖人工干预,具体来说,就是将图中节点的结构信息以一些图的统计特征进行替代,常见的如节点的度、节点的中心度、节点的PageRank值等,然后将这个代表节点结构信息的特征向量与代表节点属性信息的特征向量进行拼接,送到下游进行学习。问题在于结构信息的特征人为定义,因此很难确定这些统计特征是否对学习后面的任务有效。
基于随机游走的方法
基本思想:将图中节点所满足的关系与结构的性质映射到一个新的向量空间中去,比如在图上距离更近的两个节点,在新的向量空间上的距离也更近。通过这种方式将图中的数据转化到向量空间中的数据,以方便后续的处理,后续的处理和基于手工特征的方法相似,拼接结构信息和属性信息、进行下游学习。注意:节点的结构信息是通过随机游走类方法进行学习的,并不依赖人为定义。
针对公式 L ~ s y m X W \tilde L_{sym}XW L~symXW,可以分成两步:
- X W XW XW是对属性信息的仿射变换,学习了属性特征之间的交互模式;
- L ~ s y m ( X W ) \tilde L_{sym}(XW) L~sym(XW)从空域来看是聚合邻居节点的过程,代表了对节点局部结构信息的编码。
一个经典问题——图的同构问题
考量算法对图结构的分辨能力,一个经典的解法就是Weisfeiler-Lehman算法,算法流程如下:
对于图上任意一个节点 v i v_i vi:
- 获取邻居节点 v j ∈ N ( v i ) v_j\in N(v_i) vj∈N(vi)的标签 h j h_j hj;
- 更新 v i v_i vi的标签 h i ← h a s h ( ∑ v j h j ) h_i\leftarrow hash(\sum_{v_j}h_j) hi←hash(∑vjhj),其中hash( ⋅ \cdot ⋅)是一个单射函数(一对一映射)。
上面的流程与GCN基本一致,因此GCN近似于一种带参的、支持自动微分的Weisfeiler-Lehman算法。一种GCN的衍生模型(How powerful are graph neural networks)——GIN(Graph Isomorphism Network)在判断图同构问题的能力等价于Weisfeiler-Lehman算法。
GCN的属性信息的编码学习和结构信息的编码学习不断交替进行,如是完成对图数据中更加复杂的模式学习。
GCN比起前两种方法的优势
- GCN对表示学习和任务学习一起进行端到端的优化,前述两种方法节点的特征向量一旦拼接就会被固定,下游任务学习中产生的监督信号无法有效指导图数据的表示学习,这导致节点的特征表示对于下游任务不是最高效的;而GCN对于图数据的建模并没有切分成两步完成,对于节点的表示学习与下游的任务学习被放到一个模型里进行端到端学习,整个模型的监督信号同时指导着任务层(如分类层)和GCN层的参数更新,节点的特征表示与下游任务之间具有更好的适应性。
- GCN对结构信息和属性信息的学习同时进行,并没有分拆和解构。通常属性信息和结构信息具有很好的互补关系,对于一些结构稀疏的图来说,属性信息的补充可以很好地提高模型对节点表示学习的质量,另外,结构信息蕴含着属性信息中所没有的知识,对节点的刻画具有十分重要的作用。GCN将结构信息与属性信息放进一个网络层里面同时进行学习,使得二者能够协同式地去影响最终节点的表示。
总结:GCN模型将学习过程直接架构于图数据之上,为图数据的学习提供了一套端对端的框架,对相关的任务学习具有更好的适应性。
6.3 GCN是一个低通滤波器
图半监督学习
图半监督学习任务中,通常会在相应损失函数里增加一个正则项,该正则项需要保证相邻节点之间的类别信息趋于一致。使用拉普拉斯矩阵的二次型作为正则约束:
L
=
L
0
+
L
r
e
g
,
L
r
e
g
=
∑
e
i
j
∈
E
A
i
j
∣
∣
f
(
x
i
)
−
f
(
x
j
)
∣
∣
2
=
f
(
X
)
T
L
f
(
x
)
L=L_0+L_{reg},L_{reg}=\sum_{e_{ij}\in E}A_ij||f(\pmb x_i)-f(\pmb x_j) ||^2=f(X)^TLf(x)
L=L0+Lreg,Lreg=eij∈E∑Aij∣∣f(xxxi)−f(xxxj)∣∣2=f(X)TLf(x)
其中L表示模型的总损失,
L
0
L_0
L0表示监督损失,
L
r
e
g
L_{reg}
Lreg表示正则项,从学习的目标来看,这样的正则项使得相邻节点的分类标签尽量一致——物以类聚,可以指导我们更高效地对未标记的数据进行学习。从图信号的角度来看,该正则项表示图信号的总变差,减小该项表示我们期望经过模型之后的图信号更加平滑,从频域上来看,相当于对图信号进行了低通滤波(保留低通部分,这样对应的特征值更小,因此总变差更小)。
GCN损失函数
核心计算式
L
~
s
y
m
X
W
\tilde L_{sym}XW
L~symXW,体现图滤波的地方在于
L
~
s
y
m
\tilde L_{sym}
L~sym。要确定是否是低通滤波,必须要研究
L
~
s
y
m
\tilde L_{sym}
L~sym对应的频率响应函数
p
(
λ
)
p(\lambda)
p(λ)的性质。
L
~
s
y
m
=
D
~
−
1
2
A
~
D
~
−
1
2
=
D
~
−
1
2
(
D
~
−
L
)
D
~
−
1
2
=
I
−
D
~
−
1
2
L
D
~
−
1
2
=
I
−
L
~
s
\tilde L_{sym}=\tilde D^{-\frac{1}{2}}\tilde A\tilde D^{-\frac{1}{2}}=\tilde D^{-\frac{1}{2}}(\tilde D-L)\tilde D^{-\frac{1}{2}}=I-\tilde D^{-\frac{1}{2}}L\tilde D^{-\frac{1}{2}}=I-\tilde L_s
L~sym=D~−21A~D~−21=D~−21(D~−L)D~−21=I−D~−21LD~−21=I−L~s
其中
L
~
s
\tilde L_s
L~s可以被正交对角化,
L
~
s
=
V
Λ
~
V
T
,
λ
~
i
是
L
~
s
\tilde L_s=V\tilde \Lambda V^T,\tilde \lambda_i是\tilde L_s
L~s=VΛ~VT,λ~i是L~s的特征值,可以证明
λ
~
i
∈
[
0
,
2
)
\tilde \lambda_i\in[0,2)
λ~i∈[0,2).
上式化为
L
~
s
y
m
=
V
(
1
−
Λ
~
)
V
T
\tilde L_{sym}=V(1-\tilde \Lambda)V^T
L~sym=V(1−Λ~)VT
显然其频率响应函数为
p
(
λ
)
=
1
−
λ
~
∈
(
−
1
,
1
]
p(\lambda)=1-\tilde \lambda\in(-1,1]
p(λ)=1−λ~∈(−1,1],该函数是一个线性收缩的函数,因此起到对图信号低通滤波的作用。
如果信号矩阵X不断左乘 L ~ s y m \tilde L_{sym} L~sym,则对应的频率相应函数 ( 1 − λ ~ i ) K (1-\tilde \lambda_i)^K (1−λ~i)K如下图所示
可以看出随着K增大,频率响应函数在低频段有着更强的缩放功能(低频段更小),因此是一种更强效应的低通滤波器。
这种堆叠式的滤波操作,在一定程度上解释了多层GCN模型对于信号的平滑能力。事实上为了更好地突出这种能力,减少模型参数量,可以直接将多层GCN退化成 σ ( L ~ s y m K X W ) \sigma(\tilde L_{sym}^KXW) σ(L~symKXW)。
这种滤波的选取原因:输入数据的特征信号包括低频信号与高频信号,低频信号包含着对任务学习更加有效的信息。
证明上述结论的一个例子:
6.4 GCN的过平滑问题
GCN无法堆叠很深,使用多层GCN进行学习,相关的任务效果会急剧下降。
使用多层GCN之后,节点区分性变得越来越差,节点的表示向量趋于一致,这使得相应的学习任务变得更加困难。
由6.3可知,GCN对输入信号做的是低通滤波的操作,这样会使得信号变得平滑(趋同),但是过犹不及,多次这样的操作就会丧失节点特征的多样性。
频域视角
由于
L
~
s
D
~
1
2
1
=
D
~
−
1
2
L
D
~
−
1
2
D
~
1
2
1
=
D
~
−
1
2
L
1
\tilde L_s\tilde D^{\frac{1}{2}}\pmb 1=\tilde D^{-\frac{1}{2}}L\tilde D^{-\frac{1}{2}}\tilde D^{\frac{1}{2}}\pmb 1=\tilde D^{-\frac{1}{2}}L\pmb 1
L~sD~21111=D~−21LD~−21D~21111=D~−21L111
由于L的全为1的特征向量对应的特征值为0(5.3节),因此有
L
1
=
0
L\pmb 1=0
L111=0,
L
~
s
D
~
1
2
1
=
D
~
−
1
2
(
L
1
)
=
0
\tilde L_s\tilde D^{\frac{1}{2}}\pmb 1=\tilde D^{-\frac{1}{2}}(L\pmb 1)=0
L~sD~21111=D~−21(L111)=0
因此
D
~
1
2
1
\tilde D^{\frac{1}{2}}\pmb 1
D~21111是
L
~
s
\tilde L_s
L~s的一个特征向量,该特征向量在任何一层都不会改变,处处相等。如果对一个图信号不断进行平滑操作,最后图信号就会变得处处相等,也就完全没有可区分性了。
空域角度
GCN从空域角度上就是在聚合邻居信息,每聚合一次,一个节点就多聚合了更高一阶邻居节点的信息。最高邻居节点的阶数称为该节点的聚合半径,当聚合半径随着GCN层数增加到达某个阈值,该节点就可以覆盖全图所有节点,如果层数足够多,每个节点能覆盖到的节点都会收敛到全图节点。因此,由于这种情况的出现,会大大降低每个节点的局部网络结构的多样性,对于节点自身特征的学习十分不利。
上图中,蓝色节点为聚合的节点,从b,c两个图中可以看出,增加一层发生了突变,使得节点的区分变得更困难了。
如何解决过平滑?
-
自适应性聚合半径的学习机制,通过跳跃连接来聚合模型每层节点的输出,聚合后的节点特征拥有混合性的聚合半径,上层任务可以进行选择性的监督学习,这样对于任意节点既不会因为聚合半径过大出现过平滑的问题,也不会因为聚合半径过小使得结构信息不能充分学习。如下图所示:
-
回到频率视角去调节图滤波器的值,有一种使用了重新分配权重的方式来增加 A ~ \tilde A A~中节点自连接的权重:
A ′ = { A i j p / d e g ( v i ) , if i ≠ j 1 − p , if i = j A^{'}=\begin{cases}A_{ij}p/deg(v_i),\text{if \quad} i\ne j\\ 1-p,\text{if \quad} i=j \end{cases} A′={Aijp/deg(vi),if i=j1−p,if i=j
如上式所示,可通过调节p的值对节点自身的权重进行重新分配。当p接近1的时候,模型趋向于不使用自身的信息,从频域上讲,这加速了模型低通滤波的效应;p接近0的时候,模型趋向于不聚合邻居的信息,从频域上看,这减缓了低通滤波的效应。
A ′ = { A i j p / d e g ( v i ) , if i ≠ j 1 − p , if i = j A^{'}=\begin{cases}A_{ij}p/deg(v_i),\text{if \quad} i\ne j\\ 1-p,\text{if \quad} i=j \end{cases} A′={Aijp/deg(vi),if i=j1−p,if i=j
如上式所示,可通过调节p的值对节点自身的权重进行重新分配。当p接近1的时候,模型趋向于不使用自身的信息,从频域上讲,这加速了模型低通滤波的效应;p接近0的时候,模型趋向于不聚合邻居的信息,从频域上看,这减缓了低通滤波的效应。