图神经网络(二)图卷积神经网络

前言

前面介绍了基本的图神经网络和门控图神经网络,其中门控图神经网络将RNN,LSTM,GRU等处理序列的模型引入到了图神经网络当中,那么我们能否把CNN的卷积思想也引入到图神经网络当中呢,答案自然是可以的。使用卷积思想的图神经网络又称为图卷积神经网络(GCN),主要可以分为基于空域的图卷积神经网络和基于频域的图卷积神经网络。

图卷积神经网络

基于空域

对比CNN处理图像像素时的卷积操作,我们发现是取相邻节点的状态的加权求和得到当前节点的状态,所以我们可以模仿这种方法,得到基于空域的卷积操作。基于空域的图卷积神经网络主要有消息传递网络范式,公式如下:

其中$U_{l+1}$是网络第$l+1$层的前馈函数,每一层参数都是不同的;$agg$是聚合函数,在每一层可以是相同的也可以是不同的;$h_u^l$表示节点$u$在网络第$l$层的输出状态;$x_u$是节点$u$的特征表征向量;$x_{u,v}$是节点$u$和邻居节点$v$连接的特征表征向量;$\{\cdot\}$是指邻居节点集合。

在求解上面的式子时,每次都需要对图中每个节点计算,当图非常大时,每次迭代都需要耗费大量的计算资源与时间。GraphSage使用了一个技巧,每次迭代先从图中采样一个子图,然后只计算子图的目标函数结果进行参数学习。

图卷积神经网络通过模拟卷积神经网络利用邻居信息的特性,实现图上的卷积操作,在关键的一点是通过聚合函数将数量不同的邻居可以聚合成相同的形式。除了利用聚合函数以外,图结构序列化(PATCHY-SAN)还提出了利用一定的规则对节点进行排序,比如节点度数等等,这样就可以将节点及其邻居节点排好序,对于每个节点及其邻居使用一阶卷积操作对排好序的节点序列进行特征抽取,从而聚合状态。在使用一阶卷积操作时,需要固定序列长度,长度超过则阶段,长度不足则补齐。

基于频域

我们在求一个函数的傅里叶变换时有下面的式子:

其中$e^{2\pi jw}$是频域上的基,可以把$e^{2\pi jwx}$看作是基函数,$f(x)$可以由基函数组成,所以有反变换:

上面是争对连续函数的情况,离散函数也有相同的情况,只是把积分符号换成求和符号,基底函数变成$e^{j\frac{2\pi}{w}x}$。
我们知道在函数上求傅里叶变换,得到的基函数是$e^{2\pi jwx}$,同时知道在函数上的拉普拉斯算子是求函数的二阶导,将拉普拉斯算子作用到基函数时有:

可以看到基函数是拉普拉斯算子的特征函数。在函数域上,我们在求任意两个函数的卷积时,可以先将两个函数转化成拉普拉斯算子的特征函数的组合形式,然后对各个组成成分作内积,再组合成一个函数,得到卷积后的函数。在图上,我们可以将拉普拉斯算子看作是拉普拉斯矩阵,那么基函数就是拉普拉斯矩阵的特征函数了。至于为什么在图上的拉普拉斯算子是拉普拉斯矩阵,这个笔者还没有详细研究,这里姑且将其看作一个可以使用的结论。基于频谱的卷积方法关键在于得到基函数的组合系数,然后通过对系数进行变换,变换后的系数就是卷积后的结果在频谱上的系数,所以基于频谱的方法有以下式子:

其中$L$是拉普拉斯矩阵;$U$是拉普拉斯矩阵的特征列向量组成的矩阵,$U$和$U^T$是互相之间的逆;$U^Th_u^l$表示将向量$h_u^l$转换成以$U$的列向量为基底的组合系数;$W_l$是第$l$层对组合系数进行线性变换,$W_l$一般是一个对角矩阵;左乘$U$是为了从基底的组合系数还原回向量形式;$\sigma$函数是一个非线性激活函数,用于为函数拟合提供非线性。所以图卷积神经网络的一个前馈计算公式是:

以上就是图卷积神经网络的一个前馈计算过程,反向传播过程需要结合目标函数得到。