首页 > 其他分享 >【GNN】图神经网络学习小结 and 笔记汇总

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

时间:2022-12-30 13:31:47浏览次数:60  
标签:GNN GCN 学习 神经网络 https 小结 节点


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.资源推荐

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


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.小结

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


在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


其他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


标签:GNN,GCN,学习,神经网络,https,小结,节点
From: https://blog.51cto.com/u_15717393/5980118

相关文章

  • 用Python实现BP神经网络(附代码)
    用Python实现BP神经网络(附代码)毕加锁(锁!)今天教大家用Python实现BP神经网络(附代码)用Python实现出来的机器学习算法都是什么样子呢?前两期线性回归及逻辑回归项目已发布(见文......
  • 【JZWinter Camp 2017】欠题小结
    2017.1.12Day1【GDKOI2017模拟】T2[JZOJ4938]序列T3[JZOJ4939]平均数2017.1.13Day2【NOIP2017提高组模拟】T2[JZOJ3824][CFRCC2014warmupDiv.1D]渴2017.1......
  • 8月6日讲座视频 | 图神经网络、深度强化学习和机器学习应用
    本期讲堂(8月6日)我们邀请了北京大学宋国杰、北京邮电大学乔媛媛和神策数据胡士文给大家带来三场技术报告:《图表示学习》、《深度强化学习与智能体》、《机器学习在神策数据的......
  • 使用tensorflow创建一个简单的神经网络
    欢迎关注”生信修炼手册”!本文是对tensorflow官方入门教程的学习和翻译,展示了创建一个基础的神经网络模型来解决图像分类问题的过程。具体步骤如下1. 加载数据tensorflow......
  • 【百家稷学】卷积神经网络的前世、今生与未来(武汉工程大学技术分享)
    最开始做我们这个技术公众号的时候,我定了3个层次的目标。第1层目标,输出100万字原创技术文章,去年年中的时候已经达成。第2层目标,走进100所高校和100个企业进行学习与分享,如今......
  • 【直播】如何获得更加高效的深度卷积神经网络
    在移动端使用深度学习模型时,我们需要参数少、计算速度快的模型,因此一个性能更高效的模型才是落地的关键。本次将从卷积核,拓扑结构,剪枝,量化,蒸馏,动态推理,AutoML等方向来讲述......
  • Windows Service调试方法小结
    方法1:log记录这是一个通用的调试方法,效率比较低,但比较实用,通过查看日志,总能达到调试的目的方法2:附加到进程这是WindowsService程序调试的常用方法,缺点是对Windows环境......
  • 【直播】如何设计性能更强大的深度卷积神经网络
    从事深度学习算法研究的人员一直在追求精度更高的网络性能,这一次我们将从模型的宽度、深度、卷积核和步长的大小,Dropout和BN层的设计,残差网络,多尺度与信息融合,Attention机......
  • R语言实现拟合神经网络预测和结果可视化|附代码数据
    原文链接:http://tecdat.cn/?p=6691最近我们被客户要求撰写关于神经网络的研究报告,包括一些图形和统计输出。神经网络一直是迷人的机器学习模型之一,不仅因为花哨的反向传......
  • 微信小游戏使用小结
    1.小游戏上传时如果勾选自动压缩的话,实际还同时会混淆。因为用到SpringIOC功能,不能用反射,所以去掉压缩,自行做压缩(主要是把一些库文件换成min版本,并且在头尾加上;window.egr......