深度学习-GNN(5)【Nan】GraphSAGE

GraphSAGE

GraphSAGE:我寻思GCN也没我牛逼 - 蝈蝈的文章 - 知乎 https://zhuanlan.zhihu.com/p/74242097

【Graph Neural Network】GraphSAGE: 算法原理,实现和应用 - 浅梦的文章 - 知乎 https://zhuanlan.zhihu.com/p/79637787

阿里开源的graphlearn:https://graph-learn.readthedocs.io/zh_CN/latest/

风控反欺诈(2)GraphSAGE算法在网络黑产挖掘中的思考.md

graphSAGE-pytorch:https://github.com/twjiang/graphSAGE-pytorch

众所周知,2017年ICLR出产的GCN现在是多么地热门,仿佛自己就是图神经网络的名片。然而,在GCN的风头中,很多人忽略了GCN本身的巨大局限——Transductive Learning——没法快速表示新节点,这限制了它在生产环境中应用。同年NIPS来了一篇使用Inductive Learning的GraphSAGE,解决了这个问题。今天,让我们来一起琢磨琢磨这个GraphSAGE是个什么玩意儿。

一、回顾GCN及其问题

对GCN不熟悉的盆友,可以看看我的上一篇文章: 蝈蝈:何时能懂你的心——图卷积神经网络(GCN)

  • GCN的基本思想: 把一个节点在图中的高纬度邻接信息降维到一个低维的向量表示。
  • GCN的优点: 可以捕捉graph的全局信息,从而很好地表示node的特征。
  • GCN的缺点: Transductive learning的方式,需要把所有节点都参与训练才能得到node embedding,无法快速得到新node的embedding。

二、GraphSAGE

既然新增的节点,一定会改变原有节点的表示,那么我们干嘛一定要得到每个节点的一个固定的表示呢?我们何不直接学习一种节点的表示方法。这样不管graph怎么改变,都可以很容易地得到新的表示。

基本思想:

去学习一个节点的信息是怎么通过其邻居节点的特征聚合而来的。 学习到了这样的“聚合函数”,而我们本身就已知各个节点的特征和邻居关系,我们就可以很方便地得到一个新节点的表示了。

GCN等transductive的方法,学到的是每个节点的一个唯一确定的embedding; 而GraphSAGE方法学到的node embedding,是根据node的邻居关系的变化而变化的,也就是说,即使是旧的node,如果建立了一些新的link,那么其对应的embedding也会变化,而且也很方便地学到。