Graph Neural Network——图神经网络

本文是跟着李沐老师的论文精度系列进行GNN的学习的,详细链接请见:零基础多图详解图神经网络(GNN/GCN)【论文精读】
该论文的标题为《Ato Graph》,是对GNN的简介 。那么论文的第一张图呢把鼠标放上去某一个结点将会表示出该节点的生成过程,可以看到放于中的某个节点时,它是由中的多个节点生成,而中的这些结点又有的部分节点生成,因此只要层次够深,那么一个节点就可以处理原始大片节点的信息 。
【Graph Neural Network——图神经网络】图这种数据结构在当前随处可见,因此图神经网络如果能够发挥对图这种结构的良好处理能力,将会有很广泛的应用场景,例如药物的生成、车流量检测、推荐系统、人物关系等等 。
文章的主要内容分为四块,分别是
1、什么是图
图实际上就是表示实体(顶点)的信息以及它们之间的连接关系(边) 。而图的节点所包含的信息、边表达的信息、以及整个图表达的信息都可以用向量来表示 。因此就存在三种向量 。
而图又分为有向图和无向图,如下:
那么数据如何表示为图呢?
1.1 图片表示为图
如果将每个像素点看成一个顶点,而邻接的关系看成图中的边的,那么就可以用邻接矩阵来表示这个图像了,如下:
在图中我们可以看到,最左边的图呢代表每个像素它的位置,两位数字分别代表行和列,那么它旁边的那些像素总共有8个和它靠近,那么在第三张图中就有8的顶点和它存在边的连接 。而如何将第三张图表示成数据呢,就是用邻接矩阵,可以看到邻接矩阵的行和列每个元素都是一个顶点,如果顶点和顶点之间存在边的关系那么将会在矩阵的对应位置用蓝色的点进行标注 。因此我们就将图片表示成了一个图,再用邻接矩阵这种结构来表示图了 。
1.2 文本表示为图
文本可以看成一个序列,将每个单词看成一个顶点,而相邻的单词可以看成存在有向边的连接,再用邻接矩阵来表示,如下:
1.3 其他数据结构表示为图
例如咖啡因分子:
人物关系图:
空手道道馆中老师与学生的关系图:
等等 。
1.4、数据表示成图后存在哪些问题
图上的问题大致上可以分为三类,第一类是关于整个图的任务,第二类是关于图中的顶点的任务,第三类任务是关于图中的边的任务 。
也就是对一个图中的边的属性进行划分:
1.5、将机器学习用于图模型中将会有什么挑战
首先,前面说到的图的信息、顶点的信息、边的信息可以用向量来表示,这对于神经网络是由友好的 。但是关于各个顶点之间的连接性应该怎么表达是一个大问题 。而我们前面提到邻接矩阵,首先它所占用的空间会非常大,其次对于这种稀疏矩阵的高效处理也是一个很大的问题,再者如果我们将矩阵中的某些列或者某些行进行交换,是不会影响邻接矩阵所表示的含义的,如下图:
或者看下面这个例子,对于四个顶点的图可以有这么多可能的邻接矩阵:
这就需要我们保证我们的网络也能够在应对这样的变化时做出相同的决策 。
那么我们可以用到如下这种数据结构来表示:
对于每个顶点和每条边,我们都可以用标量或者向量来表示它们的内部属性,全局的图也是一样的 。而对于所有的连接信息,我们则可以维护一个连接列表的结构,其中每一个值代表每条边对应连接的两个节点 。
2、图神经网络(GNN)
原文中对于GNN的定义是:
A GNN is anon allof the graph (nodes, edges, -) thatgraph( )
意思就是GNN 是对图的所有属性(节点、边、全局上下文)的可优化转换,它保留了图的对称性(置换不变性),也就是将顺序变化之后不会影响的 。而这里用到的神经网络结构为,即信息传递神经网络,它会对图中的各种属性向量进行转换,但不会改变其连接性 。并且其输入和输出都是一个图 。