深入浅出图神经网络 第1章 图的概述 读书笔记
写在前面:
之前为了应付课程Project对GNN的学习就是半路出家,全靠网上的博客。所以现在对于一些GNN底层最基本的东西还不是很清楚,觉得理应学明白一点。之前就对《深入浅出图神经网络》一书有所耳闻,看了网上的一些评论认为这本书的内容还是偏浅偏简单,我认为权当一个引子作为学习GNN的第一步也没什么不好。后续看学习情况可能会继续开坑《Graph Representation Learning》的读书笔记,那本书相对来说就更深入更有难度了,希望能坚持下来,也希望能帮到对GNN有兴趣的你。
第1章 图的概述
第1章主要就是对图论做一个介绍,从图的种类开始,到图的一些概念,如何用数据结构存储图以及图数据的应用和图数据如何用在深度学习中。
1.1 图的基本定义
一些人尽皆知的概念就不赘述了,这里记录一个自己有些生疏的概念:
K阶子图(k-subgraph):一个顶点\(v_i\)的k阶子图是\(G_{v_i}^{(k)}=(V',E'),V'=\{v_j|\forall v_j,d(v_i,v_j)\le k\},E'=\{e_{ij}|\forall v_j,d(v_i,v_j)\le k\}\),很多时候会管k阶子图叫k-hop(论文中这种叫法很常见)
1.2 图的存储和遍历
图的存储其实数据结构里就学过了,分为邻接矩阵(Adjacency matrix)和关联矩阵(Incidence matrix)两种存储方法。
邻接矩阵概念应该都很熟了就不多说了,值得一提的一点是一般情况下邻接矩阵中会有大量0元素,所以邻接矩阵的存储通常是通过稀疏矩阵来存的,空间复杂度能在\(O(M)\)。
关联矩阵就用的比较少了,是通过记录顶点和边的关系建立的。每列代表一条边,如果节点是边的顶点则为1否则为0。在存储的时候需要两个一维数组表示顶点集合和边集合,再用一个二维数组来存储关联矩阵。因为每行只有2个非0值,所以关联矩阵一般也用稀疏矩阵存储。
图的遍历一般就是DFS和BFS,比较简单。
1.3 图数据
图数据中有4类常用的:同构图(Homogeneous Graph),异构图(Heterogeneous Graph),属性图(Property Graph)和非显式图(Graph Constructed from Non-relational Data)。
- 同构图:图的节点类型和关系类型(边)只有一种
- 异构图:图的节点类型和关系类型有多种
- 属性图:在异构图之上增加了额外的属性信息,如节点的标签(Label),关系的属性(Property)
- 非显式图:比较抽象,一个例子是点云,本来不是图,但可以将每个点和其他点的距离计算出来转化为关系,可以将点云转化为图
1.4 图数据深度学习
一些图学习的理论:
- 谱图理论(Spectral Graph Theory):图论与线性代数结合,发展出谱聚类相关算法,可以用来解决图的分割或者节点的聚类
- 统计关系学习(Statistical Relation Learning):关系表述与似然表示结合
- 异构信息网络(Heterogeneous Information Network)
- 图嵌入(Network Embedding):原书翻译的是网络表示学习,但我博客上的基本都是翻译成图嵌入,但其实也无所谓,因为基本说embedding都懂说的是啥
之后又介绍了一下GNN的历史,尽是一些名词的堆砌...再加上我也不是太了解就不复制粘贴了,等读了更多GNN的综述或者把祖师爷文章读了之后再来梳理下GNN的发展脉络。
这节比较重要的是给出了GNN的三种任务,个人认为了解一下还是很重要的:
- Node Level:节点层面的分为分类任务和回归任务,大名鼎鼎的引文网络数据集三兄弟Cora、Citeseer和PubMed就是Node Level的任务
- Link Level:边层面的分为边的分类和预测,任务主要集中在推荐系统中
- Graph Level:图的分类、表示和生成
总结来说,第一章没有什么难度,主要就是在介绍图的相关概念以及在深度学习中的应用,但确实讲的也都比较浅,很多我认为比较关键的概念(论文中比较经常出现的一些概念)没有详细的解释,也只是堆砌一下名词,希望后面几章能介绍的更详尽一点吧(如果看到后面还是这么水干脆就直接去看《Graph Representation Learning》好了...)