【算法学习】图网络GNN

GNN是一种适用于图结构数据的神经网络模型,克服了CNN在非欧几里得数据上的限制。它通过节点间的信息传递学习图的依赖关系。GNN的变体包括图卷积网络、图注意力网络等,处理包括有向图、异构图、动态图在内的各种图结构。传播类型涉及卷积、注意力、门控和跳跃连接等机制。文章还讨论了GNN的局限性和优化方法。
摘要由CSDN通过智能技术生成

一、GNN

参考博客:图神经网络(GNN)模型原理及应用综述_<Running Snail>的博客-CSDN博客

历史缺陷

CNN的缺陷:

同:CNN核心特点——局部连接(local connection),权重共享(shared weights)和多层叠加(multi-layer);GNN同样适用,因为图结构是最典型的局部连接结构,其次,共享权重可以减少计算量,另外,多层结构是处理分级模式(hierarchical patterns)的关键

异:CNN只能在欧几里得数据(Euclideandata)【欧氏空间】,比如二维图片和一维文本数据上进行处理,而这些数据只是图结构的特例而已,对于一般的图结构,则很难使用。

图嵌入的缺陷:

图嵌入大致可以划分为三个类别矩阵分解、随机游走和深度学习方法。

1.节点编码中权重未共享,导致权重数量随着节点增多而线性增大

2.直接嵌入方法缺乏泛化能力,意味着无法处理动态图以及泛化到新的图

GNN简介

数据结构——图(节点(node)和边(edge))

GNN是一种连接模型,通过网络中节点之间的信息传递的方式来获取图中的依存关系,GNN通过从节点任意深度的邻居来更新该节点状态,这个状态能够表示状态信息。

GNN优点

1.节点

  • CNN和RNN等都需要节点的特征按照一定的顺序进行排列。
  • 但对于图结构,并没有天然的顺序。所以,GNN采用在每个节点上分别传播(propagate)的方式进行学习,由此忽略了节点的顺序,相当于GNN的输出会随着输入的不同而不同。

2.边

  • 传统的神经网络不是显式地表达中这种依存关系,而是通过不同节点特征来间接地表达节点之间的关系,这些依赖信息只是作为节点的特征。
  • GNN 可以通过图形结构进行传播,而不是将其作为节点特征的一部分,通过邻居节点的加权求和来更新节点的隐藏状态。

3.推理

  • GNN 探索从场景图片和故事文档等非结构性数据生成图形。

GNN分类

图卷积网络(Graph convolutional networks)和图注意力网络(graph attention networks),因为涉及到传播步骤(propagation step)。

图的空域网络(spatial-temporal networks),因为该模型通常用在动态图(dynamic graph)上。

图的自编码(auto-encoder),因为该模型通常使用无监督学习(unsupervised)的方式。

图生成网络(generative networks),因为是生成式网络。

GNN框架

GNN 的目的就是为每个节点学习到一个状态嵌入向量h_{v}\in{​{R}^{s}},这个向量包含每个节点的邻居节点的信息。 

 h_{v}表示节点的状态向量,这个向量可以用于产生输出o_{v} 。

在这里插入图片描述

假设 f ( ⋅ )是带有参数的函数,叫做局部转移函数(local transition function),这个函数在所有节点中共享,并根据邻居节点的输入来更新节点状态。

假设 g ( ⋅ ) 为局部输出函数(local output function),这个函数用于描述输出的产生方式。

使用目标信息来进行监督学习,p 表示监督节点的数目,t_{i}o_{i}分别表示节点的真实值和预测值。损失函数的学习基于梯度下降策略,由以下步骤组成:

  1. 状态h_{v}^{t}迭代更新个T轮次。
  2. 权重W的梯度从loss计算得到。
  3. 权重W根据上一步中计算的梯度更新。
     

GNN的局限性

  1. 对不动点使用迭代的方法来更新节点的隐藏状态,效率并不高。
  2. 原始的GNN 在迭代中使用相同的参数,而其他比较著名的模型在不同的网络层采用不同的参数来进行分层特征提取,使得模型能够学习到更加深的特征表达,而且,节点隐藏层的更新是顺序流程,可以利用 RNN 内核,如 GRU 和 LSTM,来进一步优化。
  3. 一些边(edge)上可能会存在某些信息特征不能被有效地考虑进去。(例如,知识图中的边具有关系类型,并且通过不同边的消息传播应根据其类型而不同)。此外,如何学习边的隐藏状态也是一个重要问题。
  4. 如果我们需要学习节点的向量表示而不是图的表示,则不适合使用固定点,因为固定点中的表示分布将在值上非常平滑并且用于区分每个节点的信息量较少。

二、GNN的变体

分为图类型、传播类型和训练方法

图类型(Graph Type)

原始的GNN输入的图结构包含带有标签信息的节点和无向边,这是最简单的图结构,但在现实生活中,存在多种图的变体👇,主要有有向图、异质图、带有边信息图和动态图:

image-20210204181303295

有向图(Directed Graphs)

图中的边是存在方向的。有向边可以带来比无向边更多的信息。

异构图(Heterogeneous Graphs)

图中存在多种类型的节点。处理异构图的最简单方法是将每个节点的类型转换为与原始特征连接的 One-hot 特征向量。(其中,论文《Deep Collective Classification in Heterogeneous Information Networks》提出将元路径(meta path)概念用在异质图的信息传播上,根据节点类型和距离来对局部范围内节点进行分组,对于每一组,Graph Inception将它作为异构图的一个子图,然后在子图内进行传播,并将不同异构图得到的结果进行连接得到综合的节点表示。)

带有边信息的图(Graphs with Edge Information)

图中的每条边也存在权重或类型等信息。这种类型的图有两种解决办法:

  • 将图形转化为二部图(bipartite graph),将原始的边转化为一个节点以及两条新的边(原始边也作为节点,两条新的边分别连接原始边的两端节点)。(论文G2S)
  • 在不同种类的边上,使用不同的权重矩阵来进行传播,就是说每一种边类型都关联一个权重矩阵,显然,对于边类型很多时参数量非常大。(论文R-GCN减少参数)

动态图(Dynamic Graphs)

动态图类型有静态的图结构,并且能够处理动态的输入信号。

  • DCRNN和STGCN首先使用GNN获空间结构信息,然后将outputs馈入到一个序列模型(如sequence-to-sequence或者CNN)
  • 与此相反的是,Structural-RNN和ST-GCN同时获取时间信息和空间信息

传播类型(Propagation Type)

传播(propagation):汇集从邻居节点和连接的边的信息,来对节点进行更新的过程,对于获取节点或者边的隐藏状态。

在传播步骤方面的改进主要有卷积、注意力机制、门机制和跳跃连接(skip connection),而在输出步骤通常遵循简单的前馈神经网络设置。

传播步骤主要的模型如下图👇

在这里插入图片描述

卷积(Convolution)

谱方法(Spectral Methods) 🆚非谱方法(Non-Spectral Methods)

Spectral Method ——使用谱分解的方法,应用图的拉普拉斯矩阵分解进行节点的信息收集。

Non-Spectral Methods ——使用图的拓扑结构,根据图的邻居信息进行信息收集。直接在图上定义卷积操作,也就是在空域上相邻的邻居节点上进行操作。

注意力机制(Attention)

图注意力网络(Graph Attention Network,GAT)将注意力机制应用在图中的信息收集阶段。

在很多基于序列任务(sequence-based tasks)比如机器翻译、机器阅读理解等等上都产生了非常好的效果。

门机制(Gate)

这些变体将门机制应用于节点更新阶段。目前在信息传播步骤中使用的⻔机制类似于GRU和LSTM模型,这种机制可以减小原始GNN模型的约束,并提升在图结构中的⻓期的信息传播。Gated graph neural network 将 GRU 机制应用于节点更新。 LSTM ,根据具体情境的不同,可以分为 Tree LSTM、Graph LSTM 和 Sentence LSTM 等。

跳跃连接(Skip connection)

多应用都会将图神经网络层进行叠加,来实现更好的结果,因为更多的层意味着每一个节点能够从更多的邻居节点中获取信息。但是,更深的模型反而可能表现更坏,主要因为随着指数个数上升的相邻节点数量,更多的层可能会汇集到更多的噪声信息。

很多工作将残差网络(residual network)应用于图神经网络中(但是,即使有残差网络,具有更多层的GCN在许多数据集上的性能不如2层GCN)。

分层池化(Hierarchical Pooling)

​​​​​​​计算机视觉中,一个卷积层后通常会接一个池化层,来得到更加一般的特征。类似的是,在图结构中,一种分层池化层也能够起到类似的效果,复杂的和大规模的图通常会包含丰富的分层结构,这种结构对于节点层次(node-level)和图层次(graph-level)的分类任务非常重要。

训练方法(Training Method)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值