图神经网络基础知识(神经网络图解)
本篇文章给大家谈谈图神经网络基础知识,以及神经网络图解对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
图神经网络是什么?
图神经网络是一种直接作用于图结构上的神经网络。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的。
一个更加强的性质: 不仅 而且 。
由上述证明我们得出 的瑞利熵是 的。因此 的特征值也是恒 的。
傅里叶变换其实就是“去研究同一个事物在不同的域之间不同的视角”是怎样的,以及在不同的域之间进行变换。
GNN——图网络相关知识整理
Due to its performance in non-euclidean spatial data, GNN methods are gradually ***ealing to the attention of researchers. Traditional deep neural networks take Euclidean-structured data as input, which is one of the reasons for its excellent performance in computer vision and other fields. However, in real life, there are many non-euclidean data, such as social network, retail network and biological network. In the field of brain neuroinformatics where the author focuses, one of the most commonly used methods of brain image ***ysis is voxel-based morphology, but different areas of the human brain are usually correlated and interacting, the brain network constructed based on which can reveal the higher-level brain activity mechani***. Similar to other topological network data, brain network is usually represented in the form of connection matrices, which cannot be directly vectorized and fed into machine learning models. However, the emergence of graph network ***ysis method breaks the deadlock.
得益于其在非欧几里得空间数据中的表现,图网络研究方***逐渐吸引着研究人员的关注。传统的深度神经网络将欧几里得空间结构化数据作为输入,这也是其在计算机视觉等领域有着优异表现的原因之一。但现实生活中往往存在着各种非欧几里得结构的数据,例如社交网络数据、零售网络数据以及生物网络数据等。以笔者所处的脑神经信息学领域来说,目前常用的脑神经影像分析手段都是基于体素的形态学分析,但人脑的不同区域往往存在着相互关联和影响,以此为基础构建出的脑网络往往能反映出更深层次的大脑活动机理。而正如其他网络拓扑结构数据,脑网络通常以连接矩阵的形式表示,无法通过直观的手段将其向量化,作为机器学习模型的输入。而图网络分析方法的出现打破了这种僵局。
Simply put, a graph is an abstract and irregular data structure that can be used to describe and model complex systems. Different from Euclidean spatial data, graphs in real world usually h***e complex topological structure and huge data size. Using traditional graph ***ysis methods would be difficult to achieve the same level of performance as ***lications of machine learning like computer vision, while existing machine learning algorithms cannot be ***lied to graph data straightforward. In view of this, how to combine machine learning with graph data ***ysis method, capture the interactions between data nodes in graphs and mine the information therein, has become a hot trend in the field of machine learning.
简单来说,图是一种抽象而不规则的数据结构,可以用于描述和建模复杂的系统。不同于欧几里得空间数据,现实中的图往往具有复杂的拓扑结构和庞大的数据量,传统的图分析方法难以实现与计算机视觉领域相当的应用水平和模型性能,而现有的机器学习算法不能直接应用于图数据中。鉴于此,如何将机器学习与图数据分析方法结合起来,捕捉图结构中数据之间的依赖关系,挖掘其中的信息,成为了机器学习领域的一股热潮。
Generally, before data is fed into machine learning algorithm models, it needs to be processed to extract valuable features, which can not only improve the quality of input data, but also greatly improve the reliability and performance of the model. This process is called feature engineering. Since the quality of feature engineering methods directly determines the performance of models, the research of data mining focuses on the handcrafted design and extraction of valuable features for specific data. For example, neuroimaging data often contains a lot of noise and has very high resolution, which is not suitable for direct input to machine learning models. Therefore, we preprocess the data and calculate the corresponding feature vectors, which are fed into the ***ysis model.
通常,在将数据输入到强大的机器学习算法模型中之前,需要将其进行一定的处理,提取出有价值的特征,这样不仅可以提高数据的质量,更能大大提升模型的可靠性和性能,这一处理过程被称作特征工程。正因为特征工程方法的好坏直接决定着模型的性能,数据挖掘的研究都将重心放在了针对特定的数据人工设计有价值的特征上。举例来说,神经影像数据通常作为包含着多种噪音,并且分辨率极高,不适合直接作为机器学习模型的输入。因此笔者将数据进行一定的预处理并计算出相应的特征向量,在输入到分析模型中。
Deep learning is essentially a kind of "feature engineering", or mostly called "feature learning". This is because the general idea of deep learning is to transform the original data into higher-level features through the nonlinear transformation model of neural network, and these features are usually a vector that can be used as the input of classifiers. The graph convolutional neural network mentioned in this section is a method that can represent the nodes and edges in the graph using feature vectors to serve as the input of high-performance machine learning algorithm model. This method of embedding graph nodes into low-dimensional Euclidean space is also called graph embedding method.
深度学习本质上就是一种“特征工程”,更多地被称为“特征学习”。这是由于深度学习的思想就是将原始数据通过神经网络这一非线性变换模型转变为更高层次的特征,而这些特征通常是一个向量,可以作为分类器的输入。本节提到的图卷积神经网络就是一种能够将图中的节点和边使用特征向量表示出来,以作为高性能机器学习算法模型的输入的方法,这种将图节点嵌入到低维欧几里得空间中的方法也称作图嵌入方法。
上面给出的是图卷积算子的计算公式,设中心节点为 , 是节点 在第 层的特征表达, 是归一化因子,如取节点度的倒数, 是节点 的邻节点,包含自身, 是节点 的类型, 表示 类型节点的变换权重参数, 表示激活函数。
According to problems in the field of neuro-informatics, the ***lication of graph neural network in which is mainly graph classification, namely after the construction of brain function network and features are added in the corresponding nodes, using GCN to learn the high-level features of brain networks, using full connection layer to extract vectorized features or directly using global ***erage pooling (GAP) to output the class confidence, which can be gender (e.g. Graph Saliency Maps through Spectral Convolutional Networks: ***lication to Sex Classification with Brain Connectivity ) or disease group. Currently open source deep learning frameworks based on graph mostly focus link classification and node classification, support for Graph Classification is relatively lacked, and pytorch_geometric is a Deep Learning framework supporting multiple GNN ***lications, including the support of this article, An End - to - End Deep Learning Architecture for Graph Classification , which makes it qualified to perform graph convolution operations and output feature vectors ready for learning and classification.
根据笔者所处研究领域的痛点,目前图神经网络在其中的应用主要为图分类,即在构建脑功能网络并在相应节点添加特征后,使用GCN对脑网络进行高层特征学习,使用全连接层提取向量化的特征或直接使用全局平均池化( GAP )输出类别置信度,这一类别可为性别(如: Graph Saliency Maps through Spectral Convolutional Networks: ***lication to Sex Classification with Brain Connectivity ),亦可为疾病。目前基于图的深度学习开源框架大多注重边分类和节点分类,对图分类的支持相对较少,而 pytorch_geometric 是一个支持多种图深度学习应用的框架,其中对 An End-to-End Deep Learning Architecture for Graph Classification 这篇文章的支持使其能够胜任图卷积操作并输出特征向量这一工作,以便之后对该特征进行学习和分类。
图神经网络是怎么炼成的: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还有更多不同种类的更复杂的图需要取了解和学习,但你只要掌握了以上的思想,学习起来也是十分容易的.
关于图神经网络基础知识和神经网络图解的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。