最近想学习一下图神经网络,发现了这篇关于图卷积的文献,初读的时候发现里面涉及了很多没学过的数学理论,于是又去恶补了一下度矩阵、邻接矩阵、拉普拉斯矩阵、图傅里叶变换、谱图理论到底是什么东西,把能看懂的部分整理如下
1、文章贡献
提出了一种基于图结构的半监督学习方法GCN,解决CNN无法处理不规则数据的问题,通过谱图卷积的局部一阶近似将卷积操作应用到图结构等不规则的数据中进行半监督分类。
2、数学理论
2.1 图
图表示为G=(V,E),其中V为顶点,E为边。图表示为数据之间的关系,根据节点的边是否有方向可分为无向图和有向图。(该篇文献GCN是基于无向图,因为拉普拉斯矩阵在无向图中是对称的,才可以特征分解)
2.2 邻接矩阵
邻接矩阵表示节点之间的关系,其中无向图的邻接矩阵是对称阵。通俗来讲,节点之间有连接关系,邻接矩阵中对应元素就为1,否则为0
2.3 度矩阵
度矩阵是一个对角矩阵,对角线元素为对应节点连接边的数量,即邻接矩阵对应行元素求和
2.4 拉普拉斯矩阵
拉普拉斯矩阵L=度矩阵D-邻接矩阵A
- 普通的拉普拉斯矩阵
- 对称归一化的拉普拉斯矩阵
- 例
2.5 图傅里叶变换
傅里叶变换理论太复杂了,这里就通俗地讲讲图傅里叶变换的理解。
一句话概括图傅里叶变换就是:将空域的信号通过图傅里叶变换到频域中,与卷积核进行相乘后,将结果逆变换回空域中。(相当于在空域中进行了卷积,因为空域不能直接对图结构数据卷积)
3、GCN算法原理
GCN是谱图卷积的一阶局部近似,仅依赖距离中心节点k步距离之内的节点,每个卷积层处理一阶邻域信息,通过堆叠多个卷积层实现处理多阶邻域信息。
- 传播公式
推导
- 谱图卷积: 将拉普拉斯矩阵对称归一化后分解得到的特征向量作为傅里叶变换的基,通过傅里叶变换将输入信号变换到频域,与卷积核相乘后将结果逆变换回空域(其中卷积核是拉普拉斯矩阵的特征值组成的对角阵)——特征分解计算复杂度大
- 改进: 针对上述计算复杂度问题,用切比雪夫多项式进行k阶逼近来改进卷积核,阶数由原来的n降为k,减少计算复杂度
- GCN简化: 在以上基础上进一步将切比雪夫多项式做一阶近似并进一步简化参数得到最终GCN模型
4、实验
- 跟先前其他baseline进行对比
- 将谱图卷积每一步推导过程分别实验比较
- 附录中提到将未经训练的随机初始化的三层GCN应用在一个俱乐部网络中,提取的特征也已相当优秀
- 当对每个类使用一个标签训练后,迭代过程实现了类别分离
- 尝试更深层数并考虑残差连接,发现GCN最好的效果在2、3层,而且超过7层之后如果不使用残差连接会使训练变得困难,层数过多会出现过平滑和过拟合的问题
关于过平滑的问题在这篇2018年的《Deeper Insights into Graph Convolutional Networks for Semi-Supervised Learning》中有给出证明
- 首先定义一个拉普拉斯平滑函数(其中γ位于0到1之间控制自身节点和邻居节点之间的权重)
将函数表示成矩阵的形式
令γ=1 即只考虑邻居节点的特征,并将归一化的拉普拉斯矩阵替换为对称后得
即:图卷积是拉普拉斯平滑的特殊形式
通过一次平滑可以让同类的节点特征变得相似,从而容易分类- 但是层数过深会出现过平滑现象,最后所有特征收敛到同一个值,导致分类困难
5、GCN局限
1、内存需求大,很难应用在大图上
2、基础GCN基于的无向图,无法捕捉节点外的边缘信息
3、邻接矩阵添加自环时假设各节点同等重要,没有考虑不同权重
4、GCN在层数过深时会出现过平滑问题,导致分类困难