【GNN】图神经网络(空域角度)

1、简介

本文主要从空间方法定义卷积操作讲解GNN

2、内容

一、CNN到GCN

首先我们来看看CNN中的卷积操作实际上进行了哪些操作:

因为图像这种欧式空间的数据形式在定义卷积的时候,卷积核大小确定,那每次卷积确定邻域、定序、参数共享都是自然存在的,但是在图这样的数据结构中,邻域的确定就并不容易。

解决方法如下:

定义一个邻近度度量矩阵,它的功能就是能够计算该节点和其他节点之间的距离。根据邻近度矩阵的计算结果拿出k个邻接点(一阶不够,二阶来凑),并进行排序,这样就得到了数量固定且有序的邻域,可以进行参数共享,这里k是一个超参

二、GraphSAGE

上述方法要求将选取的邻域进行排序,然而排序是一个不容易的事情,因此GraphSAGE提出不排序,而是进行信息的聚合,为CNN到GCN埋下了伏笔。

1、设采样数量为k,若顶点邻居数少于k,则采用有放回的抽样方法,直到采样出k个顶点。若顶点邻居数大于k,则采用无放回的抽样。当然,若不考虑计算效率,完全可以对每个顶点利用其所有的邻居顶点进行信息聚合,这样是信息无损的。

2、先将该节点k-1层的n个邻接点信息聚合,然后再将聚合后的信息和该节点k-1层的信息联合构成该节点在k层的信息。

聚合函数有很多,这里列举两种,平均聚合和池化聚合:

将目标顶点和邻居顶点的第k-1层向量拼接起来,然后对向量的每个维度进行求均值的操作,将得到的结果做一次非线性变换产生目标顶点的第k层表示向量。

先对目标顶点的邻接点表示向量进行一次非线性变换,之后进行一次pooling操作(maxpooling or meanpooling),将得到结果与目标顶点的表示向量拼接,最后再经过一次非线性变换得到目标顶点的第k层表示向量。

三、GCN

GCN的输入有两个一个是图的邻接矩阵A,它的维度是N*N;另一个是特征矩阵X,它的维度是N*D。节点间的连接关系A是在GCN各层之间共享的。

下面的例子是两层的GCN,激活函数分别使用relu和softmax。

W起到的是特征变换的作用,改变特征矩阵X的维度,XW之后相当于得到了新的特征矩阵,里面的特征相当于是原来特征做的线性组合,再和A矩阵乘,A中带有的是不同边的权重值,最终结果再经过一个非线性变换,完成这一层的传播。这个W就和CNN中的W一样,也是经过很多个W的处理,不同层的feature map维度不同。

CNN与GCN的不同:CNN通过卷积核来收邻接信息,要学的参数是卷积核,GCN没有做参数化的卷积,它是通过A收邻接信息,而A是写死的,也就是说GCN做了一个硬编码的卷积。

那么GCN训练学习的参数是什么呢?就是上图中各层中对于节点特征矩阵进行变换的W每一层可以有多个W,就相当于有多个卷积核,每一种W代表一种对节点特征整合的方式。

四、GAT

GCN结合邻近点特征的方式与图的结构相关,这就会使得训练得到的模型在其他图结构上泛化能力不强。因为GCN中的A是一个硬编码的东西,网络建立以后,它的A就确定下来的,GAT解决的就是将这个A进行参数化的工作,它使用注意力机制对邻近节点特征加权求和,邻近节点特征的权重完全取决于节点特征,独立于图结构。

可以看到,节点参数经过特征变换之后拼接到一起,然后与GCN那种使用A进行有边节点信息融合的方式不同,GAT的融合方式是由参数化的a来决定的。

五、MoNet

它认为空间方法是定义多个核函数(kernel function),无论是参数化的还是非参数化的,用来测量中心节点与其他节点之间的相似度。算卷积的时候是不同相似度函数算出来的结果的加权平均

六、谱方法和空间方法的关系

2019年底到2020年初,普遍认为谱方法和空间方法是图卷积神经网络的两类方法,没有关联。但后来被证明,所有的谱方法都是空间方法的一种。

回看谱方法,谱方法是定义一个卷积,在原来的空间里定义不出来,做了一个空间变换去到了一个新空间,在新空间里面运算完之后再经过逆变换回来,完成整个卷积。

空间方法思考的是,不用去那个空间,直接在原来空间定义一个东西,但定义的东西满足不满足卷积的性质不知道,这个参考svm实现非线性分类的过程。

对于算卷积的时候是不同相似度函数算出来的结果的加权平均的理解:

3、参考 

图神经网络(空间方法定义卷积操作)

猜你喜欢

转载自blog.csdn.net/lj2048/article/details/121810201