GraphSAGE: GCN落地必读论文

参考:https://zhuanlan.zhihu.com/p/62750137

在大规模图上学习节点embedding,在很多任务中非常有效,如学习节点拓扑结构的 DeepWalk 以及同时学习邻居特征和拓扑结构的semi-GCN。

但是现在大多数方法都是直推式学习, 不能直接泛化到未知节点。这些方法是在一个固定的图上直接学习每个节点embedding,但是大多情况图是会演化的,当网络结构改变以及新节点的出现,直推式学习需要重新训练(复杂度高且可能会导致embedding会偏移),很难落地在需要快速生成未知节点embedding的机器学习系统上。

本文提出归纳学习—GraphSAGE(Graph SAmple and aggreGatE)框架,通过训练聚合节点邻居的函数(卷积层),使GCN扩展成归纳学习任务,对未知节点起到泛化作用。

直推式(transductive)学习:从特殊到特殊,仅考虑当前数据。在图中学习目标是学习目标是直接生成当前节点的embedding,例如DeepWalk、LINE,把每个节点embedding作为参数,并通过SGD优化,又如GCN,在训练过程中使用图的拉普拉斯矩阵进行计算,
归纳(inductive)学习:平时所说的一般的机器学习任务,从特殊到一般:目标是在未知数据上也有区分性。

GraphSAGE框架

本文提出GraphSAGE框架的核心是如何聚合节点邻居特征信息,本章先介绍GraphSAGE前向传播过程(生成节点embedding),不同的聚合函数设定;然后介绍无监督和有监督的损失函数以及参数学习。

前向传播

 

preview

可视化例子:下图是GraphSAGE 生成目标节点(红色)embededing并供下游任务预测的过程:

  1. 先对邻居随机采样,降低计算复杂度(图中一跳邻居采样数=3,二跳邻居采样数=5)
  2. 生成目标节点emebedding:先聚合2跳邻居特征,生成一跳邻居embedding,再聚合一跳邻居embedding,生成目标节点embedding,从而获得二跳邻居信息。(后面具体会讲)。
  3. 将embedding作为全连接层的输入,预测目标节点的标签。

伪代码4-5行是核心代码,介绍卷积层操作:聚合与节点v相连的邻居(采样)k-1层的embedding,得到第k层邻居聚合特征 [公式] ,与节点v第k-1层embedding [公式] 拼接,并通过全连接层转换,得到节点v在第k层的embedding [公式] 。

【embedding的获取
方法一:用迁移学习获取别人预训练好的embedding
方法二:自己训练一个embedding
这里讲一个最简单的构造embedding算法,skip-gram算法。
假定我们的神经网络是输入一个词,输出一个反面词,比如,输入男人,输出女人,那么我们就构造一个含有embedding层的神经网络。
可以把embedding想象成是神经网络的一层,里面的参数经过不断的前向传播反向传播迭代更新。损失函数可以选用交叉熵函数。

训练完后,我们自己的embeding就构造好啦!】
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值