论文阅读GraphSAGE《Inductive Representation Learning on Large Graphs》

目录

研究背景

算法模型

采样邻居顶点

生成向量的伪代码

聚合函数的选取

参数的学习

实验结果

GraphSAGE的核心:

改进方向:

其他补充学习知识

归纳式与直推式

为什么GCN是transductive,为啥要把所有节点放在一起训练?


研究背景

GCN是一种在图中结合拓扑结构和顶点属性信息学习顶点的embedding表示的方法。然而GCN要求在一个确定的图中去学习顶点的embedding,无法直接泛化到在训练过程没有出现过的顶点,即属于一种直推式(transductive)的学习。

GraphSAGE则是一种能够利用顶点的属性信息高效产生未知顶点embedding的一种归纳式(inductive)学习的框架。其核心思想是通过学习一个对邻居顶点进行聚合表示的函数来产生目标顶点的embedding向量。

算法模型

 GraphSAGE 是Graph Sample and aggregatE的缩写,其运行流程如上图所示,可以分为三个步骤

1. 对图中每个顶点邻居顶点进行采样

2. 根据聚合函数聚合邻居顶点蕴含的信息

3. 得到图中各顶点的向量表示供下游任务使用

采样邻居顶点

出于对计算效率的考虑,对每个顶点采样一定数量的邻居顶点作为待聚合信息的顶点。设采样数量为k,若顶点邻居数少于k,则采用有放回的抽样方法,直到采样出k个顶点。若顶点邻居数大于k,则采用无放回的抽样。

当然,若不考虑计算效率,我们完全可以对每个顶点利用其所有的邻居顶点进行信息聚合,这样是信息无损的。

生成向量的伪代码

这里K是网络的层数,也代表着每个顶点能够聚合的邻接点的跳数,如K=2的时候每个顶点可以最多根据其2跳邻接点的信息学习其自身的embedding表示。

在每一层的循环k中,对每个顶点v,首先使用v的邻接点的k-1层的embedding表示h(k-1,u)  来产生其邻居顶点的第k层聚合表示h(k,N(v)) ,之后将h(k,N(v))和顶点v的第k-1层表示h(k-1,u)进行拼接,经过一个非线性变换产生顶点v的第k层embedding表示h(k,v)  。

聚合函数的选取

由于在图中顶点的邻居是天然无序的,所以我们希望构造出的聚合函数是对称的(即改变输入的顺序,函数的输出结果不变),同时具有较高的表达能力。

  • MEAN aggregator

上式对应于伪代码中的第4-5行,直接产生顶点的向量表示,而不是邻居顶点的向量表示。 mean aggregator将目标顶点和邻居顶点的第k-1层向量拼接起来,然后对向量的每个维度进行求均值的操作,将得到的结果做一次非线性变换产生目标顶点的第k层表示向量。

  • Pooling aggregator

 

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

  • LSTM aggregator

LSTM相比简单的求平均操作具有更强的表达能力,然而由于LSTM函数不是关于输入对称的,所以在使用时需要对顶点的邻居进行一次乱序操作。

参数的学习

在定义好聚合函数之后,接下来就是对函数中的参数进行学习。文章分别介绍了无监督学习和监督学习两种方式。

无监督学习形式基于图的损失函数希望临近的顶点具有相似的向量表示,同时让分离的顶点的表示尽可能区分。 目标函数如下

其中v是通过固定长度的随机游走出现在u附近的顶点, pn 是负采样的概率分布,Q 是负样本的数量。

与DeepWalk不同的是,这里的顶点表示向量是通过聚合顶点的邻接点特征产生的,而不是简单的进行一个embedding lookup操作得到。

  1. 监督学习形式

监督学习形式根据任务的不同直接设置目标函数即可,如最常用的节点分类任务使用交叉熵损失函数。

实验结果

GraphSAGE的核心

GraphSAGE不是试图学习一个图上所有node的embedding,而是学习一个为每个node产生embedding的映射

改进方向

扩展GraphSAGE以合并有向图或者多模式图;探索非均匀邻居采样函数

其他补充学习知识

归纳式与直推式

归纳式(Inductive)

归纳式学习是我们传统理解的监督学习(supervised learning),我们基于已经打标的训练数据,训练一个机器学习模型。然后我们用这个模型去预测我们没有从未见过的测试数据集上的标签。

直推式(Transduction)

和归纳式不同,直推式学习首先观察全部数据,包括了训练和测试数据,我们从观测到的训练数据集上进行学习,然后在测试集上做预测。即便如此,我们不知道测试数据集上的标签,我们可以在训练时利用数据集上的模式和额外信息。

为什么GCN是transductive,为啥要把所有节点放在一起训练?

不一定要把所有节点放在一起训练,一个个节点放进去训练也是可以的。无非是如果想得到所有节点的embedding,那么GCN可以把整个graph丢进去,直接得到embedding,还可以直接进行节点分类、边的预测等任务。

通过GraphSAGE得到的节点的embedding,在增加了新的节点之后,旧的节点也需要更新,这个是无法避免的,因为,新增加点意味着环境变了,那之前的节点的表示自然也应该有所调整。只不过,对于老节点,可能新增一个节点对其影响微乎其微,所以可以暂且使用原来的embedding,但如果新增了很多,极大地改变的原有的graph结构,那么就只能全部更新一次了。

GraphSAGE生成新节点embedding的过程,实施起来相比于GCN更加灵活方便了。在学习到了各种的聚合函数之后,其实就不用去计算所有节点的embedding,而是需要去考察哪些节点,就现场去计算,这种方法的迁移能力也很强,在一个graph上学得了节点的聚合方法,到另一个新的类似的graph上就可以直接使用了。

  • 5
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值