GNN教程:GraghSAGE算法细节详解!

2020 年 11 月 18 日 深度学习自然语言处理

 Datawhale干货 
作者:秦州,算法工程师,Datawhale成员

引言

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


一、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学习的一个过程:

  1. 对邻居采样
  2. 采样后的邻居embedding传到节点上来,并使用一个聚合函数聚合这些邻居信息以更新节点的embedding
  3. 根据更新后的embedding预测节点的标签

三、算法细节

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

这一节讨论的是如何给图中的节点生成(或者说更新)embedding, 假设我们已经完成了GraphSAGE的训练,因此模型所有的参数(parameters)都已知了。具体来说,这些参数包括 个聚合器 (见下图算法第4行)中的参数, 这些聚合器被用来将邻居embedding信息聚合到节点上,以及一系列的权重矩阵 (下图算法第5行), 这些权值矩阵被用作在模型层与层之间传播embedding的时候做非线性变换。

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

算法的主要部分为:

  1. (line 1)初始化每个节点embedding为节点的特征向量
  2. (line 3)对于每一个节点
  3. (line 4)拿到它采样后的邻居的embedding 并将其聚合,这里 表示对邻居采样
  4. (line 5)根据聚合后的邻居embedding( )和自身embedding( )通过一个非线性变换( )更新自身embedding.

算法里的 这个比较难理解,下面单独来说他, 之前提到过,它既是聚合器的数量,也是权重矩阵的数量,还是网络的层数,这是因为每一层网络中聚合器和权重矩阵是共享的。

网络的层数可以理解为需要最大访问到的邻居的跳数(hops),比如在figure 1中,红色节点的更新拿到了它一、二跳邻居的信息,那么网络层数就是2。

为了更新红色节点,首先在第一层( )我们会将蓝色节点的信息聚合到红色节点上,将绿色节点的信息聚合到蓝色节点上。在第二层( )红色节点的embedding被再次更新,不过这次用的是更新后的蓝色节点embedding,这样就保证了红色节点更新后的embedding包括蓝色和绿色节点的信息。

3.2 采样 (SAmple) 算法

GraphSAGE采用了定长抽样的方法,具体来说,定义需要的邻居个数 , 然后采用有放回的重采样/负采样方法达到 ,。保证每个节点(采样后的)邻居个数一致是为了把多个节点以及他们的邻居拼成Tensor送到GPU中进行批训练。

3.3 聚合器 (Aggregator) 架构

GraphSAGE 提供了多种聚合器,实验中效果最好的平均聚合器(mean aggregator),平均聚合器的思虑很简单,每个维度取对邻居embedding相应维度的均值,这个和GCN的做法基本一致(GCN实际上用的是求和):

举个简单例子,比如一个节点的3个邻居的embedding分别为  ,按照每一维分别求均值就得到了聚合后的邻居embedding为  .

论文中还阐述了另外两种aggregator: LSTM aggregatorPooling aggregator, 有兴趣的可以去论文中看下。

3.4 参数学习

到此为止,整个模型的架构就讲完了,那么GraphSAGE是如何学习聚合器的参数以及权重变量 的呢? 在有监督的情况下,可以使用每个节点的预测label和真实label的交叉熵作为损失函数。在无监督的情况下,可以假设相邻的节点的输出embeding应当尽可能相近,因此可以设计出如下的损失函数:

其中 是节点 的输出embedding,  是节点 的邻居(这里邻居是广义的,比如说如果 在一个定长的随机游走中可达,那么我们也认为他们相邻), 是负采样分布, 是负采样的样本数量,所谓负采样指我们还需要一批不是 邻居的节点作为负样本,那么上面这个式子的意思是相邻节点的embedding的相似度尽量大的情况下保证不相邻节点的embedding的期望相似度尽可能小。

四、后话

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

Reference

[1] Inductive Representation Learning on Large Graphs(http://arxiv.org/abs/1706.02216)


  
  
    
下载一:中文版!学习TensorFlow、PyTorch、机器学习、深度学习和数据结构五件套!
后台回复【五件套


下载二:南大模式识别PPT
后台回复南大模式识别



说个正事哈



由于微信平台算法改版,公号内容将不再以时间排序展示,如果大家想第一时间看到我们的推送,强烈建议星标我们和给我们多点点【在看】。星标具体步骤为:

(1)点击页面最上方深度学习自然语言处理”,进入公众号主页。

(2)点击右上角的小点点,在弹出页面点击“设为星标”,就可以啦。

感谢支持,比心



投稿或交流学习,备注:昵称-学校(公司)-方向,进入DL&NLP交流群。

方向有很多:机器学习、深度学习,python,情感分析、意见挖掘、句法分析、机器翻译、人机对话、知识图谱、语音识别等

记得备注呦


推荐两个专辑给大家:
专辑 | 李宏毅人类语言处理2020笔记
专辑 | NLP论文解读
专辑 | 情感分析

整理不易,还望给个在看!

登录查看更多
1

相关内容

专知会员服务
37+阅读 · 2020年11月24日
【PKDD2020教程】可解释人工智能XAI:算法到应用,200页ppt
专知会员服务
100+阅读 · 2020年10月13日
【KDD2020-UCLA-微软】GPT-GNN:图神经网络的预训练
专知会员服务
62+阅读 · 2020年8月19日
系列教程GNN-algorithms之七:《图同构网络—GIN》
专知会员服务
47+阅读 · 2020年8月9日
系列教程GNN-algorithms之六:《多核卷积拓扑图—TAGCN》
专知会员服务
49+阅读 · 2020年8月8日
一份简单《图神经网络》教程,28页ppt
专知会员服务
123+阅读 · 2020年8月2日
【Code】GraphSAGE 源码解析
AINLP
30+阅读 · 2020年6月22日
【图神经网络入门】GAT图注意力网络
深度学习自然语言处理
28+阅读 · 2020年5月16日
图神经网络入门(三)GAT图注意力网络
专知
7+阅读 · 2020年5月15日
GraphSAGE: GCN落地必读论文
AI100
29+阅读 · 2019年8月15日
GraphSAGE:我寻思GCN也没我牛逼
极市平台
11+阅读 · 2019年8月12日
图卷积神经网络的变种与挑战【附PPT与视频资料】
人工智能前沿讲习班
27+阅读 · 2018年12月28日
图注意力网络
科技创新与创业
35+阅读 · 2017年11月22日
图上的归纳表示学习
科技创新与创业
23+阅读 · 2017年11月9日
Heterogeneous Deep Graph Infomax
Arxiv
12+阅读 · 2019年11月19日
Tutorial on NLP-Inspired Network Embedding
Arxiv
7+阅读 · 2019年10月16日
Adaptive Neural Trees
Arxiv
4+阅读 · 2018年12月10日
Arxiv
7+阅读 · 2018年8月21日
Arxiv
10+阅读 · 2018年2月4日
VIP会员
相关VIP内容
专知会员服务
37+阅读 · 2020年11月24日
【PKDD2020教程】可解释人工智能XAI:算法到应用,200页ppt
专知会员服务
100+阅读 · 2020年10月13日
【KDD2020-UCLA-微软】GPT-GNN:图神经网络的预训练
专知会员服务
62+阅读 · 2020年8月19日
系列教程GNN-algorithms之七:《图同构网络—GIN》
专知会员服务
47+阅读 · 2020年8月9日
系列教程GNN-algorithms之六:《多核卷积拓扑图—TAGCN》
专知会员服务
49+阅读 · 2020年8月8日
一份简单《图神经网络》教程,28页ppt
专知会员服务
123+阅读 · 2020年8月2日
相关资讯
【Code】GraphSAGE 源码解析
AINLP
30+阅读 · 2020年6月22日
【图神经网络入门】GAT图注意力网络
深度学习自然语言处理
28+阅读 · 2020年5月16日
图神经网络入门(三)GAT图注意力网络
专知
7+阅读 · 2020年5月15日
GraphSAGE: GCN落地必读论文
AI100
29+阅读 · 2019年8月15日
GraphSAGE:我寻思GCN也没我牛逼
极市平台
11+阅读 · 2019年8月12日
图卷积神经网络的变种与挑战【附PPT与视频资料】
人工智能前沿讲习班
27+阅读 · 2018年12月28日
图注意力网络
科技创新与创业
35+阅读 · 2017年11月22日
图上的归纳表示学习
科技创新与创业
23+阅读 · 2017年11月9日
相关论文
Heterogeneous Deep Graph Infomax
Arxiv
12+阅读 · 2019年11月19日
Tutorial on NLP-Inspired Network Embedding
Arxiv
7+阅读 · 2019年10月16日
Adaptive Neural Trees
Arxiv
4+阅读 · 2018年12月10日
Arxiv
7+阅读 · 2018年8月21日
Arxiv
10+阅读 · 2018年2月4日
Top
微信扫码咨询专知VIP会员