关于机器学习的三个阶段
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
(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小时内删除侵权内容。