QA派|初识GraphSAGE

GraphSAGE是一种归纳式图神经网络,相比GCN更适用于大规模图的训练,支持新节点的embedding生成。其核心是通过采样和聚合函数学习节点与邻居的关系,提供更好的泛化能力。采样技术降低了计算复杂度,允许批训练,而聚合函数的多样性提高了模型的灵活性。GraphSAGE在无监督学习中利用随机游走和负采样,通过对比学习优化节点embedding。在有监督任务中,它与其他图神经网络无明显区别。
摘要由CSDN通过智能技术生成

QA派|初识GraphSAGE

图网络中节点的低维embedding,对于各类预测、图分析任务都非常有用;相对于要求一整张图作为输入的GCN,能分批训练的GraphSAGE在工业界似乎更加常用。本文通过问答的形式,来对GraphSAGE有个初步的理解。

QA派,用问答的形式为加深对模型、问题的理解,同时也有助于不断深入。

基本概念

有了GCN为啥还要GraphSAGE?

GCN灵活性差、为新节点产生embedding要求额外的操作,比如“对齐”:

  • GCN是 直推式(transductive) 学习,无法直接泛化到新加入(未见过)的节点;
  • GraphSAGE是 归纳式(inductive) 学习,可以为新节点输出节点特征。

GCN输出固定:

  • GCN输出的是节点唯一确定的embedding;
  • GraphSAGE学习的是节点和邻接节点之间的关系,学习到的是一种映射关系,节点的embedding可以随着其邻接节点的变化而变化。

GCN很难应用在超大图上:

  • 无论是拉普拉斯计算还是图卷积过程,因为GCN其需要对整张图进行计算,所以计算量会随着节点数的增加而递增。
  • GraphSAGE通过采样,能够形成minibatch来进行批训练,能用在超大图上。

GraphSAGE有什么优点?

  • 采用归纳学习的方式,学习邻居节点特征关系,得到泛化性更强的embedding;
  • 采样技术,降低空间复杂度,便于构建minibatch用于批训练,还让模型具有更好的泛化性;
  • 多样的聚合函数,对于不同的数据集/场景可以选用不同的聚合方式,使得模型更加灵活。

GraphSAGE的基本思路是什么?

既然新增的节点,一定会改变原有节点的表示,那么为什么一定要得到每个节点的一个固定的表示呢?何不直接学习一种节点的表示方法呢?

为了回答上面的问题,GraphSAGE的基本思路是:利用一个聚合函数,通过采样和学习聚合节点的局部邻居特征,来为节点产生embedding。

跳数(hops)、搜索深度(search depth)、阶数(order)有啥区别?

我们经常听到一阶邻居、二阶邻居,1-hops、2-hops等等,其实他们都是一个概念,就是该节点和目标节点的路径长度,如果路径长度是1,那就是一阶邻接节点、1-hops node。

搜索深度其实和深度搜索的深度的概念相似,也是用路径长度来衡量。

简单来说,这几个概念某种程度上是等价。

在GraphSAGE中,还有聚合层数\迭代次数,比如说只考虑了一阶邻接节点,那就只有一层聚合(迭代了一次),以此类推。

采样

为什么要采样?

出于对计算效率的考虑,对每个节点采样一定数量的邻接节点作为待聚合信息的节点。

从训练效率考虑:

  • 通过采样,可以得到一个固定大小的领域集,可以拼成一个batch,送到GPU中进行批训练。

从复杂度角度考虑:

  • 如果没有采样,单个batch的内存使用和预期运行时间是不可预测的;最坏的情况是 O ( ∣ V ∣ ) O(|\mathcal{V}|) O(V),即所有的节点都是目标节点的邻接节点。
  • 而GraphSAGE的每个batch的空间和时间复杂度都是固定的, O ( ∏ i = 1 K S i ) O(\prod^K_{i=1}S_i) O(i=1KSi),其中K是指层数,也就是要考虑多少阶的邻接节点, S i S_i Si是在第i层采样的数量。

采样数大于邻接节点数怎么办?

设采样数量为K:

  • 若节点邻居数少于K,则采用有放回的抽样方法,直到采样出K个节点。
  • 若节点邻居数大于K,则采用无放回的抽样。

当然,若不考虑计算效率,我们完全可以对每个节点利用其所有的邻居节点进行信息聚合,这样是信息无损的。但这么做可能就没法使用批训练了。

采样的邻居节点数应该选取多大?

关于邻居的个数,文中提到 K = 2   a n d   S 1 ⋅ S 2 ≤ 500 K = 2~and~S_1⋅S_2 \leq 500 K=2 and S1S2500,即两次扩展的邻居数之积小于500,大约每次只需要扩展20来个邻居时获得较高的性能。

实验中也有关于邻居采样数量的对比,如下图,随着邻居抽样数量的递增,边际效益递减,而且计算时间也会增大。

每一跳采样需要一样吗?

不需要,可以分别设置每一跳的采样数量,来进一步缓解因阶数越高涉及到的节点越多的问题。

原文中,一阶采样数是25,二阶采样数是10。这时候二阶的节点总数是250个节点,计算量大大增加。

适合有向边吗?

适合,只需要采样邻居节点时考虑边的方向即可。

采样是随机的吗?

原论文里使用的是uniform sampling,即均匀采样。

同时原文指出,探索非均匀采样是值得探索的方向(比如pinSAGE的重要性采样)。

聚合函数

聚合函数的选取有什么要求?

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

GraphSAGE论文中提供多少种聚合函数?

原文中提供三种聚合函数:

  • 均值聚合
  • pooling聚合(max-pooling/mean-pooling)
  • LSTM聚合

均值聚合的操作是怎样的?

  1. 目标节点 v v v 和邻居节点 u , ∀ u ∈ N ( v ) u,\forall{u}\in \mathcal{N}(v) u,uN(v)
  2. 把目标节点和邻居节点的特征纵向拼接起来 { h v k − 1 } ∪ { h u k − 1 } \{h^{k-1}_{v}\}\cup\{h^{k-1}_{u}\} { hvk1}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值