热门标签 | 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今年来的工作的总结,提出的问题也很具有参考性,是一篇非常棒的综述!





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


推荐阅读
  • 也就是|小窗_卷积的特征提取与参数计算
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了卷积的特征提取与参数计算相关的知识,希望对你有一定的参考价值。Dense和Conv2D根本区别在于,Den ... [详细]
  • 浏览器中的异常检测算法及其在深度学习中的应用
    本文介绍了在浏览器中进行异常检测的算法,包括统计学方法和机器学习方法,并探讨了异常检测在深度学习中的应用。异常检测在金融领域的信用卡欺诈、企业安全领域的非法入侵、IT运维中的设备维护时间点预测等方面具有广泛的应用。通过使用TensorFlow.js进行异常检测,可以实现对单变量和多变量异常的检测。统计学方法通过估计数据的分布概率来计算数据点的异常概率,而机器学习方法则通过训练数据来建立异常检测模型。 ... [详细]
  • 第四章高阶函数(参数传递、高阶函数、lambda表达式)(python进阶)的讲解和应用
    本文主要讲解了第四章高阶函数(参数传递、高阶函数、lambda表达式)的相关知识,包括函数参数传递机制和赋值机制、引用传递的概念和应用、默认参数的定义和使用等内容。同时介绍了高阶函数和lambda表达式的概念,并给出了一些实例代码进行演示。对于想要进一步提升python编程能力的读者来说,本文将是一个不错的学习资料。 ... [详细]
  • 本博文基于《Amalgamationofproteinsequence,structureandtextualinformationforimprovingprote ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • 本文介绍了腾讯最近开源的BERT推理模型TurboTransformers,该模型在推理速度上比PyTorch快1~4倍。TurboTransformers采用了分层设计的思想,通过简化问题和加速开发,实现了快速推理能力。同时,文章还探讨了PyTorch在中间层延迟和深度神经网络中存在的问题,并提出了合并计算的解决方案。 ... [详细]
  • Android自定义控件绘图篇之Paint函数大汇总
    本文介绍了Android自定义控件绘图篇中的Paint函数大汇总,包括重置画笔、设置颜色、设置透明度、设置样式、设置宽度、设置抗锯齿等功能。通过学习这些函数,可以更好地掌握Paint的用法。 ... [详细]
  • 抽空写了一个ICON图标的转换程序
    抽空写了一个ICON图标的转换程序,支持png\jpe\bmp格式到ico的转换。具体的程序就在下面,如果看的人多,过两天再把思路写一下。 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • FeatureRequestIsyourfeaturerequestrelatedtoaproblem?Please ... [详细]
  • Asp.net Mvc Framework 七 (Filter及其执行顺序) 的应用示例
    本文介绍了在Asp.net Mvc中应用Filter功能进行登录判断、用户权限控制、输出缓存、防盗链、防蜘蛛、本地化设置等操作的示例,并解释了Filter的执行顺序。通过示例代码,详细说明了如何使用Filter来实现这些功能。 ... [详细]
  • Python使用Pillow包生成验证码图片的方法
    本文介绍了使用Python中的Pillow包生成验证码图片的方法。通过随机生成数字和符号,并添加干扰象素,生成一幅验证码图片。需要配置好Python环境,并安装Pillow库。代码实现包括导入Pillow包和随机模块,定义随机生成字母、数字和字体颜色的函数。 ... [详细]
  • 花瓣|目标值_Compose 动画边学边做夏日彩虹
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Compose动画边学边做-夏日彩虹相关的知识,希望对你有一定的参考价值。引言Comp ... [详细]
  • JDK8新特性详细介绍[java入门]
    本文由java零基础入门栏目为大家介绍JDK8中的一些新特性,欢迎大家来纠错指正!JDK8中的新特性主要有:1、函数式编程;2、Lambda表达式;3、函数式接口;4、方法引用;5 ... [详细]
  • 【Mysql】九、Mysql高级篇 索引
    MYSQL索引一、什么是索引?二、索引数据结构1、mysql数据库的四种索引2、BTREE结构三、索引分类、创建索引、查看索引1、单值索引2、复合索引3、函数索引4、 ... [详细]
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社区 版权所有