提示:用作学习笔记,顺便分享,侵删
文章目录
前言
提示:参考B站沐神GNN视频,写的笔记:
组会有人讲了GNN网络,之前看过一次,有点忘记了,重新温故一下,顺便写个笔记,帮助自己记忆学习。
一、图的基本概念
1. 图的表示
图是一种基本的数据结构,之前因为比较难,所以没有用于深度学习,现在渐渐地用在了深度学习中,就有了图神经网络(GNN)。
GNN常用下面地三种变量来表示。顶点、边和全局。三种变量均可用向量表示。如下图所示。当然,边有时候也会区分有向边和无向边。
2. 图的实例
图的实例还是很广泛的,常见的比如图像、文本、分子式、人物关系图、交通运输等。
3. 图的应用
图能用来干嘛?能解决什么问题?
常见有三种分类:
-
图级任务:目标式预测整个图的属性,比如这里的图是否含有两个环。
-
节点级任务:任务与图中的节点的身份和角色有关,比如这里的预测学生会偏向哪个派别
-
边级任务:预测与边有关。比如这里预测每个节点边的属性。
4. 使用图面临的挑战
- 图的邻接矩阵非常稀疏,不便于存储和GPU加速运算。
- 有许多邻接矩阵可以编码相同的连通性,并且不能保证这些不同的矩阵在深度神经网络中会产生相同的结果(也就是说,它们不是置换不变的)。比如这里的两个邻接矩阵表示同一个图。
这里给出其中一个解决方案:由节点、边、邻接列表和全局构成。
二、图神经网络基础(GNN)
1.最简单的GNN
如上图所示,将一个图分为顶点、边和全局表示,三种变量分别用三个MLP层来计算,最后输出另一个图,保证了运算中图的结构不变。其中不同顶点公用一个MLP、不同边共用一个MLP、全局用一个MLP。输入是图,输出也是图。缺点是,运算中没有交换信息。
在这之后,针对不同任务做不同操做,比如节点的分类,最后就再加一层全连接层,让每个节点公用这个全连接层,输出后加个softmax就可以了。
2. pooling操作(汇集操作)
此外,如果出现缺失某种数据时,比如没有顶点数据,就可以用polling操做来构建顶点数据。主要采用加上与顶点相连的边的信息和全局的信息来实现。如图所示。
这样,我们就可以得出一个简单的GNN网络架构示意图:
输入时一个图,经过很多个GNN block之后,得到转换后的图。最后根据任务的不同连接上不同的全连接层进行预测。但是这里的模型还有一个很大的问题,正如前面提到的,这里的点、边和全局都是分开进行计算,没有交互,没有信息的流动。这个问题会在接下来的讲解中解决。
3. 在图表各个部分之间传递消息
上面提到的信息传递问题在这里会得到解答。
这里就是收集顶点相邻顶点的信息,然后进行聚合(sum、max、mean等操作都可以),然后进入GNN block得到下一层的新图。
如上图就是汇聚距离为1的相邻节点来更新图的节点。此外还可以汇聚边的信息、全局的信息等等。
这里具体的操作其实我还没有特别清楚,后面等确实使用的时候再细看。这里的先后应该是在边缘嵌入之前更新节点嵌入,或者相反。这样的一个先后关系。
这里的图的后面的顶点和边等,经过多次的汇聚以及GNN block之后,单个顶点和边已经汇聚了其他顶点和边等的信息,甚至可以看到整个图的信息。
三、GNN playground(作者文章的实验部分)
这里是作者文章的实验部分,作者将实验做成了一个playground,读者可以在博客上进行交互,非常方便直观。展示了整个调节超参数的部分。
四、GNN相关技术
1. 其他类型的图
2. GNN种图的采样和batch
前面有提到,由于多次汇聚和多层block之后,顶点看到的信息很多,因此如果做反向传播等,会很大很难计算,因此进行采样,从整个大图种采样一下小图,再进行计算,这样就可以控制计算了。
这里给出了四种不同的采样方式。
此外还有batch,一次只一个顶点或者边进行前向传播,比较浪费资源,因此需要对batch个顶点和边一起做前向传播,但是因为顶点和边的连接时不确定的,因此这里也是比较有挑战性的一件事。
3. inductive biases(归纳偏置)
这个东西就很有趣,机器学习算法在学习过程中对某种假设(hypothesis)的偏好,称为“归纳偏好”(inductive bias),或简称为“偏好”。
所谓的inductive bias,指的是人类对世界的先验知识,对应在网络中就是网络结构。
这个东西我记得我有在之前的博客种提到。其实就是一种假设,任何一个神经网络或者说机器学习模型都有一个假设在里面,如果没有假设,就很难学出什么东西。比如卷积神经网络种的假设就是空间变换的不变性,循环神经网络假设的就是时序的延续性。GNN的假设就是保持了图的对称性,这个在文章前面有提到。
4. GCN和MPNN
实际上就是讲,可以将GCN(图卷积神经网络,前面包含汇聚的GNN)最后一个顶点看作,前面k步子图的逼近或者说embedding。
5. 点和边做对偶
6. GAT(Graph Attention Network)
…
总结
首先非常推荐去看原文和沐神讲解,这里只是简单做了一个笔记。最后就是文章最后的展开,这里没有过多记录,首先是我也不懂,文章也没有过多介绍,其次就是我目前也还用不着。GNN对超参数很敏感、而且不太适用GPU进行加速训练。