图神经网络三大基础算法——GraphSAGE

GraphSAGE是一种图卷积网络,通过节点的采样和聚合处理在未知图上生成节点嵌入。它不同于GCN,能处理任意图结构,通过多层邻居信息聚合和可学习参数实现特征表示。文中还讨论了邻居采样策略、不同聚合函数(如Mean、LSTM和Pooling)以及mini_batch版本的应用。
摘要由CSDN通过智能技术生成

GraphSAGE

SAmple+aggreGatE:采样与聚合;
之前谈到的GCN是利用节点的邻居信息来聚合它下一层的节点的表示; 这种直推式的方法,只能在一张图上做GCN,如果在一张没有见过的图上,GCN是无法进行的 ;
Graphsage正是采样和聚合,采用归纳式的方法,对于没见过的节点也可以生成embedding;

如下图,我们的输入是:图 G G G,节点的特征 X v X_v Xv,层数K,权重矩阵 W k W^k Wk h v 0 = X v h_v^0=X_v hv0=Xv首先,我遍历K层的Graphsage,在每一层上我遍历所有的节点,我求一下v节点周围的节点信息,我将邻居节点的信息聚合在一起,就可以求v节点在第K层的邻居向量 h N ( v ) k h_{N(v)}^k hN(v)k
这个时候,我再将上一层(K-1)的v节点的特征表示 h v k − 1 h_v^{k-1} hvk1和第K层v节点邻居聚合后的特征向量 h N ( v ) k h_{N(v)}^k hN(v)k拼在一起,在乘以这个 W k W^k Wk参数,就可以得到v节点在这一层的特征表示 h v k h_v^{k} hvk
经过K层graphsage,就可以得到v节点学习到的特征表示;
在这里插入图片描述
最重要的就是第4步的聚合和第五步的连接;
举个例子:
在这里插入图片描述
首先,聚合3456在第0层的特征 h 3 , 4 , 5 , 6 0 h_{3,4,5,6}^0 h3,4,5,60,求得邻域特征 h N ( 1 ) 1 h_{N(1)}^1 hN(1)1;
之后将 h 1 0 h_{1}^0 h10 h N ( 1 ) 1 h_{N(1)}^1 hN(1)1拼接在一起;再乘以可学习参数 W W W,就得到了1节点在经过了1层graphsage之后的特征表示 h 0 0 h_0^0 h00;
邻居采样:
不对所有邻居进行聚合,采样聚合固定长度的邻居数量,会出现以下两种情况:
①邻居节点比采样节点多,如1与3456,那么在3456中随机选3个即可;
②邻居节点比采样节点少,如2与13,那么在选择完13之后,还需要重新重复选择一下1或者3;

作者表明该模型 K = 2 K=2 K=2 S 1 ∗ S 2 ≤ 500 S_1*S_2\le500 S1S2500时,效果会比较好;ps: S 1 , S 2 S_1,S_2 S1S2分别是第一层聚合的邻居数量和第二层聚合的邻居数量;
在这里插入图片描述
举个例子:
在这里插入图片描述
ps:1-4是出度,对1没有影响;
聚合函数:需要满足对称排列不变性
①Mean aggregator:上面提到的都是采用mean
在这里插入图片描述
作者提出了mean也可以直接算,不用后面的那步连接操作;
②LSTM aggregator:LSTM本身是由顺序的,通过将输入节点随机排列,使得LSTM也可以适用于无序的集合;(模型容量大,做出来效果好)
③Pooling aggregator:
在这里插入图片描述
在这里插入图片描述
最后,抽取的便是,0.6,1,0.8,1.2;池化层可以有效的缩小参数矩阵的尺寸,从而减少最后连接层的中的参数数量。所以加入池化层可以加快计算速度和防止过拟合的作用。

GraphSAGE(mini_batch版本)
我们是从第K层开始,通过K-1的节点再去求取K-2层的节点,通过这样我们就求得了最终我要计算的minibeatch所需的所有的节点,那么我就将这个部分节点把它存下来就可以,然后我将存下来的这些节点,我再通过一个graphsage的操作,那么我就学习到了每个节点的特征。
在这里插入图片描述
举个例子:
这个例子由两层GraphSAGE组成,第一层聚合两个邻居,第二层聚合三个邻居;
首先是B2层是我们的最终层,我们要求目标节点a;然后看倒数第一层B1,它要聚合的是我们a节点周围的节点,采样3个邻居节点C,F,J;然后看一下倒数第二层B0,我需要选择聚合C,F,J 的k,l,i,h,d,e这六个节点。
在这里插入图片描述
将一整个大图简化为只需要,三种颜色的这种小图;
在这里插入图片描述
Graph_embedding:
在这里插入图片描述
作者说这两个节点比较相近得,这两个节点得表征是比较相似的;
通过损失函数,训练GraphSAGE的权重函数W,这种方法学习的不是节点的embedding,而是学习了W,当我学习完这个W,我就可以推出一个节点的embedding。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值