图神经网络基础讲解(图神经网络 基础与前沿)

网络设计 353
本篇文章给大家谈谈图神经网络基础讲解,以及图神经网络 基础与前沿对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 本文目录一览: 1、GNN(一) 图神经网络基本知识

本篇文章给大家谈谈图神经网络基础讲解,以及图神经网络 基础与前沿对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

GNN(一) 图神经网络基本知识

图是由点和边构成的,它可以分为两种表示方法分别是: 1. 有向图 2. 无向图

图像的度分为两种:1. 有向图的度 2. 无向图的度

①度 可以理解为点之间的连接线 ②入度指向当前节点的连线, 出度当前节点连出去的连线

子图表示某张图的子集

对于一个无向图,如果任意的节点i能够通过一些边达到节点j,则称之为连通图

其中对于图中任意两点都可以 相互 到达,我们称之为强连通图,反之称为弱连通图。

可以理解为所有的连通在一起的图算一个连通分量。如上图左边连通分量是1, 右边连通分量是2。

图中的两个节点所能达到的最短路径。

图中的两两节点最短路径最大的值称之为图直径。

在图论和网络分析中,中心性(Centrality)是判断网络中节点重要性/影响力的指标。在社会网络分析中,一项基本的任务就是鉴定一群人中哪些人比其他人更有影响力,从而帮助我们理解他们在网络中扮演的角色。

公式:

重要的节点就是拥有许多连接的节点, 你的社会关系越多, 你的影响力就越强

思想就是与你连接的人越重要,你也就越重要

公式:

中间成员对路径两端的成员具有“更大的人际关系影响”。

接近中心性高的节点一般扮演的是八婆的角色(gossiper)。他们不一定是名人,但是乐于在不同的人群之间传递消息。

指出去的为hub, 被指的为authority

图神经网络是怎么炼成的:GNN基本原理简介

此文算是对Google Research这篇 A Gentle Introduction to Graph Neural Networks 神作的阅读笔记.

十多年来,研究人员开发了一种称之为图神经网络(Graph Neural Networks,GNNs)的技术,旨在将如今在深度学习的诸多任务中摧枯拉朽的神经网络,应用到图结构之上,从而让神经网络捕捉到更错综复杂的交叉特征,以期待在一些任务上取得更佳的效果。鉴于操作图数据结构的复杂性,尽管已经发展了十几年,它在实际应用中却刚刚起步,即时是google也才开始研究将其被应用到药品研发、物理模拟、***新闻检测、交通预测和推荐系统等领域。

尽管GNN是一个新兴的研究领域,但图结构的数据其实在我们身边无处不在。那么什么是图呢?

这个理科生应该都清楚,图有点(Vertex)和边(Edge)两部分组成,一个图就代表了各个实体节点(node)之间的关系(edge):

每个节点或者边都可以包含它的一些属性信息,比如如果一个节点表示一个人,那么就可以包含这个人的姓名、性别、身高、体重之类的..我们研究需要的信息。

而这些信息,都可以用通用的向量的形式存入其中:

还有别忘了一点,边是可以有方向的,按此我们还能分为有向图或是无向图。边的方向代表了信息的传递方向,例如a是b的微信好友,那b也是a的微信好友,好友关系自然是没方向的,而比如a是b的爹,那显然b就不是a的爹,此时叫爹的关系就是有有方向的。

图结构的构建是非常灵活的,可以根据个人的设计构建出各种不一样的图。而作为开发者显然要结合实际解决的问题来构建合适的图。

正如前面所提到的,图无处不在。你可能已经熟悉例如知识图谱、社交网络之类的图数据。当时显然,图是一种极其强大的通用数据表示,传统神经网络中用到的欧式空间的数据,同样可以用图来表示,例如可以将图像和文本建模为图结构数据。

比如,我们可以将一张图片的每个像素作为图的节点,再将相邻的像素用边连接起来,就构造了一个该图像的图。

如上图展示了一个5*5的图片的邻接矩阵表示和图表示。

我们将每个单词作为节点,并将每个节点连接到下一个节点,就得到了一个文本的图:

当然,在实践中我们并不会这样来编码文本和图像,因为所有的图和文本都是非常规则的结构,表示成图就多此一举了。

我们再来看一些例子,这些数据的结构更加复杂,除了图之外很难用其他方式来表达。

分子是构成物质的基石,我们可以用节点来表示它的原子和电子,用边来表示共价键,这样便将一个分子表示成了一个图:

不同的图可以表示出不同的分子结构:

都说社会是一个大熔炉,身处其中的人和事物之间会发生极其复杂的关系。这种关系的表示用普通的表格数据是很难表示的,而图却能很好的展现。

下图是将莎士比亚歌剧《奥赛罗》中的任务关系表示成图:

怎么样,如果没看过歌剧能推测出那些是主角吗?

下面是将一个空手道竞标赛的对战关系构建为图:

类似的可以表示为图的数据还有很多很多,比如论文的引用之类统统都可以表示为图,下面是现实世界中不同规模的数据图表示的统计数据:

可见,各种各样规模的数据都可以轻松的用图来表示。

在上面我们列举了这么多的图,那么我们该对这些图数据执行什么任务呢?

图上的预测任务一般分为三类:

下面我们通过具体的示例来说明GNN怎么来解决上述的三个级别的预测问题。

在图级别的任务中,我们的目标是预测整个图的属性。例如我们通过分子图,来预测该分子的气味或是者它是否是与某些疾病有关的受体。

它的输入是完整的图:

输出是图的分类:

节点级任务一般就是预测每个节点的类型。

一个经典的例子就是Zach的空手道俱乐部。该数据集市一个单一的社交网络图,犹豫政治分歧,讲师Hi先生和管理员John之间不和导致空手道俱乐部分裂,其中的学员一部分效忠于Hi先生,一部分效忠于John。每个节点代表空手道联系着,边代表空手道之外这些成员的互动,预测问题就是判断这些节点是效忠于谁的。

边级任务其实就是预测每个边的属性.

在目标检测的语义分割任务中,我们也许不止要识别每个目标的类型,还需要预测各个目标之间的关系.我们可以将其描述为边级别的分类任务:给定表示图像中的对象的节点,我们希望预测哪些节点共享一条边,或者该边的值是多少。如果我们希望发现实体之间的连接,我们可以考虑图是完全连通的,并根据它们的预测值修剪边来得到一个稀疏图。

用图表示就是这样的过程:

那么我们要如何使用神经网络来处理上述各种类型的任务呢?

首先要考虑的是如何将图结构数据适配到神经网络.

回想一下啊,传统的神经网络输入的往往是矩阵形式的数据,那么要如何把图作为输入呢?

图表示有四种类型的信息:节点(nodes),边(edges),全局上下文(global-context),联通性(connectivity).对于前三种信息,有一个非常简单的方案,比如将节点排序,然后每个节点表示为一个向量,所有节点就得到了一个节点的矩阵,同理,边和上下文也可以这么搞.

但是要标识连通性就没有这么简单了,也许你会想到用临街矩阵来表示,但是这样表示会有明显的缺陷,因为节点数的规模往往是巨大的,对于一个数百万节点的图,那将耗费大量的空间,而且得到的矩阵往往也十分的稀疏,可以说空间利用率会很低.

当然,你也许会想,可以用稀疏矩阵来存储,这样就只需要存储连通的情况,空间利用率将大大提升,但是我们还要考虑到一点,就是稀疏矩阵的高性能计算一直是个艰难的,尤其是在用到GPU的情况.

并且,使用邻接矩阵还有一个问题就是各种不同的邻接矩阵可以标识相同的连通性,而这些矩阵并不能保证在神经网络中取的相同的效果.比如,同样的连通性,通过调换列的顺序,就能得到不同的邻接矩阵:

现在,我们成功的将图结构成功表示成了置换不变的矩阵格式,终于可以使用图形神经网络(GNN)来做图形预测任务了。

GNN是对保持图对称性(置换不变性)的图的所有属性(节点、边、全局上下文)的可优化变换。

我们将使用Gilmer等人提出的“消息传递神经网络”框架构建GNN,并使用Battaglia等人介绍的图网络网络架构示意图。GNNS***用“图输入,图输出”架构,这意味着这些模型类型接受图作为输入,其中包含节点,边和全局上下文的信息,并逐步地转换这些图嵌入,而不会更改输入的连接图结构。

我们使用最开始提到的那个图来构建一个最简单的GNN,输入的图是相应节点,边,全局信息的向量,我们针对每个向量使用一个MLP层来作变换,于是得到一个新的图.

针对上述构建的最简单的GNN,我们如何在上面描述的任何任务中进行预测呢?这里我们仅仅考虑二进制分类的情况,但这个框架可以很容易地扩展到多类或回归的情况。

如果是对节点分类,我们只要在最后一层接一个线性类器就可以了:

但是上面的预测过程有点过于简单了,完全没有用到图的结构信息,我们在此基础上增加一个pooling操作,以增加它的边缘信息:

具体操作是把待预测节点的邻居节点以及全局的信息进行聚合再做预测,即将这些embedding向量加到一起得到一个新的向量,再输入到最后的线性分类器.

同理,如果我们只有节点相应边的信息的话,也可以用类似的方式pooling,然后得到节点的向量表示再输入分类器:

反之,如果我们只有节点的信息,那么也可以用边所连接的两个节点来pooling出边的向量,然后将器输入到分类器预测边的类型:

显然,不管是哪种任务,整个GNN的推理过程都是一样的,可以表示为这样一个端到端的过程:

不过,显而易见的,这个简单的GNN在分类前只是对每个向量进行了一个变换,而没有用到图结构的任何信息,虽然在最后做预测的时候做了一些pooling的聚合,但也始终没有用到adjacency的信息,因此这个GNN的作用相当有限,但是它为我们提供了一个图结构层变换和堆叠的基本思路.

针对上面最简单GNN的不足,我们可以在其中根据连通性增加更加复杂的变换从而引入整个图结构的信息,我们将这个过程称之为信息传递.

信息传递包含三个步骤:

这个过程有点类似于卷积操作,每个节点汇聚了其邻居的节点,经过多个层的变换,它将涵盖全图的信息.

于是我们可以将这个节点信息传递应用到上述的图变换过程中:

然后,我们发现它并没用用上边的信息,于是可以把边信息也加上,变成这样:

既然把边的信息加上了,那怎么可以漏掉全局信息呢,于是完整的信息传递就可以表示成这样:

以上,我们梳理了最简单的GNNs是怎么完成的,你应该已经对GNN有了一个基本的了解,就像学会了传统神经网络中最简单的全连接网络类似,关于GNN还有更多不同种类的更复杂的图需要取了解和学习,但你只要掌握了以上的思想,学习起来也是十分容易的.

图卷积神经网络的数学原理详解——笔记(更新中)

Image是Graph在欧式空间中的一种特例。Graph是相较于Image来说更加广义的一种拓扑结构。Graph由点和边组成它可以表示任意的事物与事物之间的关系。而Image是表示在欧式空间中的事物与事物之间的关系。我们可以根据Image来构建对应的Graph,将每一个像素作为节点,像素之间的关系作为边。

现实生活中能够建图的场景非常之多,社交关系,词汇搜索等等。

图神经网络就是专门用来处理图数据的神经网络架构。具体来说,会给定图的每个邻接矩阵和节点特征,通过将这两个输入进行某种图上的映射。从而得到每个节点下一层的特征。

图神经网络的聚合模式:

合理性:比如社交网络中我们想要获得某一个用户的特征,可以搜集与他相近的人的特征,他们会具有一定的相关性。(近朱者赤,近墨者黑)

许多GNN相关的模型其实都是在设计函数“ f ”

这里我们只讨论简单无向图(图无自环、无重边,边无方向)

公式中的 是邻接矩阵+单位矩阵,相当于给每一个节点添加一个自环。 是对角阵+单位阵。表示添加自环后每一个节点的度值。 代表了每一个节点的度的值。对于对角阵求幂,只要对对角线上的每一个元素求幂即可。

是可训练的参数,是对输入的feature进行线性变换。 是非线性的激活函数。

简单理解GCN在做什么:对图的邻接矩阵加了一个自环,做了对称归一化。然后用得到的结果对输入的特征进行聚合。每个节点都聚合到了自己和周边节点加权求和的feature信息。

研究与图的邻接矩阵相关的一些性质的领域。将线性代数研究矩阵性质限定在了研究图的邻接矩阵的范围内。谱图理论是线性代数的子领域。

对于一个矩阵 ,如果有 其中 为标量、 。就称 是 的特征向量, 是A的特征值。

如果一个矩阵是一个实对称阵,那么它一定有N个特征值,对应着N个互相正交的特征向量。

,其中 , 除了对角线上以外其他元素都是0。对角线上的元素都是一个特征值。

半正定矩阵就是所有的特征值都大于等于0。

给定一个矩阵A,左乘x转置,右乘x。 就称为向量x对矩阵A的二次型。

瑞利熵就是一个向量关于矩阵A的二次型与这个向量关于单位矩阵的二次型的比值 。

为什么需要研究瑞利熵:因为其与矩阵的特征值有着密切的联系。如我们***定 是矩阵A的一个特征向量,那么瑞利熵就是矩阵对应的特征值。

因此瑞利熵是我们研究特征值的重要手段。

是图的拉普拉斯矩阵, 。

是拉普拉斯矩阵的对称规范化, 。

与 都是实对称阵。因此他们都有N个特征值和N个互相正交的特征向量。可以分解为上述的 的形式。且这两个矩阵都是半正定的,其特征值都是大于等于0的。

一个更加强的性质: 不仅 而且 。

由上述证明我们得出 的瑞利熵是 的。因此 的特征值也是恒 的。

傅里叶变换其实就是“去研究同一个事物在不同的域之间不同的视角”是怎样的,以及在不同的域之间进行变换。

关于图神经网络基础讲解和图神经网络 基础与前沿的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

扫码二维码