图神经网络(GNN)基础

提示:用作学习笔记,顺便分享,侵删

文章目录

  • 前言
  • 一、图的基本概念
    • 1. 图的表示
    • 2. 图的实例
    • 3. 图的应用
    • 4. 使用图面临的挑战
  • 二、图神经网络基础(GNN)
    • 1.最简单的GNN
    • 2. pooling操作(汇集操作)
    • 3. 在图表各个部分之间传递消息
  • 三、GNN playground(作者文章的实验部分)
  • 四、GNN相关技术
    • 1. 其他类型的图
    • 2. GNN种图的采样和batch
    • 3. inductive biases(归纳偏置)
    • 4. GCN和MPNN
    • 5. 点和边做对偶
    • 6. GAT(Graph Attention Network)
    • ...
  • 总结


前言

提示:参考B站沐神GNN视频,写的笔记:

组会有人讲了GNN网络,之前看过一次,有点忘记了,重新温故一下,顺便写个笔记,帮助自己记忆学习。

B站链接
文章链接


一、图的基本概念

1. 图的表示

图是一种基本的数据结构,之前因为比较难,所以没有用于深度学习,现在渐渐地用在了深度学习中,就有了图神经网络(GNN)。

GNN常用下面地三种变量来表示。顶点、边和全局。三种变量均可用向量表示。如下图所示。当然,边有时候也会区分有向边和无向边。

图神经网络(GNN)基础_第1张图片

2. 图的实例

图的实例还是很广泛的,常见的比如图像、文本、分子式、人物关系图、交通运输等。
图神经网络(GNN)基础_第2张图片
图神经网络(GNN)基础_第3张图片
图神经网络(GNN)基础_第4张图片
图神经网络(GNN)基础_第5张图片

3. 图的应用

图能用来干嘛?能解决什么问题?
常见有三种分类:

  1. 图级任务:目标式预测整个图的属性,比如这里的图是否含有两个环。
    图神经网络(GNN)基础_第6张图片

  2. 节点级任务:任务与图中的节点的身份和角色有关,比如这里的预测学生会偏向哪个派别
    图神经网络(GNN)基础_第7张图片

  3. 边级任务:预测与边有关。比如这里预测每个节点边的属性。
    图神经网络(GNN)基础_第8张图片
    图神经网络(GNN)基础_第9张图片

4. 使用图面临的挑战

  1. 图的邻接矩阵非常稀疏,不便于存储和GPU加速运算。
  2. 有许多邻接矩阵可以编码相同的连通性,并且不能保证这些不同的矩阵在深度神经网络中会产生相同的结果(也就是说,它们不是置换不变的)。比如这里的两个邻接矩阵表示同一个图。
    图神经网络(GNN)基础_第10张图片
    这里给出其中一个解决方案:由节点、边、邻接列表和全局构成。

图神经网络(GNN)基础_第11张图片

二、图神经网络基础(GNN)

1.最简单的GNN

图神经网络(GNN)基础_第12张图片
如上图所示,将一个图分为顶点、边和全局表示,三种变量分别用三个MLP层来计算,最后输出另一个图,保证了运算中图的结构不变。其中不同顶点公用一个MLP、不同边共用一个MLP、全局用一个MLP。输入是图,输出也是图。缺点是,运算中没有交换信息。

在这之后,针对不同任务做不同操做,比如节点的分类,最后就再加一层全连接层,让每个节点公用这个全连接层,输出后加个softmax就可以了。

图神经网络(GNN)基础_第13张图片

2. pooling操作(汇集操作)

此外,如果出现缺失某种数据时,比如没有顶点数据,就可以用polling操做来构建顶点数据。主要采用加上与顶点相连的边的信息和全局的信息来实现。如图所示。
图神经网络(GNN)基础_第14张图片
图神经网络(GNN)基础_第15张图片
这样,我们就可以得出一个简单的GNN网络架构示意图:
图神经网络(GNN)基础_第16张图片
输入时一个图,经过很多个GNN block之后,得到转换后的图。最后根据任务的不同连接上不同的全连接层进行预测。但是这里的模型还有一个很大的问题,正如前面提到的,这里的点、边和全局都是分开进行计算,没有交互,没有信息的流动。这个问题会在接下来的讲解中解决。

3. 在图表各个部分之间传递消息

上面提到的信息传递问题在这里会得到解答。
图神经网络(GNN)基础_第17张图片
这里就是收集顶点相邻顶点的信息,然后进行聚合(sum、max、mean等操作都可以),然后进入GNN block得到下一层的新图。

图神经网络(GNN)基础_第18张图片
如上图就是汇聚距离为1的相邻节点来更新图的节点。此外还可以汇聚边的信息、全局的信息等等。

图神经网络(GNN)基础_第19张图片
图神经网络(GNN)基础_第20张图片
这里具体的操作其实我还没有特别清楚,后面等确实使用的时候再细看。这里的先后应该是在边缘嵌入之前更新节点嵌入,或者相反。这样的一个先后关系。

图神经网络(GNN)基础_第21张图片
这里的图的后面的顶点和边等,经过多次的汇聚以及GNN block之后,单个顶点和边已经汇聚了其他顶点和边等的信息,甚至可以看到整个图的信息。

三、GNN playground(作者文章的实验部分)

这里是作者文章的实验部分,作者将实验做成了一个playground,读者可以在博客上进行交互,非常方便直观。展示了整个调节超参数的部分。

四、GNN相关技术

1. 其他类型的图

图神经网络(GNN)基础_第22张图片

2. GNN种图的采样和batch

前面有提到,由于多次汇聚和多层block之后,顶点看到的信息很多,因此如果做反向传播等,会很大很难计算,因此进行采样,从整个大图种采样一下小图,再进行计算,这样就可以控制计算了。

图神经网络(GNN)基础_第23张图片
这里给出了四种不同的采样方式。
此外还有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进行加速训练。

你可能感兴趣的:(深度学习,人工智能)