所有文章 > 日积月累 > 图神经网络(GNN)的完整总结!

图神经网络(GNN)的完整总结!

神经网络由于其在处理非欧空间数据和复杂特征方面的优势,广泛应用在像推荐系统、知识图谱和交通道路分析。但是,图数据量大了以后,问题就来了,计算起来超级慢,内存也撑不住,而且分布式系统通信起来也很费劲。

在此,本文首先介绍了图神经网络如何传递信息,并阐述了常见的图神经网络模型及其在大数据下的挑战。文章总结了针对大数据的图神经网络算法,包括基于节点、边和子图的采样算法。此外,还介绍了图神经网络编程框架加速的相关进展,包括主流框架和优化技术。

本文内容组织如图2所示:

图2 本文内容组织

1 引言

图结构能描述复杂的关系,图计算能挖掘结构信息,但缺乏节点特征处理能力。神经网络擅长处理普通数据,但难以应对图数据。图神经网络结合了两者优点,能处理图数据并预测链接、推荐和分析交通等。然而,大规模图数据带来存储和计算挑战。

挑战主要来自四个方面:图数据结构不规则、稀疏、动态,节点邻居数量分布不均;节点特征维度高,增加计算和内存开销;数据规模庞大,导致内存不足和复杂的数据划分与迭代更新;硬件结构限制,难以满足灵活读取不规则数据和高效计算的需求。

为应对这些挑战,研究者提出各种策略。针对应用场景,提高处理效率;在算法模型方面,研究分批训练等解决内存问题;在编程框架方面,推出DGL、PyG等解决训练样本依赖;在硬件结构方面,结合CPU、GPU、FPGA等提出优化策略或专用加速结构。这些努力有助于更好地应对和缓解图神经网络在大数据应用中的挑战。

图1 GNN 整体框架图

表1是这篇文章的相关综述列表。其中,综述[29-32]主要关注的是图神经网络模型的全图训练模式以及它的应用。当图中的节点或边的数量变得非常大时,整个训练过程可能会受到单块GPU内存的限制。为了解决这个问题,我们有了采样算法。这些算法就像是拼图游戏的助手,让我们能够在分批次的情况下进行训练,处理大规模的数据,而不会让GPU的内存爆掉。这就像我们把一个大拼图游戏分成几个小部分,然后分别玩,最后再组合起来。

而图神经网络编程框架呢,它们结合了深度学习框架和图结构的特点,提高了存储的利用率和计算的效率,让我们能更方便地处理大规模的数据。这就像我们用一个更聪明的办法去玩拼图游戏,能更快地完成它。

综述[33-34]主要总结了图神经网络编程框架的发展情况。而综述[36-38]则更关注于分布式平台,它们分析了分布式GNN在算法模型、软件框架和硬件平台等方面的进步。这就像我们不仅在一张桌子上玩拼图游戏,还在多张桌子上同时玩,大家互相合作,一起完成这个巨大的拼图。

这篇文章研究了大规模图神经网络,主要从算法模型和框架优化两个方面进行了深入的了解、归纳和分析。首先,文章给大家普及了一下GNN的基础知识和一些常见的算法。然后,总结了不同粒度采样策略的图神经网络模型,还有主流加速框架以及相关的技术。这些都是为了给以后在大规模数据应用中,图神经网络在框架和算法上如何协同优化提供一些想法和方向。

2  图神经网络模型

图神经网络是专门处理图结构数据的神经网络,能结合图计算和神经网络的优势,将图结构信息抽象为节点特征。图计算模型擅长捕捉拓扑结构,但处理不了高维特征。传统神经网络处理的是欧氏空间数据,而图数据是非欧氏空间的,因此需要新的处理机制。

消息传播模式是图神经网络中流行的处理方式,包括邻居聚合和节点更新两个步骤,可获取节点的高阶邻居信息。

图神经网络的常见模型有:图卷积神经网络(GCN)、图注意力网络(GAT)、循环图神经网络(GGNN)和基于自编码器的图神经网络(SDNE)。这些模型在大规模数据训练中都会面临内存不足和邻居爆炸等问题。

GCN通过卷积操作实现邻居节点聚合,分为谱域和空间域两类。GAT引入注意力机制处理图数据,为每个节点分配不同权重。GGNN基于RNN处理图结构数据,针对时间演化图。SDNE应用自编码器学习节点表示,考虑节点间的相似性。

尽管存在挑战,但随着研究和探索的深入,相信未来会有更多解决方案出现。

(* 表示产生相关挑战的主要原因)

3  图神经网络采样算法

针对图神经网络在大规模数据训练中面临的挑战,已经开展了一些有意义的算法优化工作。大部分的工作都集中在数据的优化上,其中最主要的方法是使用不同粒度的采样算法实现分批训练。这些算法主要可以按照采样粒度分为以下三类:基于节点的采样算法、基于层的采样算法以及基于子图的采样算法。

3.1  基于节点的采样算法

GraphSage通过节点采样进行表示学习,优化模型参数。它随机采样目标节点的固定数目邻居,使用聚合函数进行特征聚合,并通过反向传播学习。这种方法实现了新数据表示,并将不规则图结构数据规则化,实现参数共享。

PinSage结合随机游走和图卷积操作,用于大规模推荐系统。它通过节点采样构建计算图,捕捉图结构特征,提高图卷积神经网络在大规模数据上的可扩展性。PinSage使用基于重要性的节点采样算法,利用随机游走策略评估节点重要性,并进行重要性加权。

VR-GCN是一种新的采样算法,解决了大规模图神经网络参数共享问题。它仅采样两个节点,利用历史激活节点减小方差,显著减小估计梯度的偏置和方差。这种方法大大减小了模型训练的时间和内存开销。

LGCL将图数据结构化以满足卷积操作要求,将不规则图结构数据转化为欧氏空间,便于利用CNN算法优化。然而,这种基于显著特征的重组方式可能破坏节点特征多样性,加剧节点表示过度平滑问题。

总结来说,GraphSage使用基于节点的采样算法,适应归纳式任务。PinSage使用基于重要性的采样算法,并进行重要性加权。VR-GCN关注采样算法的收敛性,减小梯度估计的偏置和方差。LGCL从特征粒度进行筛选重组为新的节点进行聚合。这些算法各具特色,解决了图神经网络中不同的问题。

图3 基于节点的采样算法

3.2  基于层的采样算法

FastGCN:将图卷积操作转化为概率分布积分,并用蒙特卡洛法估计,减少GCN大规模训练的时间和内存消耗。利用层级采样防止邻居节点爆炸,并结合重要性采样提升性能。

AS-GON:采用自适应层级采样,固定每层采样节点数来防止邻居节点爆炸。通过连接跳跃捕捉二阶相似性,传播高阶邻居特征,无需额外采样开销。

LADIES:新的采样算法,构建二分图计算重要性分数作为采样概率,迭代构建整个计算图以降低计算和内存开销。

总结:PastGCN通过层级采样避免邻居节点爆炸,但存在连接稀疏和冗余节点问题。AS-GCN保证收敛性并捕捉二阶关联性。LADIDS缓解邻居节点爆炸,但全局节点复用有限。

图4 基于层的采样算法

3.3  基于子图的采样算法

Cluster-GCN使用子图采样算法,通过Metis聚类算法将节点分为c块,转换邻接矩阵为对角矩阵A和B,然后将GCN函数分解到不同聚类中,以随机组合分块来减少遗漏和误差。在分批训练中,选择多个聚类分块作为训练数据。

RWT是逐层游走的训练策略,旨在减少Cluster-GCN的时间和空间开销。通过子图采样实现分批,综合考虑随机性和图结构连接性,逐层扩张采样并更新子图至达到阈值。RWT在GCN和GAT上验证有效。

GraphSAINT基于采样,先采样子图再构建网络模型,消除分批训练偏差,降低方差。它估计节点和边的采样概率,在每个训练批次中采样子图,构建完整GON模型进行训练。通过归一化消除偏差,用随机游走策略优化采样。Zeng等提出的GraphSAINT提高了精度,并提出了并行训练框架,提高程序并行性,减小通信开销。

SHADOW-GNN旨在解决大规模数据挑战和过度平滑问题。通过解耦节点接受区域与图神经网络深度,实现深层网络表达能力,同时避免过度平滑。它采用子图采样策略,形成不同子图,并在子图上应用任意深度的图神经网络模型。

总结:Cluster-GCN通过节点聚类提高利用率;RWT逐层扩张子图;GraphSAINT减小估计偏差与方差;SHADOW-GNN增强模型可拓展性,缓解过度平滑问题。

图5 基于子图的采样算法

Zeng等人在5个数据集上(表4)比较了4种采样算法在节点分类任务上的准确性性能对比结果如表 5所示,基于子图的采样算法在不同数据集上表现更好,micro E1指数更高且方差较小。GraphSage在数据集Flickr、Reddit、Yelp和Amazon上的节点分类准确性与基于子图的采样算法接近,但训练时间较长。

针对大规模数据训练中存在的挑战,本节总结了不同粒度的采样算法(如表6所示),如节点级、层级和子图级采样算法。这些算法在一定程度上缓解了大规模数据训练中存在的内存限制问题,增加了模型的可拓展性,并通过重要性采样、方差消减、随机组合等方式提高模型收敛性。然而,目前的采样算法主要基于静态的同构图进行优化,忽略了现实应用中图数据的异构性、动态性、幂律分布等复杂特征。

表 6 采样算法总结

4  图神经网络框架

神经网络计算过程涉及不规则访存和复杂特征计算,传统框架在图计算上性能较差。针对此问题,研究者提出面向图神经网络的编程框架并探索优化技术,为大规模图神经网络模型运行和优化奠定基础。

4.1  图神经网络编程框架

本节将对 Deep Graph Library、PyTorchGeometric、Graph-Learn 等主流的编程框架进行总结, 如表 7所示:

表7 图神经网络编程框架

4.2  框架相关优化技术

将图神经网络编程框架相关的优化技术按照其优化方面分为 5 个部分, 分别是数据划分、任务调度、并行执行、内存管理和其他方面, 总结如表8所示:

表8 图神经网络框架相关优化技术

5  总结与展望

图神经网络模型及其在大数据下的挑战

这篇文章先给我们介绍了四种常见的图神经网络模型,它们分别是图卷积神经网络、图注意力神经网络、图循环神经网络和基于自编码器的图神经网络。然后,文章分析了这些模型在处理大数据时面临的挑战,并把这些挑战分成了几类。接着,文章从算法模型和编程框架两个方面,对现有的研究进行了总结和分析。

先来说说算法模型。为了应对大数据在图神经网络训练中的挑战,很多优化工作都集中在采样算法上。根据采样的方式,文章把这些工作分成了三类:基于节点的采样、基于层的采样和基于子图的采样。对于每一类采样算法,文章都介绍了相关的模型,并进行了详细的分析。最后,文章做了一个全面的总结。

再来说说编程框架。文章列举了DGL、PyG等主流的编程框架,并把这些框架的优化技术分成了五类:数据划分、任务调度、并行执行、内存管理和其他方面。对于每一类优化技术,文章都简要介绍了其目标,并列举了一些具体的策略。最后,文章也做了一个全面的总结。

展望未来,文章总结了图神经网络在大数据优化方面的进展,包括模型优化和框架加速两个方面。接下来,我们将从这两个方面来展望未来的工作方向,具体可以参考图6。

图6 未来工作展望

本文章转载微信公众号@Python人工智能前沿