首页 > 其他分享 >GNN 系列(三):GraphSAGE

GNN 系列(三):GraphSAGE

时间:2022-10-19 11:08:17浏览次数:43  
标签:采样 系列 邻居 训练 GraphSAGE learning GNN 节点

GNN 系列(三):GraphSAGE_神经网络


【引言】在GCN的博文中我们重点讨论了图神经网络的逐层传播公式是如何推导的,然而,GCN的训练方式需要将邻接矩阵和特征矩阵一起放到内存或者显存里,在大规模图数据上是不可取的。其次,GCN在训练时需要知道整个图的结构信息(包括待预测的节点), 这在现实某些任务中也不能实现(比如用今天训练的图模型预测明天的数据,那么明天的节点是拿不到的)。GraphSAGE的出现就是为了解决这样的问题,这篇文中我们将会详细得讨论它。


Inductive learning v.s. Transductive learning


首先我们介绍一下什么是inductive learning. 与其他类型的数据不同,图数据中的每一个节点可以通过边的关系利用其他节点的信息,这样就产生了一个问题,如果训练集上的节点通过边关联到了预测集或者验证集的节点,那么在训练的时候能否用它们的信息呢? 如果训练时用到了测试集或验证集样本的信息(或者说,测试集和验证集在训练的时候是可见的), 我们把这种学习方式叫做transductive learning, 反之,称为inductive learning. 显然,我们所处理的大多数机器学习问题都是inductive learning, 因为我们刻意的将样本集分为训练/验证/测试,并且训练的时候只用训练样本。然而,在GCN中,训练节点收集邻居信息的时候,用到了测试或者验证样本,所以它是transductive的。


概述


GraphSAGE是一个inductive框架,在具体实现中,训练时它仅仅保留训练样本到训练样本的边。inductive learning 的优点是可以利用已知节点的信息为未知节点生成Embedding. GraphSAGE 取自 Graph SAmple and aggreGatE, SAmple指如何对邻居个数进行采样。aggreGatE指拿到邻居的embedding之后如何汇聚这些embedding以更新自己的embedding信息。下图展示了GraphSAGE学习的一个过程: 

GNN 系列(三):GraphSAGE_数据_02

1.对邻居采样

2.采样后的邻居embedding传到节点上来,并使用一个聚合函数聚合这些邻居信息以更新节点的embedding

3.根据更新后的embedding预测节点的标签


算法细节


  1. 节点 Embedding 生成(即:前向传播)算法

GNN 系列(三):GraphSAGE_模型预测_03


下面的算法描述了我们是怎么做前向传播的:

GNN 系列(三):GraphSAGE_神经网络_04

GNN 系列(三):GraphSAGE_神经网络_05

  2. 采样 (Sample) 算法

GNN 系列(三):GraphSAGE_神经网络_06


  3. 聚合器 (Aggregator) 架构

GNN 系列(三):GraphSAGE_数据_07

GNN 系列(三):GraphSAGE_模型预测_08

GNN 系列(三):GraphSAGE_模型预测_09


  4. 参数学习

GNN 系列(三):GraphSAGE_神经网络_10

GNN 系列(三):GraphSAGE_模型预测_11

GNN 系列(三):GraphSAGE_神经网络_12


后话


GraphSAGE采用了采样的机制,克服了GCN训练时内存和显存上的限制,使得图模型可以应用到大规模的图结构数据中,是目前几乎所有工业上图模型的雏形。然而,每个节点这么多邻居,采样能否考虑到邻居的相对重要性呢,或者我们在聚合计算中能否考虑到邻居的相对重要性? 这个问题在我们的下一篇博文Graph Attentioin Networks中做了详细的讨论。


GNN 系列(三):GraphSAGE_数据_13

标签:采样,系列,邻居,训练,GraphSAGE,learning,GNN,节点
From: https://blog.51cto.com/u_15699042/5768996

相关文章

  • 深入剖析Redis系列: Redis集群模式搭建与原理详解
    前言在Redis3.0之前,使用 哨兵(sentinel)机制来监控各个节点之间的状态。RedisCluster是Redis的 分布式解决方案,在3.0版本正式推出,有效地解决了Redis在 分布式 ......
  • 深入剖析Redis系列:Redis数据结构与全局命令概述
    前言Redis提供了5种数据结构。理解每种数据结构的特点,对于Redis的 开发运维 非常重要,同时掌握Redis的 单线程命令处理 机制,会使 数据结构 和 命令 的选择事......
  • Selenium+Python系列 - 开发环境搭建
    一、写在前面我从未想过自己会写python系列的自动化文章,有些同学会问,那你现在为什么又开始写了?不止一个人找过我,问我可以写一些Python自动化的文章吗,答案是肯定的。笔......
  • Python OpenCV4趣味应用系列(一)---伪彩色效果
    工欲善其事,必先利其器!起航之前先把环境搭建好:第一步:安装Python,官网下载,选个python3.x(自己喜欢的版本),同时将Python相关目录添加到环境变量;第二步:安装python-opencv,cmd命令......
  • Python OpenCV4趣味应用系列(三)---内切圆/外接圆
    为了方便讲解,我们先来创建一个多边形做演示第一步:创建图像,并绘制一个六边形。代码和生成图像如下:#Createanimager=100src=np.zeros((4*r,4*r),dtype=np.uint8)#C......
  • Python OpenCV4趣味应用系列(四)---颜色物体实时检测
    今天,我们来实现一个视频实时检测颜色物体的小实例,视频中主要有三个颜色物体,我们只检测红色和绿色的球状物体,如下图所示:第一步需要打开视频(或者摄像头):cap=cv2.VideoCaptur......
  • 一文详尽系列之CatBoost
    CatBoostCatBoost是俄罗斯的搜索巨头Yandex在2017年开源的机器学习库,也是Boosting族算法的一种,同前面介绍过的XGBoost和LightGBM类似,依然是在GBDT算法框架下的一种改进实现......
  • 一文详尽系列之K-means算法
    K-means是我们最常用的基于距离的聚类算法,其认为两个目标的距离越近,相似度越大。算法1.1牧师-村民模型​K-means有一个著名的解释:牧师—村民模型:有四个牧师去郊区布道,一......
  • 一文详尽系列之EM算法
    EM算法,全称ExpectationMaximizationAlgorithm。期望最大算法是一种迭代算法,用于含有隐变量(HiddenVariable)的概率参数模型的最大似然估计或极大后验概率估计。思想EM算......
  • GB-T 193-1981 普通螺纹 直径与螺距系列(直径1_600mm)
          ......