GCN从入门到精通

转载自一些知乎问题,并进行了整合,有问题欢迎随时联系

1. 什么是离散卷积?CNN中卷积发挥什么作用?

了解GCN之前必须对离散卷积(或者说CNN中的卷积)有一个明确的认识:
如何通俗易懂地解释卷积?https://www.zhihu.com/question/22298352
这个知乎回答中讲得很清楚,离散卷积本质就是一种加权求和。

如图1所示,CNN中的卷积本质上就是利用一个共享参数的过滤器(kernel),通过计算中心像素点以及相邻像素点的加权和来构成feature map实现空间特征的提取,当然加权系数就是卷积核的权重系数。

那么卷积核的系数如何确定的呢?是随机化初值,然后根据误差函数通过反向传播梯度下降进行迭代优化。这是一个关键点,卷积核的参数通过优化求出才能实现特征提取的作用,GCN的理论很大一部分工作就是为了引入可以优化的卷积参数。
图1:  CNN中卷积提取 feature map 示意图
图1: CNN中卷积提取 feature map 示意图

2. GCN中的 Graph 指什么?为什么要研究 GCN?

CNN是Computer Vision里的大法宝,效果为什么好呢?原因在上面已经分析过了,可以很有效地提取空间特征。但是有一点需要注意:CNN处理的图像或者视频数据中像素点(pixel)是排列成成很整齐的矩阵(如图2所示,也就是很多论文中所提到的Euclidean Structure)。
在这里插入图片描述
图2 图像矩阵示意图(Euclidean Structure)

与之相对应,科学研究中还有很多Non Euclidean Structure的数据,如图3所示。社交网络、信息网络中有很多类似的结构。
在这里插入图片描述
图3 社交网络拓扑示意图

实际上,这样的网络结构(Non Euclidean Structure)就是图论中抽象意义上的拓扑图。
所以,Graph Convolutional Network中的Graph是指数学(图论)中的用顶点和边建立相应关系的拓扑图。

那么为什么要研究GCN?原因有三:

  • CNN无法处理Non Euclidean Structure的数据,学术上的表达是传统的离散卷积(如问题1中所述)在Non Euclidean Structure的数据上无法保持平移不变性。通俗理解就是在拓扑图中每个顶点的相邻顶点数目都可能不同,那么当然无法用一个同样尺寸的卷积核来进行卷积运算。
  • 由于CNN无法处理Non Euclidean Structure的数据,又希望在这样的数据结构(拓扑图)上有效地提取空间特征来进行机器学习,所以GCN成为了研究的重点。
  • 读到这里大家可能会想,自己的研究问题中没有拓扑结构的网络,那是不是根本就不会用到GCN呢?其实不然,广义上来讲任何数据在赋范空间内都可以建立拓扑关联,谱聚类就是应用了这样的思想(谱聚类(spectral clustering)原理总结)。所以说拓扑连接是一种广义的数据结构,GCN有很大的应用空间。

综上所述,GCN是要为除CV、NLP之外的任务提供一种处理、研究的模型。

3. 提取拓扑空间特征的两种方式

GCN的本质目的就是用来提取拓扑图的空间特征,那么实现这个目标只有graph convolution这一种途径吗?当然不是,在vertex domain(spatial domain)和spectral domain实现目标是两种最主流的方式。

(1) vertex domain :也叫做spatial domain,是非常直观的一种方式。顾名思义:提取拓扑图上的空间特征,那么就把每个顶点相邻的neighbors找出来。这里面蕴含的科学问题有二:

  • 按照什么条件去找中心vertex的neighbors,也就是如何确定receptive field?
  • 确定receptive field,按照什么方式处理包含不同数目neighbors的特征?

根据上述两个问题设计算法,就可以实现目标了。推荐阅读这篇文章Learning Convolutional Neural Networks for Graphs http://proceedings.mlr.press/v48/niepert16.pdf
图4是其中一张图片,可以看出大致的思路。 在这里插入图片描述
图4 vertex domain 提取空间特征示意

这种方法主要的缺点如下:

  • 每个顶点提取出来的neighbors不同,使得计算处理必须针对每个顶点
  • 提取特征的效果可能没有卷积好

当然,对这个思路喜欢的读者可以继续搜索相关文献,学术的魅力在于百家争鸣嘛!

(2) spectral domain :这就是GCN的理论基础了。这种思路就是希望借助图谱的理论来实现拓扑图上的卷积操作。从整个研究的时间进程来看:首先研究GSP(graph signal processing)的学者定义了graph上的Fourier Transformation,进而定义了graph上的convolution,最后与深度学习结合提出了Graph Convolutional Network。

认真读到这里,脑海中应该会浮现出一系列问题:

问题一:什么是Spectral graph theory?
请参考这个:https://en.wikipedia.org/wiki/Spectral_graph_theory
简单的概括就是借助于图的拉普拉斯矩阵的特征值和特征向量来研究图的性质

问题二:GCN为什么要利用Spectral graph theory?
这应该是看论文过程中读不懂的核心问题了,要理解这个问题需要大量的数学定义及推导,没有一定的数学功底难以驾驭(我也才疏学浅,很难回答好这个问题)。所以,先绕过这个问题,来看Spectral graph实现了什么,再进行探究为什么?

4. 更为通俗一些的解释

实际上只是为了做半监督的话,不是做图生成的话,图卷积思路非常简单:我有 N N 个样本有标签, M M 个样本没有标签,这 N + M N+M 的样本之间有各种连接关系,用邻接矩阵描述为 A A 。我需要通过学习 N N 个有标签的样本,推断出 M M 个没标签样本的标签。

和传统标签传播思路不一样的是,图卷积本质不是传播标签,而是在传播特征,图卷积将不知道标签的特征,传染到已知标签的特征节点上,利用已知标签节点的分类器旁敲侧击其属性。具体来说:

给定一个有标签的节点 i i ,设其特征为 f i f_i ,搜索其最近邻的节点, f j     j S i f_j ~~~ j\in S_i ,相邻节点可能有标签,可能没有标签,不过不用理,反正通过它的特征是知道的,我们定义混合特征:

f i = j S ( l i i w i i f i + l i j w i j f j ) f^*_i = \sum_{j\in S}(l_ii w_ii f_i + l_ij w_ij f_j)

其中 w w 为训练参数, l l 为图的拉普拉斯量,其实就是一个衰减因子,相邻节点的无关程度越高,特征融合过程自然要减少考虑其贡献,风牛马不相及嘛~~

然后将做好的混合特征送到分类器当中 train,进行传统的分类任务。train 好以后,inference 的过程就用不知道标签的节点上的混合特征,送分类器,然后预测。当然,我们可以多垒几层,就变成了二度特征传染,三度特征传染。

实际上,我们传统图像的卷积都不是严格数学意义上的卷积。一开始,图卷积确实要满足卷积的数学性质而搞了一堆复杂的谱展开。其实,后期被 max welling 等人简化成一阶展开,用于半监督学习,每层图卷积网络刚好对应为近邻匹配,效果居然比做复杂的谱展开要好。

猜你喜欢

转载自blog.csdn.net/gaopursuit/article/details/87770559