如何理解图卷积神经网络GCN(Graph convolutional networks)[说人话版]

学习图卷积网络思路指南(GCN谱域版)

前言

csdn、知乎等平台上已经有不少的关于GCN的解读,本文尝试脱离数学推导部分,而梳理一下GCN的正向学习思路,此处推荐优秀博文,以及知乎问答高质量回答。废话不多说,我们开始吧!

一、欧式数据与非欧数据

Eucliden domains data (欧式数据)和non-Eucliden domain data(非欧数据),在现实生活中都有着大量的应用。

  • 欧式数据:常见的数据形式有图像、语音、视频等。具有平移不变性,这体现在:元素有着固定的邻居个数和元素有一定的顺序(如图像中像素点位置)。数学表达以一维、二维或者高维矩阵进行表达。
  • 非欧数据:常见数据形式有社交网络、推荐系统、脑网络等。不具有平移不变性,体现在每个元素的邻居个数并不一定相同,元素排列无顺序。数学表达常见的有Graph,和流形。
    欧式数据
    图1. 欧式数据示意。可以看到在欧式数据中任一一个点(边上的点也可以通过padding实现周边邻域,勿抬杠)都可以找到周边k点与其相连(所谓邻域),可以使用矩阵进行数学表示。
    空间位置编码
    图2. 空间位置意义。 左右两幅画面中的元素像素信息并没有损失,但是经过shuffle后图像丧失了空间位置信息,因此我们就无法看到图中信息(老鹰/秃鹫)。
    非欧数据
    图3. 非欧数据示意。 可以看到图中的各色小球,其之间的相互关系是复杂的,有些小球和其他小球有较多连接,而有些小球仅仅只有一个连接。另外可以看到节点之间有一定的位置关系,以不同顺序读取Graph,获得信息将不同。

在欧式数据中,我们常常使用Convolutional neural networks(CNNs)进行处理。CNNs的工作原理,就是利用一定尺寸(感受野)的权重,同原始数据进行加权求和,即卷积。CNN训练目的是,通过BP算法反复优化加权求和中的“权值”,即卷积核。
对非欧数据中的卷积和CNN思路相同。也是通过卷积获得信息,因此也需要提出可优化的卷积核。
至此,我们看到了非欧数据的关键:设计出可以优化的卷积核!

二、从CNN到GCN

非欧数据(以Graph为例),想进行卷积,但是却没有平移不变性,如何解决?
研究人员提出了两种思路:

  • spatial domain(空间域):着力解决元素邻域数量不同问题,经过一系列变换(同时固定了元素顺序),使其适应尺寸不变的卷积核。代表方法有GraphSage,Diffusion convolution neural networks(DCNN)等
  • spectral domain(频谱域):对非欧数据进行傅里叶变换,同时将卷积操作也变换到谱域中,二者在谱域中开心的计算。

由此也可以注意到,谱域法关键在两个地方.一是如何对非欧数据进行变换,得到其谱域中的表示,二是如何将卷积变换到谱域中去。

三、非欧数据的数学表达

用什么数据结构来表达非欧数据,研究人员给出的答案是使用Graph(没错就是GCN中的那个G).

Graph由三个元素组成:

  • node/vertex(节点/顶点): 一个节点常代表一个实体,如社交网络中的一个人,如脑网络中的一个脑区。
  • edge(边):边用来描述节点之间的关系,如论文之间的相互引用,脑区之间的神经活动关联强度。
  • feature of node/signal of node(节点信号或特征):即节点的特征,对节点实体的描述,常见为一维向量
    图的组成
    图4. 右侧由上到下分别为:node,edge,signal of node

有了Graph这种数据结构,研究人员使用adjacency matrix(邻接矩阵)来描述他们的连接,使用degree matrix(度矩阵)来描述节点的连通性。如图5所示:
描述Graph
图5. 度矩阵,邻接矩阵,拉普拉斯矩阵示意。

通过度矩阵和邻接矩阵,研究人员又引入了Laplacian matrix(拉普拉斯矩阵,L)来描述graph,其定义如下:
L定义
其中D为度矩阵,A为邻接矩阵。
研究人员发现拉普拉斯矩阵L有着良好的数学性质------是半正定阵。这意味着拉普拉斯矩阵可以进行特征分解,且分解成n个对应不同特征值的特征向量,最最最重要的是,这些特征向量,是相互正交!!!换句话说,就是这些特征向量可以作为基来表达拉普拉斯矩阵,这些基可以表示Graph.
而最最最巧合的事情是,傅里叶变换,就是以拉普拉斯矩阵的一组基进行变换的!这就是说,graph可以傅里叶变换!
(ps:当然上述并不合适巧合,具体我也讲不清楚,原谅数学渣的我)

四、傅里叶变换和Graph的傅里叶变换

上回说到,傅里叶变换,那么《复变函数》《数字信号处理》都没有好好学的你,可能已经忘记傅里叶变换是什么了!那么首先我们通过下图来重温 (了解)一下傅里叶级数:
傅里叶变换
图6. 傅里叶级数示意 动图可以看到红色为原信号,其可以被分解成一系列蓝色信号之和(蓝色信号频率不同,但是他们都是正弦函数),这就是傅里叶级数。
重温了傅里叶级数后,让我们一同读一下这句话:任意一个周期函数可以由若干个正交函数(由sin,cos 构成)的线性组合构成,有没有看到正交函数四个大字,还记得拉普拉斯矩阵分解后的特征向量之间的关系吗?就是正交!因此,除了sin,cos这组正交函数,拉普拉斯矩阵的特征向量可以做为一组基,因此拉普拉斯矩阵可以进行傅里叶变换!(说第二遍了!┗|`O′|┛ 嗷~~)

以cos和sin作为基,可以表示任意周期函数,但傅里叶变换是连续的。我们则需要离散化的傅里叶变换来处理Graph,我们将拉普拉斯矩阵的特征向量作为基,这样就可以在傅氏空间表示Graph上的任意信息。其形式如下:
公式1
由于离散数据,卷积转化成求积后求和,其中f(i)为节点信号其维度为D,节点个数为N,ul(i)特征向量,也是傅里叶变换的基。将上式推广到矩阵形式如下:
公式2
则f经过Graph傅里叶变换后得到:
公式3
而Graph反变换的矩阵形式为:
公式4
即可得到傅里叶反变换公式:
公式5
至此,我们得到了graph的数学工具拉普拉斯矩阵在傅氏空间上的表达,GCN实现了一半。

五、将卷积引入傅氏空间

在CNN中,我们看到卷积就是加权求和的过程,而实际上的卷积定义,有着更为复杂的含义:函数f和函数g的卷积,是将函数f进行翻转平移后,与函数g进行相乘得到新函数h,后对函数h进行积分。在信号处理领域中,函数f常常为signal(信号,如心电信号),图像(如MNIST中灰度图),而函数g常被设计成kernel(核),filter(滤波器)。因此卷积过程就是,我们通过设计好的滤波器/核来对原信号进行处理。
卷积有一个很重要的数学性质,即卷积定理:函数卷积的傅里叶变换等于函数傅里叶变换的乘积。 其数学表达如下:
卷积1
将图上信号f和卷积核g带入其中,使用Graph傅里叶变换及反变换我们可以得到下式:
卷积2
因此得到的卷积公式为:
卷积3
有些文章将卷积核也写成矩阵形式,即为对角阵形式:
卷积4
至此,我们完成了卷积在傅氏空间上的实现,并看到了可以优化的卷积核参数g。

六、各路大神对卷积核的改进

可优化的卷积核终于推导出来,各路大神为了减少计算量而进行了一系列操作!

  • 首先出场的是Bruna,Joan等人,他们的文章是“Spectral networks and locally connected networks on graphs.”ICLR2014,文章将卷积核直接暴力处理如下形式:
    卷积核1
    其对角线元素为可优化参数。该模型需要进行特征分解,所以需要大量的计算,因此并不算很实用。原文链接

  • 很快Defferrard和他的小伙伴们提出使用chebyshev多项式来近似卷积核,可以大大减少因特征分解而带来的计算量激增。原文名称:“Convolutional neural networks on graphs with fast localized spectral filtering.”NIPS2016,原文链接

  • 而大佬Kipf和Max Welling,在Defferrard的肩膀上指出一系列近似,将参数量再次降低。文章:“Semi-supervised classification with graph convolutional networks.” 原文链接

至此,基础的GCN模型被提出,上述三个模型、代码均有大量帖子进行分析,本文不再赘述。

七、总结

  • GCN诞生后,在非欧数据中得到了很大的应用,同时也不断延伸到传统欧式数据的范围内。目前在无向图的这个前提下,GCN依旧面临着不少的困难,最为常见的为GCN易造成过平滑现象,导致构建的GCN网络都比较浅,限制了其进一步通过层级结构提取特征的可能。因此加深GCN也称为研究热点。

  • 另外在欧式数据中的使用graph,是GCN在CV等方向扩展的必由之路,如何定义更有效的node,定义更有效的edge,提取更有效的node features,都没有一个明确的指导规范。这限制了GCN向传统欧式数据中的扩展。

致谢
本文主要参考了博主yyl424525的帖子,该帖子十分优秀,其链接点击
另外参考了知乎相关问题高赞答案,知乎还是能人辈出,其链接点击
其余参考为论文原文,主要文章已在文中附上连接。
另有广告,关于GCN深度探索的一篇文章DeepGCN,链接点击

最后祝各位努力搬砖,早发论文,早早毕业┗|`O′|┛ 嗷~~呜!!

  • 16
    点赞
  • 57
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值