论文阅读_GraphSAGE

GraphSAGE

GraphSAGE是2017年提出的一种图神经网络算法,解决了GCN网络的局限性: GCN训练时需要用到整个图的邻接矩阵,依赖于具体的图结构,一般只能用在直推式学习(Transductive Learning)。GraphSAGE使用多层聚合函数,每一层聚合函数会将节点及其邻居的信息聚合在一起得到下一层的特征向量,GraphSAGE采用了节点的邻域信息,不依赖于全局的图结构。

预备知识

图神经网络的任务一般有Transductive(直推式)和Inductive(归纳式)。

Transductive(直推式):传统的图嵌入算法(基于矩阵分解、随机游走的算法)在迭代的过程中需要用到所有节点的信息,学习得到所有节点的向量表示,但是对于新加入的节点需要对所有的节点重新计算,泛化性差。

inductive(归纳式):学习的结果不再是每个节点的嵌入,而是“聚合函数”。根据已知各个节点的特征和邻居关系,得到一个新节点的表示。因此,graphSAGE泛化性好,对新加入的节点,可以根据其邻居聚合直接给出其表示学习,而不必对整个网络重新迭代。

算法流程

论文阅读_GraphSAGE_第1张图片

算法分为三个部分:1)节点采样;2)节点邻居聚合;3)根据聚合信息对节点进行学习

嵌入生成算法

上图中的包括两层聚合,对应的聚合函数为 aggregator1 和 aggregator2。通过 k 层聚合之后,可以得到节点最终的表示向量,GraphSAGE 的伪代码如下:
论文阅读_GraphSAGE_第2张图片

伪代码中的 h0 表示节点 v 的初始特征向量,包含 K 层聚合操作。在第 k 次聚合生成 v 节点特征向量时,会采用聚合函数把 v 节点的邻居信息融合在一起。

采样算法

这一操作也可改成minibatch的,给定一个输入节点的集合,采样它们的邻居节点(一阶邻居),对于一阶邻居,采样他们的邻居(二阶邻居),直到K阶邻居采样完成。伪代码如下:
论文阅读_GraphSAGE_第3张图片
随着层数的增加,采样的邻居数量会呈指数增加,一般定义S-k表示每一层固定的邻居采样数量。当某一节点的邻居小于S-k时,采用重复采样。作者发现,取K=2,S-1*S-2<=500,就可以得到很好的性能表现。

聚合函数

GraphSAGE 提供了四种聚合节点的函数:

Mean aggregator: 对节点 v 进行聚合时,对节点 v 和邻域的特征向量求均值。
在这里插入图片描述
GCN aggregator: 采用了类似 GCN 卷积的方式进行聚合,公式和 Mean aggregator 类似:
在这里插入图片描述
LSTM aggregator: 作者任务 LSTM 有比较好的抽取特征能力,因此也使用了 LSTM 进行聚合,但是因为节点之间没有明显的顺序关系,因此会打乱之后放入 LSTM。

Pooling aggregator: 先把所有邻居节点的特征向量传入一个全连接层,然后使用 max-pooling 聚合。
在这里插入图片描述

你可能感兴趣的:(算法,人工智能,机器学习,神经网络)