近期,图神经网络 (GNN) 在各个行业越来越受到欢迎,包含社交网络、知识图谱、举荐系统,乃至生命科学。那什么是GNN呢?
名词解释
GNN是Graph Neural Network的简叫作,是用于学习包括海量连接的图的联结主义模型。当信息在图的节点之间传播时GNN会捉捕到图的独立性。与标准神经网络区别的是,GNN会保持一种状态,这个状态能够表率源自于人为指定的深度上的信息。
图神经网络处理的数据便是图,而图是一种非欧几里得数据。GNN的目的是学习到每一个节点的邻居的状态嵌入,这个状态嵌入是向量且能够用来产生输出,例如节点的标记。如下图,最后的目的便是学习到红框的H,因为H是选定,因此呢能够持续迭代直到H的值再也不改变即停止。
GNN的核心问题便是理解图怎么做傅里叶变换。CNN的核心操作是卷积,GNN亦是。CNN计算二维矩阵的卷积,GNN计算图的卷积。那样咱们定义好图的傅里叶变换和图的卷积就能够了,其媒介便是图的拉普拉斯矩阵。
GNN 在对图形中节点间的依赖关系进行建模方面能力强大,使得图分析关联的科研领域取得了突破性发展。
GNN便是一种在图域上操作的深度学习办法。
什么是图Graph
图是一种对节点和节点间关系建模的数据结构,是设备学习中独一的非欧几里得数据,图分析可用于节点归类、链接预测和聚类。
在计算机科学中,图是由于两个部件构成的一种数据结构:顶点 (vertices) 和边 (edges)。一个图 G 能够用它包括的顶点 V 和边 E 的集合来描述。
边能够是有向的或无向的,这取决于顶点之间是不是存在方向依赖关系。
一个有向的图 (wiki)
顶点一般亦被叫作为节点 (nodes)。在本文中,这两个术语是能够互换的。
图神经网络
图神经网络是一种直接在图结构上运行的神经网络。GNN 的一个典型应用是节点分类。本质上,图中的每一个节点都与一个标签关联联,咱们的目的是预测无 ground-truth 的节点的标签。
GNN的源自
CNN:CNN能够提取海量本地紧密特征并组合为高阶特征,但CNN只能够操作欧几里得数据。CNN的关键在于局部连接、权值共享、多层运用;
graph embedding:在低维向量上学习暗示图节点、边或子图。思想源于特征学习和单词嵌入,第1个图嵌入学习办法是DeepWalk,它把节点看做单词并在图上随机游走,并且在它们上面运用SkipGram模型;
基于以上两种思想,GNN会在图结构上聚合信息,因此呢能够对输入/输出的元素及元素间的独立性进行建模。GNN还能够同期运用RNN核对图上的扩散过程进行建模。
GNN的优良
标准神经网络(CNN、RNN)没法处理图输入无序性,由于它们将点的特征看做是特定的输入;
两点之间的边表率着独立信息,在标准神经网络中,这种信息被看做是点的信息,而GNN能够经过图结构来进行传播,而不是将其看做是特征;一般而言,GNN更新隐匿节点的状态,是经过近邻节点的权值和;
高级人工只能需要更高的可解释性;标准神经网络能够生成合成图像或文档,但没法生成图;GNN能够生成无结构的数据(多种应用:文字归类、神经设备翻译、关系提取、图像归类);
GNN不足
更新节点的隐匿状态是低效的;
在迭代中运用相同的参数,更新节点隐匿状态是时序的;
在边上有有些信息化的特征没法在原始GNN中建模;怎样学习边的隐匿状态亦是问题;
倘若咱们的目的是节点的暗示而不是图,运用固选定H是不合适的;
GNN改进&变种
对GNN的改进分为如下三种:
图类型改进;
传播过程改进;
训练办法改进;
图类型
原始GNN的输入图是带有标记信息的节点和无向边。以下是几种区别的图类型:
有向图:信息更紧密;
异质图:包括几种不同的节点,最简单的处理方式是one-hot feature vector;
带边信息的图:每一个边亦有信息、权值和类型,咱们能够将边亦变成节点,或当传播时在区别的边上运用区别的权重矩阵;
传播过程
对GNN而言,传播过程是非常重要的,它能够得到节点(边)的隐匿状态。传播过程运用的办法一般是区别的聚合函数(在每一个节点的邻居收集信息)和特定的更新函数(更新节点隐匿状态)。
卷积操作
在图上的卷积操作一般能够分为光谱办法和非光谱办法。
光谱办法:光谱办法在图的光谱暗示上运行,学习的过滤器是基于拉普拉斯特征权重的,因此呢与图的结构紧密关联,难以泛化;
非光谱办法:直接在图上定义卷积,对紧密相近的节点进行操作,重点的挑战便是非光谱办法在区别体积的邻居上的定义和保持CNN的局部变量,非光谱办法拥有点归类和图归类两种;
Gate闸门机制
在GNN中运用门限机制是为了减少限制并改善长时间的图结构上的信息传递。
Attention重视力机制
重视力机制已然成功的应用于基于时序的任务,例如设备翻译、设备阅读等。GAT在传播过程运用了重视力机制,会经过节点的邻居来计算节点的隐匿状态,经过自重视策略。
Skip connection
许多设备学习的应用都会运用多层神经网络,然而多层神经网络不必定更好,由于误差会逐层累积,最直接定位问题的办法,残差网络,是来自于计算机视觉。即使运用了残差网络,多层GCN依旧没法像2层GCN同样表现良好。
有一种办法是运用高速路GCN(Highway GCN),它像高速路网络同样运用逐层门限。
训练办法
原始的图神经网络在训练和优化过程有缺陷,它需要完整的图拉普拉斯,对大图而言计算力消耗大。更加多的,层L上的节点嵌入是递归计算的,经过嵌入它的所有L-1层的邻居。因此呢,单层节点是成倍增长的,因此呢对节点的计算消耗巨大。且GCN是对每一个固定图进行独立训练的,因此呢泛化能力欠好。
以下是几种改善方式:
GraphSAGE:
将全图拉普拉斯替换为可学习聚合函数,是运用信息传递并生长到未见节点的关键,GraphSAGE还运用了邻居采样来避免接收域爆炸;
FastGCN:
FastGCN对采样算法做了更深的改进,FastGCN为每层直接采样接受域,而非对每一个节点进行邻居采样;
control-variate based stochastic approximation:
运用节点的历史激励做为掌控随机数,此办法限制接受域为1跳邻居,但运用历史隐匿状态做为可接受最优化办法;
Co-Training GCN and Self-Training GCN:
用于处理GCN需要许多额外的有标记数据及卷积过滤器的局部特征的限制,因此呢运用了此办法来扩大训练数据集,Co-Training办法为训练数据找到近期的邻居,Self-Training则采用了类似boosting的办法。
框架
框架的目的是集合区别的模型。有论文提出message passing neural network(MPNN),能够同一化多种图神经网络和图卷积网络办法。non-local neural network(NLNN)则同一化了几个自重视办法。graph network(GN)统一了MPNN和NLNN还有其他的Interaction Networks,Neural Phsics Engine,CommNet, structure2vec,GGNN,Relation Network,Deep Sets和Point Net。
MPNN
MPNN是监督学习的框架,它抽象了几个最流行的用于处理图结构数据的模型的类似性。模型包含两个周期,信息传递周期和读出周期。
信息传递周期:
便是传播周期,会运行T次。是以信息传递函数和端点更新函数为定义的。
读出周期:
读出周期会运用读出函数来对全部图计算特征向量。
NLNN
NLNN是用来对深度神经网络的长范围的独立性。non-local操作源自于经典non-local mean操作在计算机视觉上的应用。non-local操作会在一个位置上计算响应,同期加权了的特征和在所有点上。这些位置能够是空间、时间或空间时间。因此呢NLNN能够看做是区别的自重视办法的统一。
通常的,non-local操作被如下定义:
non-local operation
其中,i是输出位置的索引,j指的是出所有可能位置的索引,f函数计算i和j之间的缩放值,这能够表率她们之间的联系,g函数表率了输入的变换以及公式的系数用于正则化结果。当运用区别的f和g函数时,将得到区别的non-local操作实例,最简单的g函数便是线性变换了。以下是有些可能选取的f函数:
Gaussian;
Embedded Gaussian;
Dot product;
Concatenation;
GN
首要是图的定义而后是GN块,核心GN计算单元,计算过程,最后是GN的基本设计原则。
Graph definition:
图被定义为三元组,(全局属性,节点集合,边集合);
GN block:
GN块包含三个更新函数和三个聚合函数;
Computation steps;
Design Principles:
GN的设计基于三个基本原则:
flexible representation
configurable within-block structure
composable multi-block architectures
GNN的应用场景
GNN的应用场景非常多,由于GNN是应用于图信息的,而多种多样的数据都能够划分为图数据。以下是GNN的应用场景:
文字归类;
神经网络翻译;
关系提取;
图归类;
…
在这儿咱们对GNN的应用进行简单的介绍,首要咱们将其划分为三种场景的应用:
结构化场景:数据有显著的联系结构;
非结构化场景:联系结构不显著,例如图像、文字等;
其他的应用场景:生成模型、组合最优化问题等;
GNN对我的启发
GNN是对图数据进行处理的深度学习神经网络,它能够实现对异构数据的学习与暗示,这儿的图数据与咱们一般所说的图是不同样的,这儿的图指的是数据结构中的那种图以及离散数学中图论,其中区别的节点暗示区别的信息。因此呢,图即表率实体及实体之间的联系。
在咱们的平常生活中,图是无处不在的。而图结构数据拥有必定的繁杂性,由于图结构的数据节点一般拥有是拥有区别的类型的,因此呢对普通的神经网络而言处理起来拥有必定的难度。
GNN最重要的两点便是:1. CNN 特征提取;2. graph embedding 降维操作,再经过有些神经网络必要的训练操作等,咱们就能够得到对图的大致暗示。而后就能够实现归类、回归等任务了。GNN亦需要防止过拟合和欠拟合,因为图数据一般过大,因此能够采用随机游走的方式,来获取图的特征。咱们还能对GNN进行什么改进以及应用呢?欢迎提出你的想法。
以上部分摘自CSDN博主「浮云若飞」的原创文案,原文链接: https://blog.csdn.net/qq_34911465/article/details/88524599
|