本章内容包括:
- 定义图和图神经网络
- 理解为什么人们对图神经网络如此兴奋
- 识别何时使用图神经网络
- 从整体上看待如何用图神经网络解决问题
对于数据从业者来说,机器学习和数据科学领域最初吸引我们的地方在于能够从数据中提取出非直观且有价值的见解。尤其是机器学习和深度学习带来的见解有望增强我们对世界的理解。对于在职工程师来说,这些工具承诺以前所未有的方式为业务创造价值。
然而,经验往往与理想有所偏差。现实世界中的数据通常是杂乱、脏乱和带有偏见的。此外,统计方法和学习系统本身也存在一定的局限性。从业者的一个重要角色就是理解这些局限,并弥合真实数据与可行解决方案之间的差距。例如,我们可能想要预测银行中的欺诈活动,但首先需要确保我们的训练数据被正确标记。更重要的是,我们还需要检查模型是否会错误地将欺诈行为归为正常行为,可能是由于数据中的某些隐性混杂因素。
对于图数据来说,直到最近,弥合这一差距尤其具有挑战性。图是一种信息丰富的数据结构,尤其擅长捕捉那些关系起着至关重要作用的数据的复杂性。图是无处不在的,关系数据以不同形式出现,例如分子中的原子(自然)、社交网络(社会)甚至是互联网网页的连接模型(技术)[1]。值得注意的是,这里的“关系”一词并非指关系型数据库,而是指关系具有重要意义的数据。
以前,如果你想将图中的关系特征融入深度学习模型中,必须通过间接的方式进行,使用不同的模型来处理、分析和使用图数据。这些独立的模型通常难以进行大规模扩展,并且无法充分考虑图数据中所有节点和边的属性。为了最好地利用这一丰富而普遍的数据类型进行机器学习,我们需要一种专门的机器学习技术,专门为图和关系数据的独特特性设计。这就是图神经网络(GNN)所填补的空白。
深度学习领域通常充满了关于新技术和方法的炒作。然而,GNN被广泛认为是图学习的一大飞跃[2]。这并不意味着GNN是万能的,应该对GNN与其他机器学习和深度学习方法得出的预测结果进行仔细比较。
要记住的关键点是,如果你的数据科学问题涉及可以构建为图的数据——即数据是连接的或具有关系的——那么GNN可能会提供一个有价值的方法,即使你没有意识到自己的方法中缺少了什么。GNN可以设计来处理非常大的数据,具备可扩展性,并能适应不同大小和形状的图。这使得处理关系为中心的数据更加容易和高效,同时产生更丰富的结果。
GNN的突出优势是数据科学家和工程师越来越认识到掌握它们的重要性。GNN能够从关系数据中揭示独特的见解——从识别新药候选物到优化Google Maps应用中的ETA预测精度——作为发现和创新的催化剂,帮助专业人士突破传统数据分析的边界。它们在多个领域具有广泛的应用,为专业人士提供了一个多用途的工具,既适用于电子商务(例如推荐引擎),也适用于生物信息学(例如药物毒性预测)。精通GNN使数据专业人士拥有一种多功能工具,能对图数据进行更深入、准确和创新的分析。
正因如此,GNN如今成为推荐引擎、社交网络分析、欺诈检测、理解生物分子行为等领域的热门选择,且我们将在本书的后续章节中遇到许多实际案例。
1.1 本书目标
《图神经网络实战》面向那些希望开始部署图神经网络(GNN)来解决实际问题的从业者。目标读者包括对图数据结构不熟悉的机器学习工程师、尚未尝试过GNN的数据科学家,甚至是对这两者都不熟悉的软件工程师。在本书中,我们将涵盖从图的基础知识到更复杂的GNN模型的内容。我们将一步步构建GNN的架构,内容包括GNN的总体架构和消息传递的关键部分。然后,我们将向这些基本部分添加不同的特性和扩展,例如引入卷积和采样、注意力机制、生成模型以及操作动态图。我们将使用Python编程,并结合一些标准库来构建我们的GNN。GNN库通常是独立的,或者使用TensorFlow或PyTorch作为后台。在本书中,重点将放在PyTorch Geometric(PyG)上。其他流行的库包括Deep Graph Library(DGL,独立库)和Spektral(使用Keras和TensorFlow作为后台)。Jraph是JAX用户的另一个选择。
本书的目标是帮助你:
- 评估GNN解决方案是否适合你的问题。
- 理解在图结构数据中,传统神经网络为何不如GNN有效,以及GNN在表格数据中可能不是最佳工具的情况。
- 设计并实现一个GNN架构,解决与你相关的具体问题。
- 清晰地了解GNN的局限性。
本书的内容侧重于编程实现。我们也会花一些时间介绍基本的理论和概念,以便能充分理解所涵盖的技术。这些内容会在大多数章节的“深入分析”部分进行讲解,将技术原因与实际实现区分开来。本书介绍的许多不同模型和包都基于我们在本书中介绍的关键概念。因此,本书不应视为对所有GNN方法和模型的全面回顾,因为这些内容可能涉及成千上万页,而是为那些充满好奇心、渴望学习的从业者提供的起点。
本书分为三个部分。第一部分涵盖了GNN的基础知识,尤其是它们与其他神经网络的不同之处,如消息传递和嵌入,这些在GNN中有特定的含义。第二部分是本书的核心,讨论了GNN模型本身,重点讲解几种关键模型类型。最后,在第三部分,我们将深入探讨一些更复杂的模型和概念,包括如何扩展图以及如何处理时间序列数据。
《图神经网络实战》旨在帮助人们迅速进入这一新领域并开始构建应用程序。我们本书的目标是通过填补空白和回答关键的开发问题来减少实现新技术的摩擦,这些问题的答案可能不容易找到,或者在其他地方根本没有涉及。每种方法都会通过示例应用程序进行介绍,让你了解GNN在实际中的应用。我们强烈建议你在阅读过程中亲自尝试代码。
1.1.1 图基础知识的回顾
是的,你确实需要理解图的基础知识,才能理解GNN。然而,我们本书的目标是向那些可能对图了解不多的深度学习从业者和传统神经网络构建者教授GNN。同时,我们也认识到,本书的读者在图的知识上可能差异很大。那么,如何处理这些差异,确保每个人都能充分利用本书?在本章中,我们提供了对理解GNN至关重要的基本图概念的介绍。如果你对图已经很熟悉,可以选择跳过这一部分,尽管我们建议你略读一下,因为我们会涉及一些特定的术语和用例,这对理解本书剩余部分非常有帮助。如果你对图有更多的问题,我们还在附录A中提供了有关基本图概念和术语的完整教程。这个入门指南也可以作为查阅特定概念的参考。
在回顾了图和图学习中的关键概念之后,我们将探讨几个成功应用GNN的案例研究。然后,我们将分析这些特定的案例,看看什么样的情况适合使用GNN,并了解如何判断自己是否面临GNN问题。在本章的最后,我们介绍GNN的基本机制,这是本书将进一步扩展的骨架部分。
1.2 基于图的学习
本节定义了图、基于图的学习以及GNN的一些基本概念,包括图的基本结构和不同类型图的分类。接着,我们将回顾基于图的学习,将GNN与其他学习方法进行比较。最后,我们将解释图的价值,并通过泰坦尼克号数据集的例子来说明。
1.2.1 什么是图?
图是一种数据结构,由元素组成,这些元素表示为节点或顶点,以及元素之间的关系,表示为边或连接,如图1.1所示。图中的所有节点都将包含额外的特征数据。这些是特定于节点的数据,涉及诸如社交网络中个人的姓名或年龄等信息。连接是关系数据的关键,因为它们使我们能够深入了解系统,提供新的数据分析工具,并从中预测新的属性。这与表格数据(如数据库表、数据框或电子表格)形成对比,在这些数据中,数据是固定在行和列中的。
为了描述并从节点之间的边中学习,我们需要一种方式来记录这些边。这可以通过显式地描述来实现,例如说明A节点与B和E相连,B节点与A、C、D和E相连。很快我们就会发现,这种描述方式变得笨重,而且可能会重复冗余的信息(例如A与B相连,B与A相连)。幸运的是,有许多数学形式化方法可以描述图中的关系。最常见的一种方法是描述邻接矩阵,我们在表1.1中列出了它。注意,邻接矩阵是沿对角线对称的,并且所有值都是1或0。
表1.1 简单图(图1.1)的邻接矩阵
| A | B | C | D | E | |
|---|---|---|---|---|---|
| A | 0 | 1 | 0 | 0 | 1 |
| B | 1 | 0 | 1 | 1 | 1 |
| C | 0 | 1 | 0 | 1 | 0 |
| D | 0 | 1 | 1 | 0 | 1 |
| E | 1 | 1 | 0 | 1 | 0 |
图的邻接矩阵是一个重要的概念,使得我们可以在一个表格中轻松地观察图的所有连接[3]。在这里,我们假设图中没有方向性;也就是说,如果0与1相连,那么1也与0相连。这被称为无向图。无向图可以很容易地从邻接矩阵推断出来,因为在这种情况下,矩阵在对角线处是对称的(例如,在表1.1中,右上三角形反射到左下三角形)。
我们还假设图中所有节点之间的关系是相同的。如果我们希望节点B–E的关系比节点B–A的关系更重要,那么我们可以增加这条边的权重。这意味着增加邻接矩阵中的值,例如将表1.1中B–A边的值从1改为10。
所有关系都同等重要的图称为无权图,并且也可以从邻接矩阵中轻松观察,因为所有图的条目要么是1,要么是0。如果边具有多个值,则称为加权图。
如果图中的任何节点没有与自身相连的边,那么这些节点在邻接矩阵中也会在其自己的位置上显示为0(对角线上的0)。这意味着该图没有自环。自环发生在一个节点有一条边连接到自身时。要添加自环,我们只需将该节点在对角线上的值设为非零即可。
在实际应用中,邻接矩阵只是描述图中关系的许多方法之一。其他方法包括邻接表、边列表或关联矩阵。深入理解这些数据结构对于基于图的学习至关重要。如果你不熟悉这些术语,或者需要复习,我们建议查阅附录A,其中有更多的细节和解释。
1.2.2 不同类型的图
理解不同类型的图有助于我们确定分析和转换图的方法,以及应用哪些机器学习方法。接下来,我们将简要概述一些最常见的图的属性。如前所述,我们建议你查阅附录A以获取更多信息。
同质图和异质图
最基本的图是同质图,它由一种类型的节点和一种类型的边组成。考虑一个描述招聘网络的同质图。在这种类型的图中,节点代表求职候选人,边则代表候选人之间的关系。
如果我们希望扩展图的功能来描述我们的招聘网络,我们可以为其添加更多类型的节点和边,从而将其变为异质图。通过这种扩展,某些节点可能代表候选人,其他节点可能代表公司。边则可以表示候选人与公司之间的关系,或者候选人在公司中的当前或过去的工作经历。图1.2展示了同质图(所有节点或边具有相同的颜色阴影)与异质图(节点和边具有多种阴影)之间的对比。
二分图
与异质图类似,二分图也可以被划分或分割成不同的子集。然而,二分图(图1.3)具有非常特定的网络结构,即每个子集中的节点只与另一个子集中的节点相连,而不会与自己子集中的节点相连。稍后,我们将讨论推荐系统和Pinterest图。这个图是二分图,因为一组节点(钉子)连接到另一组节点(板块),但不会与同一组中的节点(钉子)相连。
循环图、无环图和有向无环图
如果一个图允许你从一个节点出发,沿着它的边走,并且在不重复任何步骤的情况下返回到起始节点,从而在图中形成一个闭环路径,那么这个图就是循环图。与此相对,在无环图中,无论你从哪个起始节点出发,都无法在不回溯的情况下返回到起点。这些图,如图1.4所示,通常呈现类似树状结构或路径的形式,且不会自我循环。
虽然循环图和无环图都可以是无向图或有向图,但有向无环图(DAG)是一种特定类型的无环图,它是完全有向的。在DAG中,所有的边都有方向,且不允许存在环路。DAG表示单向关系,你不能沿着箭头走回到起点。这一特性使得DAG在因果分析中至关重要,因为它们反映了因果结构,在这种结构中因果关系被假设为单向的。例如,A可以引起B,但B不能同时引起A。这种单向性与DAG的结构完全契合,使其在建模工作流过程、依赖链和各种领域中的因果关系时非常理想。
知识图谱
知识图谱是一种特殊类型的异质图,它表示具有丰富语义意义的数据,不仅捕捉不同实体之间的关系,还反映这些关系的上下文和性质。与传统图主要强调结构和连接性不同,知识图谱融合了元数据,并遵循特定的模式,以提供更深层次的上下文信息。这使得知识图谱具有高级推理和查询能力,例如识别模式、发现特定类型的连接,或推断新的关系。
以大学中的学术研究网络为例,知识图谱可能表示各种实体,如教授、学生、论文和研究课题,并明确定义它们之间的关系。例如,教授和学生可以通过“作者”关系与论文相关联,而教授还可能监督学生。此外,图谱还会反映层级结构,例如教授和学生可以按照部门进行分类。你可以在图1.5中看到这个知识图谱的示意图。
知识图谱的一个关键特点是它们能够提供明确的上下文。与传统的异质图不同,后者仅展示不同类型的实体及其基本连接,而没有详细的语义意义,知识图谱通过定义关系的特定类型和意义,进一步扩展了这一点。例如,传统图可能显示教授与部门之间的连接,或学生与论文之间的关联,而知识图谱则会明确指出教授监督学生,或学生与教授共同写作论文。这一附加的语义层次使得查询和分析更为强大,特别是在自然语言处理、推荐系统和学术研究分析等领域,知识图谱显得尤为宝贵。
超图
超图是工作中较为复杂且难以处理的图之一。超图是指一个单一的边可以连接多个不同的节点。在非超图的图中,边用来连接恰好两个节点(或者连接一个节点到自身,形成自环)。如图1.6所示,超图中的边可以连接任意数量的节点。超图的复杂性体现在其邻接数据上。对于典型的图,网络连接性通过二维邻接矩阵表示。而在超图中,邻接矩阵扩展为一个更高维的张量,称为关联张量。这个张量是N维的,其中N是由单一边连接的最大节点数。超图的一个例子可能是一个通信平台,既允许群聊,也允许单人对话。在普通图中,边只连接两个人,而在超图中,一条超边可以连接多个人,表示一个群聊。
1.2.3 基于图的学习
正如我们在本章后续部分将看到的那样,图在我们日常生活中无处不在。基于图的学习将图作为输入数据,构建模型以洞察与这些数据相关的问题。本章后面,我们将探讨不同类型的图数据,以及我们可以利用基于图的学习来解答的问题和任务。
基于图的学习使用多种机器学习方法来构建图的表示。这些表示随后被用于下游任务,如节点或链接预测或图分类。在第二章中,你将学习基于图的学习中的一个基本工具——构建嵌入。简而言之,嵌入是低维向量表示。我们可以为不同的节点、边或整个图构建嵌入,并且有多种方法可以做到这一点,例如Node2Vec(N2V)或DeepWalk算法。
图数据的分析方法已经存在很长时间,至少可以追溯到1950年代,当时的团体方法使用图的某些特征来识别图数据中的子集或社区[4]。
最著名的基于图的算法之一是PageRank,它由Larry Page和Sergey Brin于1996年开发,成为Google搜索算法的基础。有些人认为,这一算法是公司在随后的几年里迅速崛起的关键因素。这突显了一个成功的基于图的学习算法可以产生巨大的影响。
这些方法只是基于图的学习和分析技术的一小部分。其他技术还包括信念传播[5]、图核方法[6]、标签传播[7]和同构图[8]。然而,在本书中,我们将重点讨论基于图的学习技术家族中最新且最令人兴奋的一个成员:GNN。
1.2.4 什么是GNN?
GNN将基于图的学习与深度学习相结合。这意味着神经网络用于构建嵌入并处理关系数据。图1.7展示了GNN的内部工作原理。
GNN使你能够表示和从图中学习,包括其组成节点、边和特征。特别是,许多GNN方法是专门设计来有效扩展以应对图的规模和复杂性的。这意味着GNN可以处理巨大的图,正如我们将要讨论的那样。从这个角度看,GNN为关系数据提供的优势类似于卷积神经网络为基于图像的数据和计算机视觉领域提供的优势。
历史上,将传统机器学习方法应用于图数据结构一直是一个挑战,因为当图数据以网格状格式和数据结构表示时,可能会导致大量的数据重复。为了解决这个问题,基于图的学习专注于那些具有置换不变性的方式。这意味着机器学习方法不会受到图表示顺序的影响。具体来说,这意味着我们可以打乱邻接矩阵的行和列,而不会影响算法的表现。每当我们处理包含关系数据的数据时,也就是说,具有邻接矩阵的数据,我们就希望使用一种具有置换不变性的机器学习方法,以使我们的方法更加通用和高效。尽管GNN可以应用于所有图数据,但GNN特别有用,因为它们可以处理巨大的图数据集,并且通常比其他机器学习方法表现更好。
置换不变性是一种归纳偏差,或算法的学习偏差,是设计机器学习算法的强大工具[1]。置换不变性方法的需求是基于图的学习近年来流行的一个重要原因。
设计用于置换不变数据有其优势,也带来了一些缺点。GNN不太适合其他类型的数据,如图像或表格。虽然这可能显而易见,但图像和表格不是置换不变的,因此不适合GNN。如果我们打乱图像的行和列,就会破坏输入。相反,图像的机器学习算法寻求平移不变性,这意味着我们可以平移(移动)图像中的物体,这不会影响算法的表现。其他神经网络,如卷积神经网络(CNN),通常在图像处理上表现得更好。
1.2.5 表格数据与图数据的区别
图数据包括所有具有某些关系内容的数据,是表示复杂连接的一种强大方式。虽然图数据最初可能看起来与传统的表格数据不同,但许多通常以表格形式表示的数据可以通过一些数据工程和创意转化为图数据。让我们仔细看一下泰坦尼克号数据集,这是一种机器学习中的经典示例,并探讨如何将其从表格格式转换为图格式。
泰坦尼克号数据集描述了泰坦尼克号上的乘客,这艘船因撞上冰山而以悲剧性的方式结束。历史上,这个数据集以表格格式进行分析,表格包含每个乘客的行,列表示特征,如年龄、性别、票价、舱位和生存状态。然而,该数据集还包含丰富的、尚未探索的关系,这些关系在表格格式中并不直接显现,如图1.8所示。
将泰坦尼克号数据集重构为图形
为了将泰坦尼克号数据集转化为图形,我们需要考虑如何将乘客之间的潜在关系表示为节点和边:
节点——在图中,每个乘客可以表示为一个节点。我们还可以为其他实体引入节点,例如舱位、家庭,甚至像“第三等舱乘客”这样的群体。 边——边表示这些节点之间的关系或连接。例如:
- 根据现有数据,乘客之间是家庭成员(兄弟姐妹、配偶、父母或子女)
- 共享同一舱房或一起旅行的乘客
- 可以从共享票号、姓氏或其他识别特征推断出的社会或商业关系
为了构建这个图形,我们需要使用表格中的现有信息,并可能通过二次数据源或假设来丰富这些信息(例如,通过链接姓氏来创建家庭组)。这一过程将表格数据转换为基于图形的结构,如图1.9所示,在其中每一条边和每个节点都封装了有意义的关系数据。
图数据如何增加深度和意义
一旦数据集被表示为图形,它就能提供关于乘客之间社会和家庭关系的更深层次的视角。例如:
家庭关系——图形清楚地显示了某些乘客之间的关系(例如,父母、子女或兄弟姐妹)。这可以帮助我们理解生还模式,因为家庭成员在危机中的行为可能与单独旅行的乘客有所不同。 社交网络——除了家庭关系,图形还可以揭示更广泛的社交网络(例如,友谊或商业联系),这些可能是分析行为和结果时的重要因素。 社区洞察——图结构还允许使用社区检测算法来识别相关或连接的乘客群体,这可能揭示关于生还率、救援模式或其他行为的新见解。
图形表示通过明确连接关系增加了深度,这些关系在表格格式中可能不那么显而易见。例如,了解谁是与谁一起旅行的,谁共享了舱房,或者谁有社交或家庭联系,可以为生还率和乘客行为提供更多的背景。这对于节点预测等任务至关重要,在这些任务中,我们希望根据图中表示的关系预测属性或结果。
通过创建邻接矩阵或根据数据集中的关系定义图的边和节点,我们可以从简单的数据分析过渡到更复杂的基于图形的学习方法。
1.3 GNN应用:案例研究
正如我们所见,GNN(图神经网络)是为处理关系数据而设计的神经网络。与以往的基于图的学习方法相比,GNN提供了新的方式来转换和操作关系数据,它们更易于扩展且比传统方法更为准确。接下来,我们将讨论一些令人兴奋的GNN应用,从高层次了解这些模型如何解决现实世界中的问题。如果你想深入了解这些具体项目,书本末尾列出了相关论文的链接。
1.3.1 推荐引擎
企业图可以拥有数十亿个节点和数百亿条边。另一方面,许多GNN模型的基准测试是在包含不到一百万个节点的数据集上进行的。当将GNN应用于大型图时,必须对训练和推理算法以及存储技术进行调整。(你可以在第七章中了解更多关于GNN扩展的具体内容。)
GNN在行业中的一个最著名的应用是作为推荐引擎。例如,Pinterest是一个用于发现和分享图片及创意的社交媒体平台。Pinterest的用户有两个主要概念:创意的集合或类别,称为“板”(类似公告板);以及用户想要收藏的对象,称为“图钉”。图钉包括图片、视频和网站URL。一个专注于狗的用户板可能包含宠物照片、幼犬视频或与狗相关的网站链接。一个板的图钉并不是独占的;例如,一个贴到“狗”板上的宠物插图,也可以贴到“幼犬”板上,如图1.10所示。
截至目前,Pinterest拥有4亿活跃用户,每个用户可能已经固定了数十甚至数百个项目。Pinterest的一个重要目标是帮助用户通过推荐找到感兴趣的内容。这些推荐不仅应该考虑图像数据和用户标签,还应该从图钉和板之间的关系中获得洞察。
一种解释图钉和板之间关系的方式是将其视为一个二分图,这一点我们之前已经讨论过。对于Pinterest图,所有图钉都与板连接,但没有图钉连接到另一个图钉,也没有板连接到另一个板。图钉和板是两种节点类别。这些类别的成员可以与另一类别的成员相连接,但不能与同一类别的成员相连接。报道称,Pinterest图有30亿个节点和180亿条边。
PinSage,作为一种图卷积网络(GCN),是首次在企业系统中大规模应用的GNN之一[9]。它被用于Pinterest的推荐系统,以克服将图学习模型应用于大规模图形的过去挑战。与基准方法相比,该系统的测试显示,它提高了30%的用户参与度。具体来说,PinSage被用来预测哪些对象应被推荐并包含在用户的图形中。然而,GNN也可以用来预测一个对象是什么,例如,基于图中其余节点及其连接关系,判断它是否包含狗或山。我们将在第三章深入探讨GCN,其中PinSage是其一个扩展。
1.3.2 药物发现与分子科学
在化学和分子科学中,一个突出的问题是如何以通用、应用无关的方式表示分子,并推断分子之间(例如蛋白质)的可能接口。对于分子的表示,我们可以看到高中化学课上常见的分子图示与图形结构有相似之处,图中包含节点(原子)和边(原子键),如图1.11所示。
在某些情况下,将GNN应用于这些结构可以超越传统的“指纹”方法,用于确定分子的性质。传统方法包括由领域专家创建特征,以捕捉分子的性质,例如解读某些分子或原子的存在或缺失[10]。GNN通过数据驱动的学习方式生成新的特征,这些特征可以用来将某些分子以新的、意想不到的方式分组,甚至提出新的分子供合成。这对于预测某种化学物质是否有毒或是否安全使用,或者它是否具有可能影响疾病进展的下游效应至关重要。因此,GNN在药物发现领域表现出了极大的应用价值。
药物发现,尤其是对GNN来说,可以理解为一个图预测问题。图预测任务是需要学习和预测整个图的性质的任务。在药物发现中,目标是预测诸如毒性或治疗效果等性质(判别性任务),或者建议应该合成和测试的全新图(生成性任务)。为了建议这些新图,药物发现方法通常将GNN与其他生成模型结合使用,例如变分图自编码器(VGAEs),如图1.12所示。我们将在第五章中详细描述VGAEs,并展示如何使用这些模型预测分子。
1.3.3 机械推理
我们从非常小的年龄就开始形成对周围世界中力学和物理的基本直觉,而无需任何正式的学科训练。我们不需要写下一组方程来知道如何接住一个弹跳的球。我们甚至不需要在一个物理球的存在下,就能根据一系列弹跳球的快照,合理地预测球将最终停在哪里。
虽然这些问题对我们来说可能显得微不足道,但它们对许多物理行业至关重要,包括制造业和自动驾驶。例如,自动驾驶系统需要预测在由许多移动物体组成的交通场景中会发生什么。直到最近,这个任务通常被视为计算机视觉的问题。然而,最近的方法开始使用GNN[12]。这些基于GNN的方法表明,加入关系信息(例如肢体如何连接)可以使算法更准确地发展出关于人或动物如何移动的物理直觉,而且数据需求更少。
在图1.13中,我们给出了一个例子,展示如何将一个身体视为一个“机械”图。这些物理推理系统的输入图包含反映问题的元素。例如,在推理人体或动物身体时,一个图可以由表示肢体连接点的节点组成。对于自由物体系统,图的节点可以是单个物体,如弹跳的球。图的边则表示节点之间的物理关系(例如,重力、弹簧的弹性或刚性连接)。在这些输入的基础上,GNN学习在没有明确调用物理/力学法则的情况下预测一组物体的未来状态[13]。这些方法是一种边预测形式;也就是说,它们预测节点随时间如何连接。此外,这些模型必须是动态的,以考虑系统的时间演化。我们将在第六章中详细讨论这些问题。
1.4 何时使用GNN?
在我们探讨了GNN的实际应用后,接下来我们将识别一些使问题适合图形化解决方案的基本特征。虽然上一节的案例显然涉及到本来可以自然建模为图的数据,但至关重要的是要认识到,GNN也可以有效地应用于那些图的特征可能并不立刻显现的问题。
因此,除了简单地说GNN适用于图问题,本节将帮助你识别数据中可能受益于图形建模的模式和关系,即使这些关系并不立刻显现。基本上,识别GNN问题的标准有三种:隐式关系和相互依赖性、高维度和稀疏性、以及复杂的非局部交互。
1.4.1 隐式关系和相互依赖性
图是非常灵活的数据结构,可以建模各种关系。即使一个问题最初看起来不像是图形问题,甚至如果你的数据集是表格形式的,探索是否存在隐式的关系或相互依赖性并以图的方式显式表示是非常有益的。隐式关系是指数据中没有直接记录或显而易见的连接,但仍然在理解潜在模式和行为中起着重要作用。
关键指标
要判断你的问题是否受益于通过图来建模隐式关系,考虑数据集中实体之间是否存在隐藏或间接的连接。例如,在客户行为分析中,客户可能在一个包含购买记录、人口统计信息等细节的表格数据集中呈现为独立实体。然而,他们可能通过社交媒体影响、同伴推荐或共享购买模式互相连接,形成一个潜在的互动网络。
另一个指标是是否存在共享共同属性或活动但没有直接或文档化关系的实体。例如,在投资者的案例中,两个或更多投资者可能没有任何正式的关系,但他们可能经常在相似的条件下共同投资于同一家公司。这种共同投资的模式可能表明存在共享的策略或影响力。在这种情况下,可以创建一个图表示,其中节点表示单个投资者,当两个或多个投资者共同投资于同一公司时,节点之间就形成边。可以将投资规模、时机或投资的公司类型等附加属性添加到节点或边上,从而让GNN识别模式、趋势,甚至潜在的合作机会。
另外,考虑数据中是否包含通过共享引用或共现模式互联的实体。文档和文本数据可能不会立刻显示出图形结构,但如果文档之间相互引用或共享共同的话题或作者,它们可以作为图中的节点表示,边则反映这些关系。类似地,文档中的术语可以形成共现网络,这对于关键词提取、文档分类或主题建模等任务非常有用。
通过识别数据中的这些关键指标,你可以发现隐性或隐式的关系,并通过图显式表示这些关系。这种表示方式可以通过GNN进行更高级的分析,有效捕捉和建模这些关系,从而提高预测的准确性并深入了解数据。
1.4.2 高维度和稀疏性
基于图的模型在处理高维数据时尤其有效,尤其是当许多特征稀疏或缺失时。这些模型在连接稀疏实体的潜在结构中表现出色,从而允许更有意义的分析并提高性能。
关键指标
要判断你的问题是否涉及适合GNN的高维和稀疏数据,考虑数据集中是否包含许多实体,但它们之间的直接互动或关系有限。例如,在推荐系统中,用户-物品互动数据看起来可能是表格形式的,但实际上是稀疏的——大多数用户只与少量可用的物品互动。通过将用户和物品表示为节点,并将它们的互动(例如购买或点击)表示为边,GNN可以利用网络效应提供更准确的推荐。这些模型还可以通过揭示显性和隐性关系来解决冷启动问题,从而提高向用户推荐新物品或吸引新用户使用现有物品的效果。
另一个表明问题可能适合基于图的模型的指标是,数据表示的是那些连接稀疏但共享显著特征的实体。例如,在药物发现中,分子通常表示为图,原子为节点,化学键为边。这种表示方式捕捉了分子结构的固有稀疏性,大多数原子只形成几个键,分子的很大一部分可能在图中相距较远。传统的机器学习方法往往难以预测新分子的性质,因为它们没有考虑完整的结构上下文。
基于图的模型,特别是GNN,通过捕捉局部原子环境和全局分子结构来克服这些挑战。GNN从精细的原子交互到更广泛的分子特性中学习层次特征,并且它们对原子顺序保持不变的能力确保了预测的一致性。通过使用分子的图结构,GNN能够从稀疏的连接数据中做出准确的预测,从而加速药物发现过程。
通过在数据中识别这些关键指标,你可以确定适合基于图的模型有效处理的高维和稀疏数据的情况。将此类数据表示为图,使得GNN能够捕捉和利用潜在结构,从而在各种应用中提供更准确的预测和深入的洞察。
1.4.3 复杂的非局部交互
某些问题需要理解数据集中远离的元素如何相互影响。在这些情况下,GNN提供了一个框架来捕捉这些复杂的交互,其中某个数据点的预测值或标签不仅依赖于其直接邻居的特征,还依赖于其他相关数据点的特征。当关系超越直接连接,涉及多个级别或分离程度时,这种能力尤其有用。
然而,一些标准的GNN,主要依赖局部信息传递,可能难以有效捕捉长距离的依赖关系。更先进的架构或修改,例如那些结合了全局注意力、非局部聚合或分层信息传递的方法,能够更好地应对这些挑战[14]。
关键指标
要判断你的问题是否涉及适合GNN的复杂非局部交互,考虑以下问题:一个实体的结果或行为是否依赖于那些与其没有直接连接但通过其他实体间接连接的实体的属性或行为?例如,在供应链优化中,一个供应商的延迟不仅会影响其直接下游客户,还可能通过网络的多个层级级联传播,影响分销商和最终消费者。
另一个指标是问题是否涉及信息、影响或效应随着时间在网络中传播的场景。例如,在医疗保健和流行病学中,一次疾病爆发可能从一小群患者开始,通过他们与共享医疗提供者、共同环境或重叠社交网络的互动传播开来。这种传播需要一种方法来捕捉信息或效应的间接传播路径。
为了结束本节,在判断你的问题是否适合GNN时,问自己以下问题:
- 我的数据中是否有隐式关系或相互依赖性,我可以建模吗?
- 实体之间的交互是否表现出复杂的非局部依赖,超越了直接连接?
- 数据是否是高维且稀疏的,是否需要捕捉潜在的关系结构?
如果这些问题中的任何一个的答案是肯定的,那么可以考虑将问题框架化为图形,并应用GNN来解锁新的洞察和预测能力。
1.5 理解GNN的工作原理
在本节中,我们将探讨GNN的工作原理,从最初的原始数据收集到最终部署训练好的模型。我们将检查每个步骤,重点介绍数据处理、模型构建和独特的消息传递技术,这些是GNN与传统深度学习模型的不同之处。
1.5.1 训练GNN的思维模型
我们的思维模型涵盖了数据来源、图表示、预处理和模型开发的工作流程。我们从原始数据开始,最终得到一个训练好的GNN模型及其输出。图1.14展示并可视化了与这些阶段相关的主题,并标注了这些主题出现的章节。
虽然并非所有的工作流程都包含这个过程的每一个步骤或阶段,但大多数至少会包含一些元素。在模型开发项目的不同阶段,通常会使用这个过程的不同部分。例如,在训练模型时,可能需要进行数据分析和可视化以做出设计决策,但在部署模型时,可能只需要将原始数据流式传输并快速预处理,以便将其输入到模型中。虽然本书涉及到这个思维模型的早期阶段,但本书的重点是如何训练不同类型的GNN。当讨论其他主题时,它们是为了支持这个主要重点。
这个思维模型展示了将GNN应用于机器学习问题的核心任务,我们将在本书的其余部分反复回到这个过程。让我们从头到尾审视这个图示。
训练GNN的第一步是将原始数据构建为图格式,如果它还不是这种格式。这需要决定数据中哪些实体表示为节点和边,并确定分配给它们的特征。还必须做出关于数据存储的决定——是使用图数据库、处理系统还是其他格式。
对于机器学习,数据必须进行预处理以用于训练和推理,涉及任务如采样、批处理和将数据分为训练集、验证集和测试集。在本书中,我们使用PyTorch Geometric(PyG),它提供了用于预处理和数据拆分的专门类,同时保持图的结构。预处理在大多数章节中都有涉及,详细的解释可以在附录B中找到。
处理完数据后,我们可以开始模型训练。在本书中,我们介绍了几种架构和训练类型:
- 第二章和第三章讨论了卷积GNN,在这些章节中,我们首先使用GCN层来生成图嵌入(第二章),然后训练完整的GCN和GraphSAGE模型(第三章)。
- 第四章解释了图注意力网络(GATs),它在我们的GNN中加入了注意力机制。
- 第五章介绍了用于无监督和生成问题的GNN,在这些问题中,我们训练并使用变分图自编码器(VGAE)。
- 第六章探讨了时空GNN的高级概念,这些图随着时间的推移而演变。我们训练一个神经关系推理(NRI)模型,它结合了自编码器结构和递归神经网络。
至今为止,所有提到的GNN示例都通过代码示例进行了说明,使用的是可以在笔记本电脑或台式电脑内存中运行的小规模图。
在第七章中,我们深入探讨了处理超出单台机器处理能力的数据的策略。
在第八章中,我们总结了一些图形和GNN项目的注意事项,比如如何处理图形数据的实际问题,以及如何将非图形数据转换为图格式。
1.5.2 GNN模型的独特机制
尽管目前有多种GNN架构,但它们都通过一种排列不变的方式来处理图数据,解决相同的问题。它们通过在学习过程中对图结构进行编码和交换信息来实现这一点。
在传统的神经网络中,我们首先需要初始化一组参数和函数。这些包括层数、层的大小、学习率、损失函数、批处理大小和其他超参数。(这些都在其他深度学习书籍中有详细讨论,所以我们假设你对这些术语已经很熟悉。)一旦我们定义了这些特征,就可以通过迭代更新网络的权重来训练我们的网络,如图1.15所示。
具体来说,我们执行以下步骤:
- 输入我们的数据。
- 将数据通过神经网络层传递,网络层根据层的参数和激活规则转换数据。
- 从网络的最终层输出一个表示。
- 反向传播误差,并相应地调整参数。
- 重复这些步骤,固定次数的epoch(将数据前向和反向传递以训练神经网络的过程)。
对于表格数据,这些步骤与上述完全相同,如图1.16所示。对于基于图形或关系数据,这些步骤类似,只是每个epoch对应一次消息传递的迭代,这将在下一小节中描述。
1.5.3 消息传递
消息传递是本书中反复提到的一个核心机制,它使得节点能够在图中进行通信并共享信息[15]。这个过程使得GNN能够学习图结构数据的丰富、信息量大的表示,这对于节点分类、链接预测和图级预测等任务至关重要。图1.17展示了典型的消息传递层所涉及的步骤。
消息传递过程从输入(步骤1)初始图开始,在这个过程中,每个节点和边都有自己的特征。在收集步骤(步骤2)中,每个节点从其直接邻居那里收集信息——这些信息被称为“消息”。这个步骤确保每个节点能够访问其邻居的特征,这对于理解局部图结构至关重要。
接下来,在聚合步骤(步骤3)中,来自邻居节点的收集的消息通过一个不变的函数(如求和、均值或最大值)进行合并。这个聚合过程将节点邻域的信息整合成一个单一的向量,捕捉有关其局部环境的最相关的细节。
在转换步骤(步骤4)中,聚合后的消息通过神经网络处理,以为每个节点生成一个新的表示。这种转换使得GNN能够通过对聚合信息应用非线性函数,学习图中的复杂交互和模式。
最后,在更新步骤(步骤5)中,图中每个节点的特征被这些新表示所替换或更新。这完成了一轮消息传递,结合来自邻居节点的信息,以精炼每个节点的特征。
GNN中的每一层消息传递使节点能够从更远的节点或图中更多的“跳跃”节点收集信息。通过在多个层级上重复这些步骤,GNN能够捕捉图中更复杂的依赖关系和长距离的交互。
通过使用消息传递,GNN能够高效地将图的结构和数据编码为用于各种下游任务的有用表示。高级架构,如那些结合了全局注意力或分层消息传递的架构,进一步增强了模型捕捉图中长距离依赖的能力,从而提高了在多种应用中的鲁棒性和性能。
总结
-
图神经网络(GNN)是处理关系数据或以关系为中心的数据的专业工具,特别适用于传统神经网络由于图结构的复杂性和多样性而难以处理的场景。
-
GNN已经在推荐引擎、药物发现和机械推理等领域找到了重要应用,展示了它们在处理大规模和复杂关系数据方面的多功能性,帮助获得更深入的洞察和更准确的预测。
-
具体的GNN任务包括节点预测、边预测、图预测和通过嵌入技术进行图表示。
-
当数据以图形表示时,GNN的应用效果最佳,这意味着数据点之间有强烈的关系和连接。它们并不适用于那些没有关系信息的单一、独立的数据项。
-
在决定GNN是否适合你的问题时,考虑那些具有隐式关系、高维度、稀疏性和复杂的非局部交互的案例。通过理解这些基本概念,实践者可以评估GNN对特定问题的适用性,进行有效的实施,并认识到其在现实应用中的权衡和局限性。
-
消息传递是GNN的核心机制,它使得GNN能够跨越图的结构编码和交换信息,从而进行有意义的节点、边和图级预测。GNN的每一层代表消息传递的一步,使用各种聚合函数有效地组合消息,为机器学习任务提供有用的洞察和表示。