热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

AComprehensiveSurveyonGraphNeuralNetwork

文章目录1.前言2.GNNs分类2.1RecGNNs2.2ConvGNNs2.3GAEs2.4STGNNs3.GNNs应用3.1ComputerVision3.2NaturalLa


文章目录

    • 1. 前言
    • 2. GNNs分类
      • 2.1 RecGNNs
      • 2.2 ConvGNNs
      • 2.3 GAEs
      • 2.4 STGNNs
    • 3. GNNs应用
      • 3.1 Computer Vision
      • 3.2 Natural Language Processing
      • 3.3 Traffic
      • 3.4 Recommender system
      • 3.5 Chemistry
      • 3.6 Others
    • 4. GNNs模型评估
    • 5. 常用数据集
    • 6. 未来发展方向
      • 6.1 Model Depth
      • 6.2 Scalability trade-off
      • 6.3 Hetergenity
      • 6.4 Dynamicity


  • 论文地址:https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9046288
  • 来源:IEEE Transactions on Neural Networks and Learning Systems, 2020
  • 作者:Zonghan Wu, Shirui Pan et.al
  • 关键词:Deep Learning, graph neural networks, graph convolutional networks, graph representation learning, graph autoencoders

1. 前言

该论文对今年来图神经网络的发展和应用进行了全面的总结,包括对最近的GNNs进行分类、GNNs在不同领域内的应用、开源的代码和基准数据集、GNNs的模型评估以及GNN未来可能的发展方向。


2. GNNs分类

该论文将GNNs分为四大类:recurrent gnns RecGNNs)、convolutional gnns(ConvGNNs)、graph autoencoders(GAEs)、spatial-temporal gnns(STGNNs)。


2.1 RecGNNs

大多是GNNs较为早期的工作,目的是通过循环的神经结构来学习结点/图的表征,结点间一轮一轮地交换信息就相当于循环地过程。\cite{li2015gated}就是其中的一种。RecGNN的结点表征更新如下:
hv(t)=∑u∈N(v)f(Xv,X(v,u)e,hu(t−1))\boldsymbol{h}^{(t)}_v = \sum_{u \in N(v)} f(\boldsymbol{X}_v, \boldsymbol{X}^{\boldsymbol{e}}_{(v,u)}, \boldsymbol{h}^{(t-1)}_u) hv(t)=uN(v)f(Xv,X(v,u)e,hu(t1))
其中fff是recurrent function,该函数应该是一个压缩映射(可以用NN来实现),能够将输入映射到一个更紧凑的空间中。本质上,RecGNNs是基于信息传播的模型的,通过一轮轮的传播来更新表征。


2.2 ConvGNNs

现在最常见的GNNs — 图卷积神经网络。ConvGNNs和RecGNNs很像,但是有一个很明显的区别 — ConvGNNs通过不同的层来完成结点之间信息的交换,且层所代表的映射可以不是压缩映射,且ConvGNNs的层一般都是不一样的,而RecGNNs中的fff通常都是同一个函数。二者的对比如下图所示。
在这里插入图片描述
在这四种GNNs中,ConvGNNs算是发展得最迅猛、相关工作最多的一类了。ConvGNNs又可以分为两类:Spectral-based ConvGNNs和Spatial-based ConvGNNs。

Spectral-based的方法从图信号处理的角度定义了图卷积。Spectral-based默认graph是无向的,spectral下的图卷积需要对图的Laplacian矩阵进行谱分解L=UΛUT\mathbf{L}=\mathbf{U} \Lambda \mathbf{U}^{T}L=UΛUT,对graph signal进行卷积需要进行\textit{graph Fourier transform},即F(x)=UTx\mathscr{F}(\mathbf{x})=\mathbf{U}^{T} \mathbf{x}F(x)=UTx,其中x\boldsymbol{x}x为输入的graph signal。图傅里叶变换能够将graph signal变换到由U\boldsymbol{U}U定义的正交空间中。那么给定一个filter(和图像处理领域的滤波器很像)g\boldsymbol{g}g,那么对一个graph signal的卷积定义如下:
x∗Gg=F−1(F(x)⊙F(g))=U(UTx⊙UTg)\begin{aligned} \mathbf{x} *_{G} \mathbf{g} &=\mathscr{F}^{-1}(\mathscr{F}(\mathbf{x}) \odot \mathscr{F}(\mathbf{g})) \\ &=\mathbf{U}\left(\mathbf{U}^{T} \mathbf{x} \odot \mathbf{U}^{T} \mathbf{g}\right) \end{aligned} xGg=F1(F(x)F(g))=U(UTxUTg)
那么Spectral CNN的定义如下,其中Θi,j(k)\Theta_{i, j}^{(k)}Θi,j(k)是需要学习的滤波器:
H:,j(k)=σ(∑i=1fk−1UΘi,j(k)UTH:,i(k−1))(j=1,2,⋯,fk)\mathbf{H}_{:, j}^{(k)}=\sigma\left(\sum_{i=1}^{f_{k-1}} \mathbf{U} \Theta_{i, j}^{(k)} \mathbf{U}^{T} \mathbf{H}_{:, i}^{(k-1)}\right) \quad\left(j=1,2, \cdots, f_{k}\right) H:,j(k)=σ(i=1fk1UΘi,j(k)UTH:,i(k1))(j=1,2,,fk)
spectral-based的图卷积有很坚实的数学基础,但也存在一些局限性:


  • 不同的结点排列会产生不同的谱分解 — 不是结点排列无关的
  • 学习到的滤波器是领域相关的 — 难以应用到其他领域
  • 矩阵分解计算复杂 — 难以应用到large scale graph上

Spatial-based即空域的图卷积,是目前的主流。空域的图卷积与图像中的CNN很像。过程:将邻居结点的信息汇聚后,再通过某个函数将结点自身的信息与汇聚后的邻居信息结合起来,与spectral-based的方法相比更直观。在空域卷积的基础上还诞生了图注意力网络 Graph Attention Network。与基础的空域卷积相比,结点与其邻居结点间的权重改由注意力替代。二者的比较如下图所示:
在这里插入图片描述
除了GAT还出现了与图像领域中类似的操作,如Graph Pooling,功能也与图像领域的池化操作类似 — 降低图的规模/从结点表征矩阵产生图表征(Readout)。


2.3 GAEs

图自编码器 — encoder将graph的结点映射到隐空间中,decoder将隐空间中的图还原/重建。GAEs可以用来学习结点的表征以及生成图。一个现有的GAEs的一个统计表如下图所示。
在这里插入图片描述
使用GAEs来生成图可以分为两类:Sequential — 逐步地增减结点/边,Global — 一次性生成整个graph。


2.4 STGNNs

时空地图神经网络,这种GNNs主要用在dynamic graphs上 — 捕捉时间序列地特征/分布,序列与graph的联合/边缘分布,graph在时间、空间上的关系。STGNNs的任务可以是预测预测结点的值/标签或者graph的便签 — 当然是结合时间的。常见的应用场景包括流式的图数据、交通数据(如交通中的流量、速度等数据)等。STGNNs目前主要由两个发展方向:RNN-based和CNN-based。

RNN-based方法会单独处理每一个时刻的图数据,并作为输入流入下一个时刻的处理步骤。有些方法会将结点和边分开来处理 — 分别输入RNN-based处理单元中。CNN-based方法以非循环的方式来处理,RNN-based和CNN-based有点像RecGNNs和ConvGNNs,CNN-based方法通过堆叠多层网络来处理dynamic graph。


3. GNNs应用


3.1 Computer Vision

包括场景图生成、点云数据分类、动作识别。在场景图中,GNNs可以帮助识别对象之间的语义关系,与之相反的是场景图的生成,将自然语言描述的场景生成为场景图。


3.2 Natural Language Processing

GNNs可以借助文本中句子/词之间的关系来对文本进行分类,除此之外,在NLP领域还有很多自然的grpah-like数据,如语法依存树。同时也可以基于语义图(semantic graph)来生成文本或者反过来。


3.3 Traffic

例如动态预测道路的可行驶速度、流量等,这通常与STGNNs联系起来。通常将交通网络看作时空图,其中的结点为安装在路上的传感器、边表示传感器之间的距离,这样每个结点在一定的时间区间内都有自己的流速。


3.4 Recommender system

Graph-based的推荐系统通常将用户、商品视作结点,通过利用结点之间的关系以及与相关的信息融合起来进行推荐。推荐系统的一个关键点:针对一个用户,给出每个商品对其的重要性排序/分数,这也可以转化为一个链接预测问题 — 预测用户和商品之间的链接。


3.5 Chemistry

在生物/化学/生物信息领域,通常利用GNNs来研究分子/化合物/药物的结构 — 这些东西也天然地具有graph结构。


3.6 Others

除了上述的几个主要的应用领域,还存在一些比较小众/还未广泛研究的领域,例如程序验证、程序推理、社会影响力预测、对抗攻击防御、异常检测、脑网络研究等。


4. GNNs模型评估

在GNNs中有几个主要的任务:结点分类、图分类、链接预测(我自己补充的)。


5. 常用数据集

常见的数据如下图所示:
在这里插入图片描述


6. 未来发展方向


6.1 Model Depth

就目前的情况来看,GNNs的模型都比较浅,与CNN模型动则数十层的模型相比,GNNs的模型层数都比较少。当GNN中层数较多时,基本上每个结点的信息都已经被传播到了图中其余的结点 — 通常图的最短路径会在6跳左右/六度分隔,这也导致当层数一多,图中结点的表征就会趋于一致,这反而使得结点的表征不具有区分性。\tbc{red}{如何加深GNNs或者什么情况下需要深度的GNNs是一个很值得研究的问题}。


6.2 Scalability trade-off

伸缩性权衡。GNNs的可伸缩性是以破坏图的完整性为代价的。在现有的GNNs中,通常会有ZPooling和Coarsening操作来降低节点特征的维度或者图的规模,但是这些操作都或多或少的丢失了一部分信息。如何设计一个破坏图数据完整性的GNN或者如何权衡完整性和可行性是一个很值得研究的问题。


6.3 Hetergenity

GNNs在异质图数据上的应用。目前大多数的GNNs处理的是同质的图数据 — 结点都为同一类型或者只有一种类型,边也只有一种类型,但是还有很多数据是异质的 — 结点/边的类型是多样的,以及结点/边的输入形式都是不一样的,例如结点/边为文本/图像等,这可以视作现在的多模态融合问题,相当于以GNNs来进行多模态数据融合。


6.4 Dynamicity

虽然已经有STGNNs来处理随时间变化的图数据,但是大部分都没有dynamic spatioal relations(这里我不太理解)。不过确实需要设计更好的处理动态的图数据、流式的图数据(流式的数据处理是一个很有意思的问题)。

这篇综述是2019年发表的,虽然在2020年已经出现了很多新的关于GNNs的工作,一些工作也与文中谈的一些问题重叠了,但是这篇综述依然是一片很全面、详细的对GNNs今年来的工作的总结,提出的问题也很具有参考性,是一篇非常棒的综述!





欢迎访问我的个人博客~~~


推荐阅读
  • 本文介绍了如何在iOS平台上使用GLSL着色器将YV12格式的视频帧数据转换为RGB格式,并展示了转换后的图像效果。通过详细的技术实现步骤和代码示例,读者可以轻松掌握这一过程,适用于需要进行视频处理的应用开发。 ... [详细]
  • 在JavaWeb开发中,文件上传是一个常见的需求。无论是通过表单还是其他方式上传文件,都必须使用POST请求。前端部分通常采用HTML表单来实现文件选择和提交功能。后端则利用Apache Commons FileUpload库来处理上传的文件,该库提供了强大的文件解析和存储能力,能够高效地处理各种文件类型。此外,为了提高系统的安全性和稳定性,还需要对上传文件的大小、格式等进行严格的校验和限制。 ... [详细]
  • 开机自启动的几种方式
    0x01快速自启动目录快速启动目录自启动方式源于Windows中的一个目录,这个目录一般叫启动或者Startup。位于该目录下的PE文件会在开机后进行自启动 ... [详细]
  • 在对WordPress Duplicator插件0.4.4版本的安全评估中,发现其存在跨站脚本(XSS)攻击漏洞。此漏洞可能被利用进行恶意操作,建议用户及时更新至最新版本以确保系统安全。测试方法仅限于安全研究和教学目的,使用时需自行承担风险。漏洞编号:HTB23162。 ... [详细]
  • 本指南从零开始介绍Scala编程语言的基础知识,重点讲解了Scala解释器REPL(读取-求值-打印-循环)的使用方法。REPL是Scala开发中的重要工具,能够帮助初学者快速理解和实践Scala的基本语法和特性。通过详细的示例和练习,读者将能够熟练掌握Scala的基础概念和编程技巧。 ... [详细]
  • 探索聚类分析中的K-Means与DBSCAN算法及其应用
    聚类分析是一种用于解决样本或特征分类问题的统计分析方法,也是数据挖掘领域的重要算法之一。本文主要探讨了K-Means和DBSCAN两种聚类算法的原理及其应用场景。K-Means算法通过迭代优化簇中心来实现数据点的划分,适用于球形分布的数据集;而DBSCAN算法则基于密度进行聚类,能够有效识别任意形状的簇,并且对噪声数据具有较好的鲁棒性。通过对这两种算法的对比分析,本文旨在为实际应用中选择合适的聚类方法提供参考。 ... [详细]
  • Android异步处理一:使用Thread+Handler实现非UI线程更新UI界面Android异步处理二:使用AsyncTask异步更新UI界面Android异步处理三:Handler+Loope ... [详细]
  • 自然语言处理(NLP)——LDA模型:对电商购物评论进行情感分析
    目录一、2020数学建模美赛C题简介需求评价内容提供数据二、解题思路三、LDA简介四、代码实现1.数据预处理1.1剔除无用信息1.1.1剔除掉不需要的列1.1.2找出无效评论并剔除 ... [详细]
  • 本文详细介绍了 Spark 中的弹性分布式数据集(RDD)及其常见的操作方法,包括 union、intersection、cartesian、subtract、join、cogroup 等转换操作,以及 count、collect、reduce、take、foreach、first、saveAsTextFile 等行动操作。 ... [详细]
  • 2020年9月15日,Oracle正式发布了最新的JDK 15版本。本次更新带来了许多新特性,包括隐藏类、EdDSA签名算法、模式匹配、记录类、封闭类和文本块等。 ... [详细]
  • 本文介绍了如何利用 `matplotlib` 库中的 `FuncAnimation` 类将 Python 中的动态图像保存为视频文件。通过详细解释 `FuncAnimation` 类的参数和方法,文章提供了多种实用技巧,帮助用户高效地生成高质量的动态图像视频。此外,还探讨了不同视频编码器的选择及其对输出文件质量的影响,为读者提供了全面的技术指导。 ... [详细]
  • C++ 异步编程中获取线程执行结果的方法与技巧及其在前端开发中的应用探讨
    本文探讨了C++异步编程中获取线程执行结果的方法与技巧,并深入分析了这些技术在前端开发中的应用。通过对比不同的异步编程模型,本文详细介绍了如何高效地处理多线程任务,确保程序的稳定性和性能。同时,文章还结合实际案例,展示了这些方法在前端异步编程中的具体实现和优化策略。 ... [详细]
  • 针对图像分类任务的训练方案进行了优化设计。通过引入PyTorch等深度学习框架,利用其丰富的工具包和模块,如 `torch.nn` 和 `torch.nn.functional`,提升了模型的训练效率和分类准确性。优化方案包括数据预处理、模型架构选择和损失函数的设计等方面,旨在提高图像分类任务的整体性能。 ... [详细]
  • 机器学习中的标准化缩放、最小-最大缩放及鲁棒缩放技术解析 ... [详细]
  • 通过使用CIFAR-10数据集,本文详细介绍了如何快速掌握Mixup数据增强技术,并展示了该方法在图像分类任务中的显著效果。实验结果表明,Mixup能够有效提高模型的泛化能力和分类精度,为图像识别领域的研究提供了有价值的参考。 ... [详细]
author-avatar
邹杂品_433
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有