查看原文
其他

【综述专栏】GNN入门

在科学研究中,从方法论上来讲,都应“先见森林,再见树木”。当前,人工智能学术研究方兴未艾,技术迅猛发展,可谓万木争荣,日新月异。对于AI从业者来说,在广袤的知识森林中,系统梳理脉络,才能更好地把握趋势。为此,我们精选国内外优秀的综述文章,开辟“综述专栏”,敬请关注。

源:知乎—men oshape

地址:https://zhuanlan.zhihu.com/p/430518493

想搞GNN的话,不得不看这篇综述 《A Comprehensive Survey on Graph Neural Networks》
论文地址:https://arxiv.org/abs/1901.00596


01

GNN背景

(1)GNN历史

1997年首先在图上用神经网络
GNN在2005年被首次提出
早期是研究RecGNN,通过迭代地传播邻居信息直到收敛,得到node representation
CNN火了之后开始有ConvGNN,分为谱域卷积(spectral-based approaches)和空域卷积(spatial-based approaches)
近几年发展了GAEs和STCNN,图自编码器和时空图神经网络,他们都可以建立在RecGNN和ConvGNN等架构之上

(2)GNN与Graph embedding区别

Graph embedding将网络表示为低维向量,并保存网络结构和节点信息,用于下游分类,聚类,推荐等任务
GNN用端到端的方式解决类似的问题
区别在于,GNN包括了很多神经网络模型,能够解决network embedding同样的问题
Graph embedding还包括了一些非DL的方法,比如矩阵分解和随机游走random walk等算法

02

GNN任务分类

(1)节点分类:输入单个节点的向量,判断类别

(2)关系预测:输入两个节点的向量,计算相似度/距离

如图输入的是一张图和node的feature矩阵,通过网络学习后,得到node的向量表示
基于node的向量表示,可以做节点分类or两个node之间的关系预测

(3)整图分类:学习整张图的表示

如图网络中间有个readout操作,就是图上的每个node都遍历一遍得到图的表示


03

GNN模型分类
这张图截自原文,综述了近些年的GNN模型,大多数都是空域的,大力出奇迹;下面介绍下三个经典GNN模型(GCN、GraphSAGE、GAT)


04

GNN经典模型

(1)GCN

传播公式 :   
思路:
自身特征:所以原始的邻接矩阵上+一个单位矩
归一化操作:对与每一对相连的2个node分别处以各自度的个数
缺点:
需要将整张图放入内存,难以扩展到大规模网络
只能做transductive learning,无法预测新添加的节点【后续可以做】

(2)GraphSAGE

传播公式 : 

思路:

采样固定的k个邻居

优点:

可以不输入整张图

可以使用不同的聚合函数(mean、maxpooling、lstm等)

可以预测新的节点,做inductive learning

缺点:

未考虑不同邻居的重要性

(3)GAT

播公式:

思路:聚合邻居特征时,引入attention来学习分配权重

点:

可以不输入整张图

不同邻居有不同的权重

(4)效果对比

4个常用的dataset,前三个都是论文引用关系图,可以用作transductive learning任务

最后一个PPI蛋白质相互作用网络,可以用作inductive learning任务

transductive learning效果,GAT > GCN

inductive learning效果,GAT > GraphSAGE

05

安装onnx和onnxruntime

(1)网络深度

随着网络加深,模型表现反而下降

所有节点的表示将收敛到一个点

(2)大型图

目前的靠快速采样和子图训练都是破坏图形完整性为代价的

如何在计算性能和图的完整性上保证平衡

(3)异构图

当前的大多数GNN都采用同质图,很难将当前的GNN直接应用于异构图

异构图包含不同类型的节点和边,或不同形式的节点和边输入

(4)动态图

实际场景中图应该是动态变化的

节点或者边会新增或者删减,节点输入和边输入也可能随时间变化

本文目的在于学术交流,并不代表本公众号赞同其观点或对其内容真实性负责,版权归原作者所有,如有侵权请告知删除。


“综述专栏”历史文章


更多综述专栏文章,

请点击文章底部“阅读原文”查看



分享、点赞、在看,给个三连击呗!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存