我看的是专知上的中文版,没找到英语版,觉得我写的不好的同学,可以直接去专知上看,传送门如下:
http://www.zhuanzhi.ai/document/5929e0fefd33f99f6d5a22f1fcb7dd82
在读我写的东西的过程中,或许会发现我和专知上写的一样,原因是因为我是初学者,对于不理解的东西,会抄一遍,大概自己抄着抄着能加深理解。
引言
图是一种数据结构,它对一组对象(节点)以及其对应关系(边)进行建模(就是因为的结构吧)。
由于图结构的强大表现力(用机器学习方法分析图的研究越来越受到重视),并且其具有较好的性能和可解释性(GNN是一种基于深度学习的处理图域信息的方法),GNN 最近已成为一种广泛应用的图分析方法。
GNN第一个动机来自于CNN
CNN只能用于规则的欧式空间上(个人理解:因为CNN的filter和图像做卷积操作,要对有filter大小进行操作,因为filter是规则的,所以),如图1中猫的这一规则图片。
图1
当对于图2这种非欧式空间,CNN就失效,如何将CNN用于非欧式空间这一问题,成为GNN需要重点解决的问题。
图2
GNN第二个动机来住图嵌入(GE)
GE能够学习图中节点,边或者低维表示(我之前关注的GE都是低维表示,特别是GE在高光谱HSI上的应用,e.g. LFDA,SGDA,SLGDA,TLPP,MTLPP,TSLGDA;有关文章说的DeepWalk,LINE,SDNE都没了解过),DeepWalk、LINE、SDNE 等方法在网络表示学习领域取得了很大的成功。
然而,这些方法在计算上较为复杂并且在大规模上的图上并不是最优的,GNN 旨在解决这些问题。
这篇文章的贡献:
- 详细介绍了图神经网络的经典模型。主要包括其原始模型,不同的变体和几个通用框架;
- 将图神经网络的应用系统地归类为:结构化数据,非结构化数据,和其它场景中,并介绍了不同场景中的主要应用;
- 本文为未来的研究提出了四个未解决的问题。文章对每个问题进行了详细分析,并提出未来的研究方向。
模型
我发现这一模型部分专知上写的东西对与我这样的一个初学者来说,太不友好。。。
还是去找了原文看,原文地址:https://arxiv.org/pdf/1812.08434.pdf
- 在2.1节,介绍原始的GNN,别且会列出原始GNN在表示能力和训练效率上的限制;
- 在2.2节,介绍为了消除这些限制的GNN的变体,这些变体利用不同的传播函数和高级训练方法,在不同类型的图形上运行;
- 在2.3节,提出了三个一般框架,这可以概括和扩展几个方面的工作;三个框架分别是:message passing neural network(MPNN),non-local neural network(NLNN),graph network(GN)。
a. MPNN利用了不同地GNN和GCN(graph convolutionnetwork)方法;
b. NLNN利用了几种“self-attention”(自注意力)类型的方法;
c. GN概括了本文中提到的几乎所有图形神经网络变体。(这么牛逼的吗!!)
这篇文章的记号如下:
记号
GNN
GNN能够扩展现有的神经网络,用于处理图域中表示的数据。
在一个图中,每一个节点自然而然地能够被他的特征和它的相关节点表示。
GNN的目标是为了学习一个状态嵌入,能够包含每一个节点的邻居的信息!
其中是节点的维向量,并且能够用来产生一个输出,例如节点标签。
- 是一个叫做local transition function(局部过度函数??)的参数化函数,它能够根据输入的邻居在所有节点中分享并且更新节点状态。
- 是一个local output function(局部输出函数),能够描述输出是如何产生的。
定义如下:
其中,分别是是节点的特征,它边的特征,状态的特征,节点邻居节点的特征。
让分别是由所有状态,所有输出,所有特征,所有节点特征组合成的向量。
因此,我们有一个紧凑的形式:
其中,是global transition function,是global output function,公式中的H是固定点,并且假设是收缩图,是唯一定义的。
根据Banach的不动点定理,GNN使用以下经典迭代方案来计算状态:
对于任何初始值H(0),上面这个动力系统以指数方式快速收敛到之前的解。
注意,和中描述的计算可以被解释为前馈神经网络。
接下来的问题就是如何去学习参数。
损失函数:
其中,是监督节点的数目。
学习算法基于梯度下降策略,并由以下步骤组成:
- 状态根据其公式迭代更新,直到满足迭代次数;
- 权重是由损失函数计算;
- 根据在最后一步梯度的计算,权重被更新。
(到这一部分感觉还是懵懵懂懂的)
虽然实验结果表明GNN是一种用于建模结构数据的强大架构,但原始GNN仍然存在一些局限性。
限制:
- 对于固定点迭代地更新节点的隐藏状态是低效的;(如果松弛固定点的假设,我们可以设计一个多层GNN为了得到一个对节点和它邻居的一个稳定表示);
- GNN在迭代过程中使用了同样的参数;
- 有一些在边上的信息特征不能够被有限建模;
- 怎么学习隐藏边的状态也是一个问题;
- 用节点表示代替图,用固定点是不适合的,因为在固定点中表示的分布将是非常平滑的值并且用于区分每个节点的信息量较少。
(还是挺模糊的,去找找最先的提出GNN的文章看看,看完了接着来写)
GNN的变种
Graph Type
Graph Type(图表类型)(在不同的图表类型上操作变种,这些变种能够扩展GNN的表示数据能力)
在原始GNN中,输入图包含有标签信息的节点和无向边(这是最简单的图形式)。
将介绍一些为不同的图设计的方法。
Directed Graphs
第一个变种是有向图,显然有向图比无向图具有更多的信息。有向图里面有父类,子类,这说明我们应该不同地对待父类和子类的信息处理传递过程。
ADGPM用两类权重矩阵去合并更精确的结构信息。
传播规则如下:
网友评论