原文链接:https://arxiv.org/abs/1609.02907
代码链接: https://github.com/tkipf/gcn.
出处: ICLR
关键词:semi-supervised, graph convolutional networks
一、motivation
通过在图上做卷积学习节点特征,做分类任务。
二、核心思想
1. 图卷积
首先,我们先明确所谓的卷积是什么意思,是计算中心节点和邻居节点的加权求和,本质上就是在汇聚邻居信息。在如图像这种的结构化数据中,卷积核具有平移不变性,而在图这种非结构化数据,CNN卷积核的平移不变形不再适用,我们需要在图拓扑中寻找邻居,然后定义图上的“卷积”操作来汇聚邻居节点的信息
传统的卷积有两种,一种是CNN那种,直接在数据空域中进行计算;还有一种是将数据通过傅里叶变换变到频域中进行计算。在图上,如果使用空域卷积,由于每个节点的邻居都不同,那么没有办法使用共享卷积核进行卷积操作;如果使用频域卷积,就需要先把图上的数据变换到频域,再计算。
作者选择了第二种,在图上使用频域卷积。
传统的频域卷积是这样的:函数和二者的卷积是其函数傅里叶变换乘积的逆变换,即:
其中,和是傅里叶变换后的值,是傅里叶变换的基函数。
那么仿照传统频域卷积,图卷积可以定义为:,也是把和分别进行图傅里叶变换到频域相乘再逆变换回来。
对比可以发现,作者把图上的傅里叶变换定义为:,,其中,是图拉普拉斯矩阵的特征向量矩阵。所以,定义图卷积的关键在于定义图傅里叶变换,作者是怎么得到图上傅里叶变换公式的呢?
2. 图傅里叶变换
传统傅里叶变换:,
其中,是空域表示,是频域表示,是基函数。
作者发现以为基的拉普拉斯算子是:
对照,可以发现,傅里叶变换中的基其实对照过来是矩阵的特征向量,那么将矩阵替换成图拉普拉斯矩阵,就是:
,那么这个应该也可以做为图傅里叶变换的基。
于是,作者定义图拉普拉斯矩阵的特征向量可以做图傅里叶变换的基,得到:
,是第个点的信号,是特征值。
3. 图卷积核
前面定义图卷积的计算是,把表示成对角矩阵形式,则有
表示成函数形式为,输入是,输出是,是要学习的卷积核。
作者使用切比雪夫多项式近似做卷积核:,其中,,则图卷积表示成:
,化简完就不用计算拉普拉斯矩阵的特征向量了。
这里的表示考虑到几阶邻居。
当时,;
当时,;
当时,.
其中,,是单位矩阵。
将拉普拉斯矩阵变换成是因为中,的取值范围是[-1,1],而的范围是[0,1],需要变换到[-1,1]的范围。
在GCN文章中,作者只考虑了一阶邻居,即的情况,且,则,那么:
因为之间没有约束,那么参数计算量会上升,所以作者把两个参数合并:
其中,.
又因为这个矩阵的特征值,在神经网络的训练中会导致梯度消失或爆炸,所以:
其中,,.
所以,最后输入信号,
其中,,
作者使用了两层GCN,表达式为:
其中,
三、直观理解GCN计算公式
是节点在第层的隐含表示,左边部分是图的拉普拉斯矩阵,是考虑了自连接的邻接矩阵,是由计算得到的度矩阵,右边表示层神经网络要学习的参数。
直观理解这个公式就是先汇聚自身及邻居节点的信息,然后放入神经网络中学习。
我觉得最重要的就是这些了,剩下的是一些实验相关的内容,不难理解。另外就是作者使用的是半监督学习,只用很少的标签。
四、小结
1. GCN的突出贡献是将空域和频域的卷积操作联系起来,使得图卷积有了理论支撑;
2. 相比早期的图神经网络如node2vec只使用了拓扑结构,GCN使用了图的拓扑结构和节点特征;
3. GCN只考虑了一阶邻居,线性计算比较高效;
4. GCN虽然是学习节点embedding并分类,但它启发了后来很多研究,包括异构图,边分类等等。