图神经网络
在介绍图神经网络之前,简单的介绍一下图(Graph)。在节点没有特征的情况下,常设置节点特征维全1向量,或者指示向量。
下面给出一个十分Naive的使用图数据训练深度神经网络的方案:将邻接矩阵和节点特征进行拼接组成一个新的数据,然后将其用以训练神经网络(非图神经网络,如常见的MLP,CNN等),这种方法缺点主要有三个:难以训练;扩展性差;对节点顺序敏感。
图卷积网络GCN
一个更聪明的做法是:将CNN卷积神经网络扩展成图卷积神经网络GCN。
该方案存在很多挑战,其中一个就是:CNN是基于规整的欧式数据(如图片,文字,音频)且有明确的空间位置关系;而图(Graph)是不规整的非欧式数据且permutation invariant。
对比一下GCN和CNN的异同,然后根据CNN的卷积操作提出GCN的图卷积操作。
以两层图卷积网络为例说明节点A聚合(Aggregate)过程,右边子图就是计算图
(computation graph,用于说明message传递方向)
大部分节点的计算图都不相同,但也存在部分节点的节点的计算图相似或相同的情况,如下图中节点E和节点F的计算图就很相似,这会引发其他的问题(详情见ID-GNN)。
k层GCN中每个节点可以聚合k介邻居节点的信息,一般在GCN中k设置为2,因为多了会存在过度平滑等问题。
不同的GCN只是在聚合操作等方面存在本质差异
那么GCN的聚合操作有哪些呢?一个最简单的方法是对从邻居节点中获取到的信息求个平均值(或者求和),然后更新为节点的新特征。注意:所有的聚合操作必须都是对邻居节点顺序不敏感的,如节点A的邻居节点有D和B与节点A的邻居节点有B和D是等价的。
下面给出平均聚合的数学表达,需要注意的是:节点本身也是节点的邻居(广义上的邻居),
h
v
l
+
1
h_v^{l+1}
hvl+1其中
v
v
v代表节点id、
l
+
1
l+1
l+1代表迭代次数。
得出了模型表达式之后就是训练模型,训练过程和普通神经网络一样。
从模型表达式中可以发现,可训练的参数只有两个,分别是W
与B
,注:这两个参数所有节点共享。
有上述公式可推出改公式的矩阵表达式:
而在无监督场景下,只有以下不同:
接下来总结一下GCN:
在设计图神经网络时,我们需要考虑模型的Inductive能力。
GraphSAGE
GraphSAGE和GCN最大不同是学习一个聚合器。