近年来,关于图神经网络的综述类文章出了很多,比如,《A Comprehensive survey on Graph Neural Networks》、《A Comprehensive survey on Graph Neural Networks》、《A Comprehensive survey on Graph Neural Networks》等,这篇关于图神经网络的分享也包含了部分上述文章中的内容,以及学习了中科院的沈老师的讲座以文章,所总结的一个技术分享,本人对图网络也是刚刚涉猎,不对的地方欢迎大家指点。
GNN是指图神经网络,目前我们最常用的GCN也就是图卷积神经网络,是GNN的一个分支,除了GCN,GNN还包括图注意网络(GAT)、图的自动编码器(GAE)、图的生成网络(GGN)和图时空网络(GSTN)等。
图神经网络最早是在2005提出的,最初是为了解决一些严格意义上的图论问题。
目前我们应用最广泛的GCN,在2013年,由Bruna(LeCun的学生)首次提出基于频域(Spectral-domain)和基于空域(Spatial-domain)的两种图卷积神经网络分类方法,但目前,最新的研究表明,实际基于频域的方法是一种特殊的空域方法。
GNN是通过迭代更新所有节点的隐藏状态来学习的,最初提出的GNN是具有一定的局限性的,最主要的两个缺陷是:
图是一种由若干个结点(Node)及连接两个结点的边(Edge)所构成的图形,用于刻画不同结点之间的关系。图是一种非欧空间,我们常用的图像是欧式空间,如下图所示;
尽管传统的卷积神经网络在文本和图像领域带来提升,但是它仅能处理欧氏空间数据。而同时,一种非欧空间数据:图数据,因其普遍存在性逐渐受到关注。不同于图像和文本数据,图数据中每个节点的局部结构各异,这使得平移不变性不再满足 。平移不变性的缺失给在图数据上定义卷积神经网络提出了挑战。
图卷积神经网络的构建所面临的挑战主要来源于以下几个方面:
现有的图卷积神经网络分为谱方法和空间方法两类:
谱方法利用图上卷积定理从谱域定义图卷积;
空间方法从节点域出发,通过定义聚合函数来聚合每个中心节点和其邻近节点。
(实际谱方法是空间方法的一个特例,是包含关系。)
本文仍还是按照谱方法和空间方法给大家介绍:
利用卷积定理,我们可以对谱空间的信号做乘法,再利用傅里叶逆变换将信号转换到原空间来实现图卷积,从而避免了图数据不满足平移不变性而造成的卷积定义困难问题。
因为图的结构不满足平移不变性,无法直接在空间域直接定义卷积,因此就把信号变换到频域,在频域实现卷积运算,在转换回空间域,这就是谱方法;
而空间方法就是直接在空间域定义卷积,面临的问题就是,因为每个节点的邻居大小不一样,所以无法定义一个大小一样的邻域,所以实现参数共享面临比较大的困难,但思想还是,卷积还是一个节点在邻居节点上的加权平均,所以后续很多方法旨在解决参数共享的问题。
卷积定理:
傅里叶逆变换:
基于傅里叶变换和逆变换,卷积定理,得到图卷积算子:
但最早提出的谱方法是具有一定的局限性的:
依赖于拉普拉斯变换的特征分解;
计算量大:
不是局部性的。
后来提出多个改进的谱方法,总结一下:
**切比雪夫网络(ChebyNet)**通过参数化卷积核实现局部性,同时降低参数复杂度和计算复杂度。**小波神经网络(GWNN)**提出用小波变换代替傅立叶变换实现卷积定理;
图热核网络(GraphHeat) 从滤波器的角度对谱方法进行分析,切比雪夫网络和一阶图卷积神经网络都是高通滤波器,但这与图半监督学习的任务中平滑性先验不一致,基于此,图热核网络利用热核函数参数化卷积核,进而实现低通滤波器;
基于个性化 PageRank 的图卷积神经网络(PPNP) 解耦维度变换和特征传播,对输入数据先完成较少层数的维度变换,然后基于个性化 PageRank 进行特征传播,特征传播过程不进行参数学习;
简明一阶图卷积神经网络(SGC) 抛弃层之间的非线性变换,将多个层的特征传播融合到一个层内,在完成特征传播后,SGC 对样本做一次维度变换。、
再简单介绍一下经典的谱方法GCN(对,就叫这个名,这里的GCN并不是泛指的图卷积神经网络,而是这个网络的提出就是GCN,这个方法是在前面所说的切比雪夫网络的基础上又进行了参数的近似所提出的,主要是来解决使用一阶近似简化计算的方法,提出了一种简单有效的层式传播方法。作者验证了图结构神经网络模型可用于快速可扩展式的处理图数据中节点半监督分类问题,作者通过在一些公有数据集上验证了自己的方法的效率和准确率能够媲美现有的顶级半监督方法。)
推广的图卷积形式:
上图是一个GCN网络示意图,输入有C维特征,输出有F维特征,中间有若干隐藏层,X是训练数据,Y是标签。右图是使用一个两层GCN在Cora数据集上(只是用了5%的标签)得到的可视化结果。
总结一下谱方法:
切比雪夫网络和一阶图卷积神经网络着眼于参数化卷积核,图热核网络着眼于低通滤波器,以上方法虽然是从谱空间出发,但其最终形式已经包含定义节点相关性的聚合函数。
从空间方法角度看,切比雪夫网络以拉普拉斯矩阵多项式作为聚合函数;
切比雪夫网络和一阶图卷积神经网络着眼于参数化卷积核,图热核网络着眼于低通滤波器,以上方法虽然是从谱空间出发,但其最终形式已经包含定义节点相关性的聚合函数。
从空间方法角度看,切比雪夫网络以拉普拉斯矩阵多项式作为聚合函数;
一阶卷积神经网络聚合函数为:
图热核网络聚合函数为:
以上方法可以看作是谱方法和空间方法的桥梁。
空间方法旨在从节点域出发,通过定义聚合函数来聚合每个中心节点和其邻近节点。如何实现参数共享?
切比雪夫网络和一阶图卷积网络可以看作以拉普拉斯矩阵或其变体作为聚合函数。
目前研究更多的,更主流的空间方法,空间方法的重点就是邻居节点的选择问题,而对于聚合函数,这个是有论文中所提出的不同聚合函数的能力比较,对比来说,均值聚合的能力大于最大值聚合的能力,小于求和聚合的能力。
空间方法的代表作,思路是:
将CNN迁移到图上来,但怎么解决平移不变性的问题?
将卷积操作分成三个步骤:
(1)选定节点后,确定邻域(需要平移不变性);
(2)给邻域节点编号;
(3)参数共享。
解决方法:
1.在图中随机采样若干个结点,结点数为传统任务中的batch_size。对于每个结点,随机选择固定数目的邻居结点(这里邻居不一定是一阶邻居,也可以是二阶邻居)构成进行卷积操作的图;
2.将邻居结点的信息通过aggregate函数聚合起来更新刚才采样的结点。
图注意力网络(GAT)
步骤:首先是如何确定每个节点对其不同邻居的权重,然后是如何将处理好的邻居特征与自身特征结合在一起。
图上池化算子主要用于图分类问题,目的是学习到图的层级结构。
第一类是图的粗化,图粗化,也就是下采样,图中多个节点的聚类,形成一个大的节点
第二类是节点的选择:定义节点重要性,选择部分节点作为代表
在计算机视觉中,图卷积神经网络的应用主要集中于少样本学习(Few-Shot Learning)、零样本学习(Zero-Shot Learning)、点云建模(Point Clouds)、场景图(Sence graph)等。
总的来说,在计算机视觉领域,人们在完成了包括物体识别,图片分类,语义分割后,计算机视觉更关注物体在少量样本,复杂语义情况下的建模和学习。在这些场景下,图是重要的数据结构,而图卷积神经网络是建模该图数据有效的方法。
大量的研究表明,在使用图卷积神经网络模型后,各项自然语言处理任务的结果都出现了一定的提升。图结构的使用,使得对象之间的复杂的语义关系得到了有效的挖掘。相比传统的对于自然语言处理的序列化建模,使用图卷积神经网络能够挖掘出非线性的复杂语义关系。
图卷积神经网络被认为能够很好的建模图的结构属性和节点特征信息,而推荐系统既可以被视为一个矩阵补全问题,也可以被是因为是二部图(用户和商品)的链接预测问题。相比传统的方法,图卷积神经网络能够更好的利用在推荐系统中普遍存在的用户属性和商品属性信息。
交通预测问题也是图卷积神经网络得到广泛应用的任务之一。其目的是在给定历史交通速度和路线图的情况下,预测未来的交通的速率。在交通预测问题中,如左图 所示,节点表示在道路中放置的传感器,而边则表示节点对的物理距离。每个节点包含一个时序的特征。
相比传统的图数据的研究,在生物化学领域,人们通常将一个化学结构或一个蛋白质视为一个图,图中的节点是更小的分子,边代表键或者相互作用。
研究人员关注于一个图的化学功能,即研究对象不再是图中的节点,而是整个图本身。
DGL (Deep Graph Library)框架是由纽约大学和 AWS 工程师共同开发的开源框架,旨在为大家提供一个在图上进行深度学习的工具,帮助大家更高效的实现算法。
DGL 是基于现有框架,帮助用户更容易实现图神经网络模型。黑色框都是已经实现的,灰色框是还未实现的计划之中的。DGL 现在主要是以消息传递的接口作为核心,同时提供图采样以及批量处理图的接口。
项目链接:https://github.com/dmlc/dgl
德国多特蒙德工业大学的研究者们提出了 PyTorch Geometric
PyTorch Geometric是基于PyTorch构建的深度学习库,用于处理不规则结构化输入数据(如图、点云、流形)。除了一般的图形数据结构和处理方法外,它还包含从关系学习到3D数据处理等领域中最新发布的多种方法。通过利用稀疏 GPU 加速、提供专用的 CUDA 内核以及为不同大小的输入样本引入高效的小批量处理,PyTorch Geometric 实现了很高的数据吞吐量。
PyTorch Geometric(PyG)库包含易用的小批量加载器(mini-batch loader)、多GPU支持、大量常见基准数据集和有用的变换,适用于任意图像、三维网格(3D mesh)和点云。
其作者Matthias Fey 和 Jan E. Lenssen 来自德国多特蒙德工业大学,他们通过实验证明了该库已实现方法在图分类、点云分类、半监督节点分类等任务上的性能。此外,PyG 速度奇快,大大超过其它深度图神经网络库。
项目链接 https://github.com/rusty1s/pytorch_geometric
虽然图卷积网络在近些年取得了成功,但仍然有些没有克服的问题和值得深入研究的方向:
深层的网络结构: GCN 的实验结果显示 ,当网络层数超过两层后,随着层数增加,GCN 在半监督节点分类问题上的效果反而会下降。同时随着网络的不断叠加,最终所有的节点会学到相同的表达。图神经网络是否需要深层的结构,或者说能否设计出一种深层的网络结构能避免过于平滑的问题,是一个迫切需要解决的研究问题;
大规模数据:在实际场景中,网络的规模往往非常大,比如新浪微博,Twitter 等社交关系网络,往往包含了数亿级的节点和边。而目前绝大部分的图卷积神经网络模型都不适用于这种大规模的网络;
多尺度的图上任务:图挖掘任务,根据主体对象的不同可以分成节点级的问题 ,图以及子图级的问题以及信号级的问题 。目前绝大部分的图卷积神经网络是针对节点级任务设计的,对于图级别和信号级别的任务关注较少。;
动态变化的图数据:在实际场景中,网络往往具有动态性。这种动态性包括不断随时间变换的节点与边上的特征,不断变换的网络的结构(有新的边,节点加入网络也有节点和边从网络中消失)。而目前的图卷积神经网络都是针对静态的网络设计的,因此设计能建模网络动态变化的图卷积神经网络也是未来的一个重要方向;
图数据的复杂特性:在实际场景中,网络的往往具有复杂的结构特性。例如节点的类型,边上的复杂特点,网络的社区结构等;
图神经网络上的对抗攻击:在图神经网络领域,利用节点自身的特征和网络结构构造对抗样本,以及设计能防御对抗攻击的图神经网络,都是未来发展的一个重要方向;
图神经网络的可解释性:如何可视化图神经网络学到的结构模式对于理解图神经网络的工作原理有重要意义。