GraphSAGE 模型解读与tensorflow2.0代码实现

本文介绍了GraphSAGE模型,一种归纳学习方法,与GCN不同,它可以处理图结构变化。文章详细阐述了GraphSAGE的前向传播、聚合函数(平均、GCN、LSTM、Pooling)、参数学习、mini-batch采样以及在TensorFlow2.0中的代码实现,包括有监督和无监督学习场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上一篇文章,我们讲了图神经网络:图卷积神经网络(GCN)理解与tensorflow2.0代码实现,也提到GCN的缺点:GCN属于直推式学习(Transductive Learning),它在固定的图上学习每个节点的embedding表示,不能泛化到未加入到图中的节点,一旦图的结构发生改变,就需要重新训练整个网络。

本文提到的 GraphSAGE 属于归纳学习(Inductive Learning),核心是学习聚合邻居节点信息的函数(聚合函数),然后利用聚合函数来得到一个节点的表示。即使图中加入了新的节点,建立了新的边,那么也可以借助邻居节点信息与聚合函数得到新节点的向量表示。

前向传播

下图展示了 GraphSAGE 学习目标节点(中心的红色节点) embedding 的过程:

在这里插入图片描述

  1. 先对邻居节点采样:上图仅对2跳内的邻居采样,2跳邻居节点采样5个节点,1跳邻居采样个节点。
  2. 生成目标节点embedding:先聚合2跳邻居节点特征,生成1跳邻居节点embedding,再聚合1跳邻居节点 embedding,生成目标节点 embedding。
  3. 将 embedding 结果作为全连接层输入,预测目标节点标签。

上图展示了GraphSage的两个核心思想:采样(Sample)和聚合(Aggregate)。

整个过程的伪代码(Algorithm 1)如下:

在这里插入图片描述

核心部分是第4、5行:

  • 第4行:聚合节点 v 的邻居节点(采样后的)在第 k − 1 k-1 k1 层的 embedding,得到第 k k k 层的邻居聚合特征 h N ( v ) k h_{N(v)}^k hN(v)k
  • 第5行:将 h N ( v ) k h_{N(v)}^k hN(v)k 与第 k − 1 k-1 k1 层节点 v v v 的 embedding 向量拼接,输入到全连接层后得到节点 v v v 在第 k k k 层的 embedding 向量: h v k h_v^k hvk

伪代码中的 K 表示聚合深度,可以理解为要聚合 K 跳邻居节点的信息。

聚合函数

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

作者给出了多种聚合函数:

1,平均聚合

也就是Algorithm 1中的聚合方法,对第 k-1 层的邻居embedding中每个维度取平均,然后与目标节点第 k-1 层的embedding拼接后进行非线性转换:
h N ( v ) k = mean ⁡ ( { h u k − 1 , u ∈ N ( v ) } ) h v k = σ ( W k ⋅ CONCAT ⁡ ( h v k − 1 , h N ( u ) k ) ) \begin{array}{c} h_{N(v)}^{k}=\operatorname{mean}\left(\left\{h_{u}^{k-1}, u \in N(v)\right\}\right) \\ h_{v}^{k}=\sigma\left(W^{k} \cdot \operatorname{CONCAT}\left(h_{v}^{k-1}, h_{N(u)}^{k}\right)\right) \end{array} hN(v)k=mean({ huk1,uN(v)})hvk=σ(WkCONCAT(hvk1,hN(u)k))

2,类GCN聚合

直接对目标节点和所有邻居emebdding中每个维度取平均,然后再非线性转换:
h v k = σ ( W k ⋅ mean ⁡ ( { h v k − 1 } ∪ { h u k − 1 , ∀ u ∈ N ( v ) } ) ) h_{v}^{k}=\sigma\left(W^{k} \cdot \operatorname{mean}\left(\left\{h_{v}^{k-1}\right\} \cup\left\{h_{u}^{k-1}, \forall u \in N(v)\right\}\right)\right) hvk=

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值