【GNN】图神经网络学习小结 and 笔记汇总

网友投稿 1278 2022-05-30

0.背景简述

GNN的本质,是要学习网络中每个节点的表达的,这些潜在的表达对图中每个节点的“社交”关系进行了编码,

把离散值的节点编码成稠密向量

,后续可用于分类回归,或者作为下游任务的特征。

更多:本次学习的图神经网络模型(如谱聚类的GCN、GAT等等),这些图神经网络即将节点或图映射到一个低维空间(称为图嵌入);而除了GNN还有很多图嵌入方法(在GNN之前图嵌入的概念常出现在流行学习和网络分析的研究中),这类图嵌入方法可以分为【基于矩阵分解的图嵌入方法】和【基于随机游走的图嵌入方法】。

DeepWalk从图上的幂律分布着手,开启了图表示学习这个领域.

node2vec探索了图上同质性和结构等价性,提出了新的随机游走策略.

GCN从图谱理论出发,通过一阶近似,设计了AXW的聚合函数.

PPNP研究了GNN和PageRank的联系,并分析了GNN层数和图半径(最短路径)的联系.

参考文献:

14KDD DeepWalk: Online Learning of Social Representations

16KDD node2vec: Scalable Feature Learning for Networks

17ICLR_GCN_Semi-Supervised Classification with Graph Convolutional Networks

19ICLR PPNP Predict then Propagate Graph Neural Networks meet Personalized PageRank

1.资源推荐

PyG:

(0)PYG库的官方文档:https://pytorch-geometric.readthedocs.io/en/latest/index.html

(1)Hands-on Graph Neural Networks with PyTorch & PyTorch Geometric

(2)虽然教程中用的是PyG,但是学习过程可以参考google的DGL(https://docs.dgl.ai/guide_cn/graph-basic.html#guide-cn-graph-basic),一方面有翻译的中文版,一方面是注释解释好像比较多。

(3)清华叉院大佬的GNN资料总结:https://github.com/zlpure/awesome-graph-representation-learning(包括论文+博客等)

(4)知乎大佬专栏——深度学习与图网络(https://www.zhihu.com/column/marlin)

(5)清华NLP实验室github上关于GNN的paper整理:https://github.com/thunlp/GNNPapers#graph-types

(6)马腾飞的《图神经网络》,书中的勘误链接:https://github.com/matenure/GNNbook_related

(7)百度飞桨的GNN七天训练营:https://aistudio.baidu.com/aistudio/education/group/info/1956

【GNN】图神经网络学习小结 and 笔记汇总

(8)一群清北老师的GNN教程:https://graph-neural-networks.github.io/index.html

2.菜鸡学习笔记

【GNN】task1-简单图论 & Data类-PyG中图的表示及使用

【GNN】task2-消息传递图神经网络

实现图神经网络的通用范式(MPNN消息传递范式),PyG中的消息传递基类的属性、方法和运行流程,最后自定义一个消息传递图神经网络。

【GNN】task3-基于图神经网络的节点表征学习

以GCN和GAT为例学习GNN的节点表征,并降维后可视化MLP、GCN和GAT三者节点分类任务,GCN和GAT的原理。

GCN

缺点在于它灵活性差,transductive,并且扩展性非常差,除此之外这篇论文借助验证集来早停帮助性能提升,跟它半监督学习的初衷有点相悖。

训练是full-batch的,难以扩展到大规模网络,并且收敛较慢

gcn增加深度会降低模型效果主要是因为过度平滑的问题。

GraphSage

这篇论文旨在提升gcn扩展性和改进训练方法缺陷。它将模型目标定于

学习一个聚合器而不是为每个节点学习到一个表示

,这中思想可以提升模型的灵活性和泛化能力。除此之外,得益于灵活性,它可以分批训练,提升收敛速度。

但是它的问题是因为节点采样个数随层数增长,会造成模型在time per batch上表现很差,弱于GCN,这方面的详细讨论可以参考Cluster-GCN这篇论文。

虽然支持mini-batch方式训练,但是训练较慢,固定邻居数目的node-wise采样,精度和效率较低。

GAT

这篇论文创新之处是加入attention机制,给节点之间的边给予重要性,帮助模型学习结构信息。

模型可以进一步改,用attention做排序来选取采样节点,这样效果和效率方面应该会有提升。

参数量比GCN多,也是full-batch训练;

只用到1-hop的邻居,没有利用高阶邻居,当利用2阶以上邻居,容易发生过度平滑(over-smoothing)

task4~7是节点预测、边预测与图预测的实践,学习其中的数据集构造方法、表征过程等,以及阅读相关的论文。

【GNN】task4-数据完整存储与内存的数据集类+节点预测与边预测任务实践

【GNN】task5-超大图上的节点表征学习

为将整个数据集的数据都存储到内存,学习InMemoryDataset基类的属性、方法、运行流程

【GNN】task6-基于图神经网络的图表征学习方法

这次学习了基于图同构网络(GIN)的图表征网络。为了得到图表征首先需要做节点表征,然后做图读出。

GIN中节点表征的计算遵循WL Test算法中节点标签的更新方法,因此它的上界是WL Test算法。

在图读出中,我们对所有的节点表征(加权,如果用Attention的话)求和,这会造成节点分布信息的丢失。

为了研究图神经网络的表达力问题,产生一个重要模型——图同构模型,Weisfeiler-Lehman测试就是检测两个图是否在拓扑结构上图同构的近似方法;该测试最大的特点是:对每个节点的子树的聚合函数采用的是单射(Injective)的散列函数。

【GNN】task7-超大规模数据集类的创建+图预测任务实践

3.小结

在task7开头也有提到前几天刚结束的KDD CUP和OGB共同举办第一届的OGB-LSC(OGB Large-Scale Challenge)图神经网络比赛(KDDCUP是ACM SIGKDD组织的数据挖掘领域最影响力的顶级赛事),该比赛就是提供真实世界的超大规模图数据,完成图学习领域的

节点分类、边预测和图回归三大任务

,百度在2个赛道上获得冠军,强的一批:

大规模节点分类赛道冠军:引入基于异构关系的统一消息传递模型

大规模图关系预测赛道冠军:提出 20 层的 NOTE-RPS 知识图谱嵌入模型

这次的GNN学习也是学习图学习的节点分类、边预测和图回归三大任务,更侧重GNN模型的应用,对于论文我也没有细读论文做笔记(更多是太懒了直接搜别人的博客的论文解读),顺便提下:

CSDN大佬“不务正业的土豆”好多论文解读or翻译都很牛逼(比如图卷积网络Graph Convolutional Network(GCN)的理解和详细推导)

CSDN大佬“诸神缄默不语”同为研0大佬早已远超我几条街了,多学习思考后和别人交流。

大白佬一堆PyG的总结笔记可以学习,如【pyg】终结篇一般模型书写框架。

4.下一阶段

现阶段理论知识不足,如GNN中的傅里叶变换算法等等数学推导不说全能推出来,但是大致思想至少要懂才行。

动手能力有待加强,出现bug时要多google或者上stackoverflow上康康别人的解决方案,多思考然后将bug解决方案记录到博客,以便下次出现时能够快速解决。

学习李沐的《动手学习深度学习》

学习CS224W(图机器学习)2021冬季课程 or 宾夕法尼亚大学GNN课程

"Deep Learning on Graphs"一书涵盖了为图结构数据开发深度学习技术的全面内容,详细介绍了GNN模型的基础,讨论了GNN模型的鲁棒性和可扩展性,介绍了GNNs在不同领域的最具代表性的应用,如自然语言处理、计算机视觉、数据挖掘和医疗等;

阅读综述文章Graph Neural Networks: A Review of Methods and Applications;研读提出模型等论文原文,重现论文中的实验。

5.Reference

datawhale course:https://gitee.com/rongqinchen/team-learning-nlp/blob/master/GNN/Markdown%E7%89%88%E6%9C%AC/10-%E6%80%BB%E7%BB%93.md

小桐大佬、天国大佬等等

https://mp.weixin.qq.com/s/ggEQ9LO8geP6oV5UnA9Rxg

清华大学图神经网络综述:模型与应用

更多参考:GNN入门必看!Google Research教你如何从毛坯开始搭建sota 图神经网络

其他github:

https://github.com/thunlp/GNNPapers

https://github.com/Jiakui/awesome-gcn

https://github.com/joeat1/GNN_note

https://github.com/weslynn/AlphaTree-graphic-deep-neural-network

神经网络

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:【软件工具使用】高效使用VScode工具
下一篇:Impala - Runtime Filter的原理及实现
相关文章