图神经网络(Graph Neural Networks)概述

MLtech
• 阅读 1607

论文:A Comprehensive Survey on Graph Neural Networks

一篇关于图神经网络的综述文章,着重介绍了图卷积神经网络(GCN),回顾了近些年的几个主要的图神经网络的的体系:图注意力网络、图自编码机、图生成网络、图时空网络。

1**、介绍**

传统的机器学习所用到的数据是欧氏空间(Euclidean Domain)的数据,欧氏空间下的数据最显著的特征就是有着规则的空间结构,比如图片是规则的正方形栅格,语音数据是一维序列,这些数据能够通过一维或二维的矩阵进行表示,进行卷积操作是则较为搞笑。同时,存在一个核心的假设:样本之间是相互独立的。

但是,在现实生活中许多数据都是不具备规则的空间结构,即是非欧氏空间下的数据,如电子交易、推荐系统等抽象出来的图谱,图谱中每个节点与其他节点的连接不是固定的。图神经网络可以对非欧氏空间的数据进行建模,捕获数据的内部依赖关系。图神经网络是不规则的、无序的。

2、图神经网络 VS 图嵌入

图嵌入:将图转换到保存图信息的低维空间,将图表示为或多组低维向量。图嵌入的输出是表示整个图或者部分图的低维向量。然后将输出的低维向量应用到其他机器学习方法中。

图神经网络(Graph Neural Networks)概述

3、图神经网络的分类

可以把图神经网络分为了五类:图卷积网络(Graph Convolutional Networks)、图注意力网络(Graph Attention Networks)、图自编码机(Graph Auto-encoder)、图生成网络(Graph Generative Networks)、图时空网络(Graph Spatial-Temporal Networks)。

图神经网络(Graph Neural Networks)概述

4、图卷积网络(Graph Convolutional Networks, GCN)

由传统的卷积神经网络引申出的图卷积网络,图卷积方法可分为两种,基于频谱的方法和基于空间的方法。基于频谱的方法,从图信号处理的角度,引入滤波器来定义图卷积,因此基于频谱的图卷积可理解为从图信号中去除噪声。基于空间的图卷积方法,通过汇集邻居节点的信息来构建图卷积。当图卷积在节点级运作时,可以将图池化模块和图卷积进行交错叠加,从而将图粗化为高级的子图。

4.1、**基于频谱的图卷积网络**

在该类图卷积方法中,图被假设为无向图,无向图可以通过正则化拉普拉斯矩阵进行表示,拉普拉斯矩阵是图的一种表示方式,其定义如下:

图神经网络(Graph Neural Networks)概述

其中D为图的度矩阵,是一个对角阵,W为图的邻接矩阵,标准拉普拉斯矩阵的表示如下:

图神经网络(Graph Neural Networks)概述

标准拉普拉斯矩阵是一个实对称半正定矩阵,因此可以被特征分解为:

图神经网络(Graph Neural Networks)概述

其中?是一个对角阵,对角线上的值为排序后的特征值,U为特征值对应的特征向量矩阵。拉普拉斯矩阵的特征向量构成了一个标准正交空间,因此:

图神经网络(Graph Neural Networks)概述

对于图中的每一个节点的特征向量x而言,对其做图傅里叶变换,将其映射的一个标准的正交空间里。

傅里叶变换:

图神经网络(Graph Neural Networks)概述

逆傅里叶变换:

图神经网络(Graph Neural Networks)概述

对于输入的信号x而言,其图卷积可以表示为:

图神经网络(Graph Neural Networks)概述

图神经网络(Graph Neural Networks)概述

表示哈达玛积,定义如下:

图神经网络(Graph Neural Networks)概述

因此,基于频谱的图卷积的关键在于滤波器的选择,也就是g的选择。

基于频谱的图卷积算法有:Spectral CNN、Chebyshev Spectral CNN (ChebNet)、First order of ChebNet、Adaptive Graph Convolution Network。

频谱卷积依赖于拉普拉斯矩阵的特征分解,有三个缺陷:

1、对于图的任何扰动都会使得特征值发生变化

2、所学到的滤波器是依赖于域的,所以不能拓展应用到不同结构的图中

3、特征分解的时间复杂度是N的三次方,因此对于数据量较大的图而言,计算非常耗时。

4.2、**基于空间的图卷积网络**

基于空间的图卷积网络模仿传统的卷积神经网络中的卷积运算,根据节点的空间关系定义图的卷积。对于图卷积而言,将图中的节点与其邻居节点进行聚合,得到该节点的新表示。为了探索节点接收域的深度与广度信息,通常将多个图卷积层叠加在一起,根绝卷积层的叠加方式的不同,可以将基于空间的图卷积划分为:基于递归的空间图卷积、基于合成的空间图卷积。基于递归的图卷积使用相同的图卷积层对图进行更新,基于组合的图卷积使用不同的卷积层对图进行更新。

图神经网络(Graph Neural Networks)概述

基于递归的空间图卷积网络主要思想是更新图节点的潜在表示直至到达稳定。通过对递归函数施加约束,使用门递归单元体系、异步地、随机地更新节点的潜在表示。基于组合的空间图卷积通过堆叠多个不同的图卷积层来更新节点的表示。基于递归的方法试图获得节点的稳定状态,基于组合的方法试图获取图中更高阶的邻域信息。

与传统的深度学习中的卷积核类似,在基于空间的图卷积中,图卷积算子的定义如下:

图神经网络(Graph Neural Networks)概述

h??表示节点?在?层特征信息

c??表示归一化因子,比如节点的度数

W?表示节点直接的权重

h??表示节点?在?层特征信息

图卷积的卷积操作有三步:

1、每个节点将自身的特征信息传递给邻居节点

2、每个节点将邻居节点及自身的特征信息进行汇集,对局部结构进行进行融合

3、与传统的深度学习中的激活函数类似,在图卷积我们同样要加入激活函数,对节点的信息做非线性变换,增强模型的表达能力

因此,图卷积网络的关键是学习到一个函数,将当前节点的特征信息与其邻居节点的特征信息进行汇集。

5、其他图神经网络

5.1、图注意力网络

与图卷积网络最大的不同是,图注意力网络引入了注意力机制,给与哪些较为重要的节点更大的权重。在端到端的框架中,注意力权重和神经网络参数共同被学习得到。下图展示了图卷积网络与图注意力网络在汇集邻居节点的信息时候的不同。在图卷积网络中,节点与节点之间的权重的计算方式如下:

图神经网络(Graph Neural Networks)概述

而在图注意力网络中,节点之间的权重是参数化的,在网络中学习得到,因此,更为重要的节点之间会被赋予更大的权重。

图神经网络(Graph Neural Networks)概述

5.2、图自编码机

是一种非监督学习框架,目标是通过编码机学习到低维的节点向量,然后通过解码机重构出图数据。图自编码机是一种常见的图嵌入方法,可以被应用到有属性信息的图中和无属性信息的图中。

5.3、图生成网络

目标是从数据中生成合理的结构?因为图是一种较为复杂的数据结构,所以要想从数据中生成指定经验分布的图是非常具有挑战性的。

5.4、图时空网络

时空网络图有区别于其他种类的图数据,在该图数据中,图不仅由V、E、A组成,增加了一个X属性,表示的是图在时间维度上的属性变化。

目标是从时空图中学习到不可见的一些模式,这在交通预测、人类的活动预测中变得越来越重要。比如,在道路交通网络就是一种时空图,图的数据在时间维度上是连续的,用图时空网络构建道路交通预测模型,我们就可以更加准确地预测出交通网络中的交通状态。

图时空网络的关键在于考虑同一时间下的空间与事物的关联关系。许多现在的方法使用GCN结合CNN或者RNN对这种依赖关系进行建模。

6、框架

在图神经网络,图的结构和节点的信息作为输出,根据不同的图分析任务,图的输出可分为以下几种

·节点级输出:该类输出和节点的回归和分类相关。因为图卷积网络会给出图数据节点的潜在表示,所以一般,在GCN的后面会增加感知层或者softmax层。

·边级输出:该类输出和边的分类和连接预测任务相关。为了能够预测一个边的连接强度,额外添加一个函数,以两个节点的潜在表示作为输入。

·图级输出:该类输出一般与图的分类任务相关。为了能够从一个图中获得一个更为紧凑的表示,一个池化层会被用于压缩一个图生成一张子图(部分节点和边会被移除)。

端到端的训练框架

·半监督学习**-**节点级分类任务:给定一个网络,在网络中,部分节点是有标签的,部分节点是无标签的。图卷积网络可以学习到一个鲁棒的模型,可以有效的识别出哪些没有标签的节点的类标签。在端到端的识别框架中,可以将若干个图卷积网络进行堆叠,然后最后跟一个softmax层完成多分类任务。

·有监督学习**-**图级分类任务:给定一个图数据集,图级的分类旨在预测整个图的类别标签。该任务可以通过结合图卷积网络和池化操作完成。通过图卷积网络,在每个单个的图中,每个节点可以得到一个固定长度的表示,然后对图中的所有节点的表示进行池化操作,我们可以得到一个图的简化表示。最后,添加一个线性层和softmax层,我们就可以构建出图分类的端到端学习框架。

图神经网络(Graph Neural Networks)概述

·无监督学习**-图嵌入:**如果在图中,没有有标签的数据可用的时候,我们可以通过纯粹的无监督的端到端学习框架学习到图的嵌入。这些算法主要以两种方式利用边的信息。一种是采用自编码机框架,编码机通过图卷积层将图嵌入到潜在的表示中,并在此基础上解码机对图进行重构。另外一种是采用负抽样法,对图中的部分节点进行抽样,作为负对,已存在的有连接的节点作为正对。然后在卷积层后面添加一个logistic回归层。

本文转自 https://blog.csdn.net/qq_32797059/article/details/90807397,如有侵权,请联系删除。

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Easter79 Easter79
2年前
swap空间的增减方法
(1)增大swap空间去激活swap交换区:swapoff v /dev/vg00/lvswap扩展交换lv:lvextend L 10G /dev/vg00/lvswap重新生成swap交换区:mkswap /dev/vg00/lvswap激活新生成的交换区:swapon v /dev/vg00/lvswap
Jacquelyn38 Jacquelyn38
2年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Wesley13 Wesley13
2年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
2年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
2年前
Android蓝牙连接汽车OBD设备
//设备连接public class BluetoothConnect implements Runnable {    private static final UUID CONNECT_UUID  UUID.fromString("0000110100001000800000805F9B34FB");
Stella981 Stella981
2年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
3个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这
MLtech
MLtech
Lv1
年年岁岁花相似,岁岁年年人不同。
文章
4
粉丝
1
获赞
1