目前流行的是以切比雪夫多项式为核的图卷积公式,所以我们来推导一下如何从图卷积的原理到具体的网络中进行实现。(流程中免不了有错漏之处,请大家辩证地看待)
首先,我们要知道执行这些操作为了达到的目的:非欧空间的数据无法像欧式空间那样直接执行卷积等操作,于是我们考虑将非欧空间的数据投影到一个便于进行类似卷积操作的谱空间,对投影后的数据进行卷积,再将卷积得到的结果还原为原来的空间即可。
其次,我们需要对上面的目的进行理解,将图转换到谱域,有点类似于将时域信号转换到频域。而将时域转换到频域会使用傅里叶变换,使用的基底是三角函数。对应到图中,他的傅里叶变换是拉普拉斯矩阵L特征向量组成的基底。为什么在这里使用拉普拉斯矩阵L呢?因为在图结构中,我们常用拉普拉斯矩阵来对图的性质进行描述。(如果在数学概念上有点不理解,可以先承认这个设定往后看,然后再去补充相关的知识)我们使用U表示拉普拉斯矩阵特征向量也就是基底,那么将图信号X投影到谱域空间的得到的谱域表达表达式就会是:
(1)
同样的,将谱域得到的表达再转回原先的图域,也就是逆变换,就可以被表达为:
(2)
现在我们来定义这里的图卷积,我们取为卷积核,
为输入,那么卷积核对输入进行卷积的表达式可以被写为:
傅里叶逆变换(傅里叶变换(
))(3)
那么对于这里的傅里叶变换(),有一个这样的定理:两个信号的卷积的傅里叶变换是他们的傅里叶变换的点积,为什么不直接计算
呢?还是因为“非欧空间的数据无法像欧式空间那样直接执行卷积”。结合我们刚说的,使用
作为基底,上面的式子可以被表示为:
(4)
这里就是U的逆,(如果在数学概念上有点不理解,可以先承认这个设定往后看,然后再去补充相关的知识)。因为U是拉普拉斯矩阵的特征向量组成的矩阵,也就是说U和拉普拉斯矩阵L之间的关系为:
(5)
所以有:
(6)
也就是说,如果我们对卷积核g使用进行图域到谱域的转换,这里g是一个可以学习的参数,这里的UT是拉普拉斯矩阵的特征向量,那么得到的结果会得到关于拉普拉斯特征向量的多项式。因为g可以看成是常数,就是常数核特征向量的线性组合。而特征向量与特征值
有关,所以我们可以进一步将
写为:
(7)
这里表示参数。
那么现在回到公式(4),对于公式(4)中对输入X进行谱域变换的部分我们可以先不看,留着后面有用。我们是不是可以直接把(7)带回呢?当然可以,但是在实际计算中,根据输入的拉普拉斯矩阵L求其特征值是一项复杂而庞大的工程。那么(7)表示的这个多项式可以怎么进行表示呢?切比雪夫多项式就提供了一个很好的多项式逼近方法。从而公式(7)可以被切比雪夫多项式表示为:
(8)
这里是切比雪夫多项式中一项的表达方式,
是归一化之后的特征值,要进行归一化是为了符合切比雪夫多项式自变量范围的要求[-1,1]。(归一化并不会影响结果,因为我们把这个视为向量的组合,归一化并不改变向量的方向,至于向量大小的缩短完全可以通过参数
来弥补。个人理解,可能不对。)
好了,现在我们得到了简便好算的卷积核的谱域表达式(8),我们将其代回(4),并且接下来(4)中对输入X进行谱域变换的部分也会被用上了。
(9)
第一个等号是将(7)代回(4),第二个等号是(8)。由公式(5)我们可以知道:
(10)
所以我们将(9)写为:
(11)
为了简化计算并将其应用到图卷积网络中,取切比雪夫多项式的K为1,这样上面的式子可以被写为:
(12)
意味着图卷积可以分解为两部分:一部分是节点自身的特征乘以一个权重,另一部分是节点特征的邻域聚合乘以另一个权重
。但是我们一般不使用两个权重,我们希望可以使用一个权重
,因此我们使用归一化的邻接矩阵加上自连接的形式来代替直接处理归一化的图拉普拉斯矩阵
,也即:
(13)
其中,,A表示邻接矩阵,I表示单位阵用来实现自连接。
是对应于
的度矩阵。如果我们将权重
,
重新对(12)进行表达,那么卷积会被表述为:
(14)
应用到图卷积网络中时,我们再对其添加一个激活函数,就可以得到第
层的输出被表示为:
在第1层时,输入X就是H。在GCN网络的搭建中,一般提供特征矩阵X和邻接矩阵A就足够了。
到这里就推导结束了^-^
参考链接:
谱卷积的GNN原理解释(Spectral Network),附代码-CSDN博客
图卷积神经网络系列:4. | 图谱卷积之ChebNet/PyTorch实现 - 知乎 (zhihu.com)
GCN:基于切比雪夫多项式(chebyshev ploynomials)为核的图卷积推导与pytorch实现_切比雪夫图卷积-CSDN博客
傅里叶变换(Fourier Transform)——附详细推导傅里叶变换和傅里叶级数关系和区别 - 知乎 (zhihu.com)
傅里叶变换公式推导 - 知乎 (zhihu.com)