目录
0 前言
1 基于空间域的GCN[2]
2 基于谱域的GCN
2.1拉普拉斯矩阵
2.2为什么GCN要用拉普拉斯矩阵?
2.3 拉普拉斯矩阵的谱分解(特征分解)
2.4卷积的定义
2.5傅里叶变换
2.5Graph上的傅里叶变换及卷积
3 深度学习中GCN的演变
3.1Spectral CNN
3.2Chebyshev谱CNN(ChebNet)
3.3CayleyNet
3.4一阶ChebNet(1stChebNet)-GCN
4 GCN优缺点
4.1GCN的优点
4.2GCN的不足#
通常,将GCN分为基于空间域spatial-based和基于谱域spectral-based. "所谓的两类其实就是从两个不同的角度理解"[4],这也是我对两类的理解,因为从公式上看并没有较大区别,只是细节和适用场景不同,比如,图是否有向等。
基于空间域的GCN关键在有aggregate的概念,将中心节点表示和相邻节点表示进行聚合(消息传递机制),具体实现是用neighbor feature更新下一层的hidden state。代表模型有:NN4G(neural network for graph)、DCNN(Diffusion-Convolution Neural Network)、DGC(Duffusion Graph Convolution)、MoNET(Mixture Model Networks)、GraphSAGE(SAmple and aggreGatE)、GAT(Graph Attention Network)和GIN(Graph Isomorphism Network).其中aggregation的方式包括sum、mean、weight sum、LSTM和max pooling等。
基于谱域的GCN是基于Spectral Graph Theory(借助于图的拉普拉斯矩阵的特征值和特征向量来研究图的性质),从图信号处理的角度引入滤波器来定义图卷积。关键把signal转到fourier domain里面,再把转到fourier domain里的信号跟转到fourier domain的filter response相乘,再做inverse fourier transform,得到经过filter的信号。代表性研究有ChebNet(fast GCN加快计算)和GCN。
傅里叶相关概念:
以图的节点特征X和拓扑结构信息(邻接矩阵A表示)作为输入,聚合节点邻居的特征。
最简单的聚合过程:AX
但该过程有两个问题:
1)节点自身的特征没有算进去;
2)聚合邻居节点特征的时候直接以sum的方式聚合,这样在多次迭代聚合以后,度小的节点数值会越来越小,(当然也可能会越来越大,这取决于具体特征值的正负)。总之,就是容易走极端,即梯度爆炸或消失。
以上两个问题的解决办法:
1)在邻接矩阵A上加单位矩阵I,即;
2)用取加权平均的方式聚合邻居节点特征,即;但度矩阵D的逆左乘邻接矩阵只是给邻接矩阵A的行分配权值,而A的列也需要权值分配,因此还需要对A进行右乘D的逆;因此最终GCN聚合公式为
具体详见参考[2]
涉及一堆数学公式的推导和概念、定理和性质,到目前都不是很理解(我太菜了).看[4]吧,作者讲的挺全挺透彻的。
fourier domain上的卷积(卷积定理):求两个函数的卷积,就是分别求两个函数的傅里叶变换,再做一次逆傅里叶变换得到。
对图上f和卷积核g的卷积可以表示为:
有了目标,接下来就是走向目标的路了,那这个路的起点就是先获取拉普拉斯矩阵的特征向量!
1)连续卷积
连续一维卷积是通过两个函数f(x)和g(x)生成第三个函数的一种算子,它代表的意义是:两个函数中的一个(取g(x),可以任意取)函数,把g(x)经过翻(卷)转平移,然后与f(x)的相乘(积),得到的一个新的函数,对这个函数积分,也就是对这个新的函数求它所围成的曲边梯形的面积。
设f(t),g(t)是两个可积函数,f(t)与g(t)的卷积记为f(t)∗g(t)f(t)∗g(t),它是其中一个函数翻转并平移后与另一个函数乘积的积分,是一个自变量是平移量的函数。也就是:
2)离散卷积
看下面这个例子对卷积解释,绝了!
把传统的傅里叶变换以及卷积迁移到Graph上来,核心工作其实就是把拉普拉斯算子的特征函数 变为Graph对应的拉普拉斯矩阵的特征向量。
傅立叶变换与拉普拉斯矩阵的关系:传统傅立叶变换的基,就是拉普拉斯矩阵的一组特征向量。
前面讲到可以用一组正交函数cos和sin(或 )表示任意函数,且傅里叶变换是连续形式的,在处理Graph时,用到的是傅里叶变换的离散形式。由于拉普拉斯矩阵进行谱分解以后,可以得到n个线性无关的特征向量,构成空间中的一组正交基,因此归一化拉普拉斯矩阵算子的特征向量构成了图傅里叶变换的基。图傅里叶变换将输入图的信号投影到了正交空间,相当于把图上定义的任意向量,表示成了拉普拉斯矩阵特征向量的线性组合。
图的傅立叶变换——图的傅立叶变换的矩阵形式
图上的傅里叶变换推广到图卷积
对于“为什么拉普拉斯矩阵的特征向量可以作为傅里叶变换的基?特征值表示频率?”这一问题,文章给出了详细的解释!
谱CNN源于论文(J. Bruna, W. Zaremba, A. Szlam, and Y. LeCun, “Spectral networks and locally connected networks on graphs,” in Proceedings of International Conference on Learning Representations, 2014),Bruna等人,第一次提出谱卷积神经网络。他们简单
Chebyshev谱CNN源于论文(M. Defferrard, X. Bresson, and P. Vandergheynst, “Convolutional neural networks on graphs with fast localized spectral filtering,”in Advances in Neural Information Processing Systems, 2016)。Defferrard等人提出ChebNet,定义特征向量对角矩阵的切比雪夫多项式为滤波器,也就是
一阶ChebNet源于论文(T. N. Kipf and M.Welling, “Semi-supervised classification with graph convolutional networks,” in Proceedings of the International Conference on Learning Representations, 2017)。这篇论文基于前面的工作,正式成为GCN的开山之作,后面很多变种都是基于这篇文章的。
该篇论文贡献有两点:
其实读到这里也就发现,这个GCN和上一章空间域的那个GCN公式是一模一样的。因此,也就呼应了我开篇说的GCN分为基于空间域和基于谱域两种方式,是从理解层面上可分为两种,所依托的理论依据不同。正是理论不同,其两者的发展和之后的研究方向也会不同。
1)、权值共享,参数共享,从AXWAXW可以看出每一个节点的参数矩阵都是W,权值共享;
2)、具有局部性Local Connectivity,也就是局部连接的,因为每次聚合的只是一阶邻居;
上述两个特征也是CNN中进行参数减少的核心思想
3)、感受野正比于卷积层层数,第一层的节点只包含与直接相邻节点有关的信息,第二层以后,每个节点还包含相邻节点的相邻节点的信息,这样的话,参与运算的信息就会变多。层数越多,感受野越大,参与运算的信息量越充分。也就是说随着卷积层的增加,从远处邻居的信息也会逐渐聚集过来。
4)、复杂度大大降低,不用再计算拉普拉斯矩阵,特征分解
1)、扩展性差:由于训练时需要需要知道关于训练节点、测试节点在内的所有节点的邻接矩阵AA,因此是transductive的,不能处理大图,然而工程实践中几乎面临的都是大图问题,因此在扩展性问题上局限很大,为了解决transductive的的问题,GraphSAGE:Inductive Representation Learning on Large Graphs 被提出;
2)、局限于浅层:GCN论文中表明,目前GCN只局限于浅层,实验中使用2层GCN效果最好,为了加深,需要使用残差连接等trick,但是即使使用了这些trick,也只能勉强保存性能不下降,并没有提高,Deeper Insights into Graph Convolutional Networks for Semi-Supervised Learning一文也针对When GCNs Fail ?这个问题进行了分析。虽然有一篇论文:DeepGCNs-Can GCNs Go as Deep as CNNs?就是解决GCN局限于浅层的这个问题的,但个人觉得并没有解决实质性的问题,这方面还有值得研究的空间。
3)、不能处理有图:理由很简单,推导过程中用到拉普拉斯矩阵的特征分解需要满足拉普拉斯矩阵是对称矩阵的条件;
如有误,请留言指正,感谢(抱拳)。
参考:
[1] 台大李宏毅《机器学习》课程中关于GNN的章节
[2]GCN图卷积网络入门详解 | 雷峰网
[3]一文读懂图卷积GCN - 知乎
[4]最全面的图卷积网络GCN的理解和详细推导,都在这里了! - 不务正业的土豆 - 博客园(这篇文章非常详细,推荐!)