Graph Sample and Aggregate Network(GraphSAGE)
相比GCN,GraphSAGE可以处理Inductive类型的任务。Inductive任务的关键在于设计能够良好泛化到未见过的图或节点上的模型。其挑战在于模型需要能够处理图的结构和特征在训练集和测试集之间可能有显著差异的情况。因此,适用于Inductive任务的GNN模型在设计时,应该侧重于学习能够代表单个节点的通用表示,而不是依赖于整个图的结构。这意味着模型应该能够从节点的局部邻域信息中学习其表示,而不是从整个图的全局结构中学习,GCN利用整个邻接矩阵这一做法就违反了这一点。GraphSAGE对此则进行了改进,更新节点信息的方式就不依赖于图的全局结构。具体来说,其更新过程主要分三步: (1)聚合邻居节点的信息,聚合函数有三种,将在下文展开解释; (2)将聚合后的信息与自身的节点信息进行拼接,进行特征的融合; (3)送入神经网络模型中进行映射,得到更新后的节点信息。 例如:图数据如图1所示,现在使用GraphSAGE对节点1进行更新。 节点1特征向量的更新步骤如下三步: (1)聚合邻居节点:\(h_{\mathcal{N}(1)}^1\leftarrow\mathrm{AGGREGATE}(h_3^0,h_4^0,h_5^0,h_6^0)\) (2)拼接自身信息:\(h_1^1\leftarrow\mathrm{CONCAT}(h_1^0,h_{\mathcal N(1)}^0)\) (3)经过神经网络映射:\(h_1^1\leftarrow\sigma(W^1\cdot\mathrm{CONCAT}(h_1^0,h_{N(1)}^0))\) 假设步骤1中聚合函数AGGREGATE是Mean函数,则代数得: \(h_{N(1)}^1\leftarrow\mathrm{AGGREGATE}(h_3^0,h_4^0,h_5^0,h_6^0)=\mathrm{Mean}([0.3,0.4],[0.2,0.2],[0.7,0.8],[0.5,0.6])\) 另外,在这个计算流程中有两个地方需要额外注意。第一,GraphSAGE在聚合某节点邻居信息的时候,并不是聚合全部的邻居,而是聚合K个邻居,K是一个超参数。举例,在图1中,若K等于3,则在聚合节点1的周围邻居时,随机从节点3、4、5、6中选择3个进行聚合。若K等于5,则除了选择节点1的周围4个邻居以外,再重复从这4个邻居中抽样一个节点。这样做的好处是,当图数据非常庞大时,选取某节点的全部邻居做聚合是非常耗时耗力的,若只选择其中的K个邻居,可以更快的进行计算。超参数K本质上是计算精度和计算速度之间的一种权衡。 第二个需要注意的是GraphSAGE定义了三种不同的聚合函数: \(\begin{aligned}&(1) \mathrm{Mean:}\quad AGG=\sum_{u\in N(\nu)}\frac{h_{u}^{(l)}}{\mid N(\nu)\mid} \leftarrow\\&(2) […]
Graph Sample and Aggregate Network(GraphSAGE) Read More »