什么是卷积
炫云:卷积与傅里叶变换的关系
卷积的数学定义是
一般称g为作用在f上的filter或kernel
一维的卷积示意图如下
大家常见的CNN二维卷积示意图如下
在图像里面卷积的概念很直接,因为像素点的排列顺序有明确的上下左右的位置关系。
那在抽象的graph里面卷积该怎么做呢
比如这个社交网络抽象出来的graph里面,有的社交vip会关联上万的节点,这些节点没有空间上的位置关系,也就没办法通过上面给出的传统卷积公式进行计算。
傅里叶变换
炫云:傅里叶变换zhuanlan.zhihu.com为了解决graph上卷积计算的问题,我们给出第二个装备--傅里叶变换。
先上结论,根据卷积定理,卷积公式还可以写成
这样我们只需要定义graph上的fourier变换,就可以定义出graph上的convolution变换。
好的,先来看下Fourier变换的定义
Inverse Fourier变换则是
根据Fourier变换及其逆变换的定义,下面我们来证明一下卷积定理
我们定义
带入
最后对等式的两边同时作用
拉普拉斯算子
一阶导数定义为
拉普拉斯算子简单的来说就是二阶导数
那在graph上,我们可以定义一阶导数为
其中
那么对应的Laplacian算子可以定义为
定义
定义
那么图上的Laplacian算子可以写成
标准化之后得到
Graph Fourier变换
定义Laplacian算子的目的是为了找到Fourier变换的基
比如传统Fourier变换的基
那么图上的Fourier基就是
其中
拉普拉斯矩阵的特征向量构成了傅里叶变换的基,在图上做傅里叶变换就是将图上的信号(特征)投影到正交空间中,表示成了拉普拉斯矩阵特征向量的线性组合。
那么Graph Fourier变换可以定义为
其中
那么我们可以用矩阵形式来表示Graph Fourier变换
类似的Inverse Graph Fourier变换定义为
它的矩阵形式表达为
将图上的傅里叶变换推广到图卷积
走到这里,我们已经获得了新手村的所有装备,下面就开始推导GCN的公式。
还记得我们之前提到的先上卷积定理吗
那么图的卷积公式可以表示为
重新整理一下,对于图来说,如果节点的特征为
所以多层layer的图卷积可以表示成如下形式
以上就是谱图卷积的基本形式。
作为图卷积的filter函数
作用一次laplacian矩阵相当于在图上传播了一次邻居节点。进一步我们可以把
改写上面的图卷积公式,我们就可以得到论文SEMI-SUPERVISED CLASSIFICATION WITH GRAPH CONVOLUTIONAL NETWORKS
https://arxiv.org/pdf/1609.02907.pdfarxiv.org的公式(3)
可以看到这个卷积计算的复杂度是非常高的,涉及到求laplacian矩阵的特征向量,和大量的矩阵计算。下面我们考虑对filter函数做近似,目标是省去特征向量的求解
其中
因为
所以上面filter函数可以写成
设定
令
那么再加上激活层,我们就可以得到最终的GCN公式
空域图卷积
一般来说,空域图卷积的本质就是不断聚合节点的邻居信息
最原始的GCN,其实就是
谱图卷积是空域图卷积的特例
既然
如果将
定义
最终,写成矩阵的形式
这就是空域下的图卷积形式!
空域下的图卷积和谱图卷积滤波器的联系
由
所以,图卷积的本质就是设计一系列的滤波器对图上的信号进行聚合!对于谱图卷积,我们可以直接分析得到对应的滤波器形式,而对于复杂的空域图卷积,我们可以使用下式进行反推。
由于不同的数据库有不同的拉普拉斯矩阵,所以其最大特征值