当前位置: 首页> 科技> 数码 > 济南自助建站系统_温州个人建站模板_知乎关键词排名工具_对网站提出的优化建议

济南自助建站系统_温州个人建站模板_知乎关键词排名工具_对网站提出的优化建议

时间:2025/9/15 8:59:37来源:https://blog.csdn.net/weixin_43608857/article/details/146484084 浏览次数:0次
济南自助建站系统_温州个人建站模板_知乎关键词排名工具_对网站提出的优化建议

神经网络已被调整为利用图形的结构和属性。我们探索了构建图神经网络所需的组件,并激发了它们背后的设计选择。

本文是 Distill 关于图神经网络的两篇出版物之一。了解图形上的卷积

[1]

了解图像上的卷积如何自然地泛化为图形上的卷积。

图表无处不在;现实世界的对象通常根据它们与其他事物的联系来定义。一组对象以及它们之间的连接自然地表示为图形。十多年来,研究人员已经开发了对图数据进行作的神经网络(称为图神经网络,或 GNN)[2].最近的发展提高了他们的能力和表现力。我们开始看到抗菌剂发现等领域的实际应用[3]、 物理模拟[4]、假新闻检测[5]、流量预测[6]和推荐系统[7].

本文探讨并解释了现代图神经网络。我们将这项工作分为四个部分。首先,我们看看哪种类型的数据最自然地表述为图表,以及一些常见的示例。其次,我们探讨了图形与其他类型的数据的不同之处,以及我们在使用图形时必须做出的一些专业选择。第三,我们构建一个现代 GNN,介绍模型的每个部分,从该领域的历史建模创新开始。我们逐渐从简单的实现转向最先进的 GNN 模型。第四,也是最后一点,我们提供了一个 GNN 游乐场,您可以在其中使用真实任务和数据集,以建立更强的直觉,了解 GNN 模型的每个组件如何为其做出的预测做出贡献。

首先,让我们确定什么是图形。图形表示实体 (节点) 集合之间的关系 (边)。

我们可能会在图表中找到三种类型的属性,将鼠标悬停在上面以突出显示每个属性。其他类型的图表和属性在 Other types of graphs 部分中进行了介绍。

为了进一步描述每个节点、边或整个图,我们可以在图的每个部分存储信息。

 我们还可以通过将方向性与边(有向、无向)相关联来专门化图形。

边可以定向,其中边 ee 具有 源节点 vsrcvsrc 和 目标节点 vdstvdst 。在这种情况下,信息从 流 vdstvdst 向 vsrcvsrc 。它们也可以是无向的,其中没有源节点或目标节点的概念,并且信息是双向流动的。请注意,具有单个无向边等效于具有一条从 vsrcvsrc to vdstvdst 的有向边和另一条从 vdstvdst to vsrcvsrc 的有向边 。

图形是非常灵活的数据结构,如果这现在看起来很抽象,我们将在下一节中通过示例将其具体化。

图表及其位置

您可能已经熟悉某些类型的图形数据,例如社交网络。但是,图表是一种非常强大和通用的数据表示形式,我们将展示您可能认为无法建模为图表的两种类型的数据:图像和文本。虽然有悖常理,但可以通过将图像和文本视为图形来更多地了解图像和文本的对称性和结构,并建立一种直觉,这将有助于理解其他不太像网格的图形数据,我们将在后面讨论。

图像作为图表

我们通常将图像视为带有图像通道的矩形网格,将它们表示为数组(例如,244x244x3 浮点数)。将图像视为具有规则结构的图形的另一种方式,其中每个像素代表一个节点,并通过边缘连接到相邻像素。每个非边界像素正好有 8 个邻居,存储在每个节点上的信息是一个 3 维向量,表示像素的 RGB 值。

可视化图形连通性的一种方法是通过其邻接矩阵。我们对节点进行排序,在本例中为一个简单的 5x5 笑脸图像中的每个 25 像素,如果两个节点共享一条边,则用一个条目填充矩阵 nnodes×nnodesnnodes×nnodes 。请注意,下面的这三种表示形式都是同一数据的不同视图。

文本作为图表

我们可以通过将索引与每个字符、单词或标记相关联,并将文本表示为这些索引的序列来数字化文本。这将创建一个简单的有向图,其中每个字符或索引都是一个节点,并通过边连接到其后面的节点。

在野的图值数据

图表是描述您可能已经熟悉的数据的有用工具。让我们继续讨论结构更加异构的数据。在这些示例中,每个节点的相邻要素数是可变的(与图像和文本的固定邻域大小相反)。除了图表之外,这些数据很难用任何其他方式来表达。

分子作为图形。分子是物质的组成部分,由 3D 空间中的原子和电子构成。所有粒子都在相互作用,但是当一对原子彼此保持稳定的距离时,我们称它们共享共价键。不同的原子对和键具有不同的距离(例如单键、双键)。将这个 3D 对象描述为图形是一种非常方便和常见的抽象方法,其中节点是原子,边是共价键。

[8]

以下是两种常见的分子及其相关图表。

社交网络作为图表。社交网络是研究人们、机构和组织的集体行为模式的工具。我们可以通过将个体建模为节点,将他们的关系建模为边来构建一个表示人群的图。

 

以图表形式引用网络。科学家在发表论文时通常会引用其他科学家的工作。我们可以将这些引文网络可视化为一个图表,其中每篇论文都是一个节点,每条有向边都是一篇论文与另一篇论文之间的引文。此外,我们可以将每篇论文的信息添加到每个节点中,例如摘要的单词嵌入。(参见[9][10] , [11]).其他示例。在计算机视觉中,我们有时希望标记视觉场景中的对象。然后,我们可以将这些对象视为节点,将它们的关系视为边来构建图形。机器学习模型、编程代码 [12]和数学方程式[13]也可以表述为图形,其中变量是节点,边是将这些变量作为输入和输出的作。您可能会看到在某些上下文中使用了术语 “dataflow graph”。

实际图形的结构在不同类型的数据之间可能会有很大差异 — 有些图形有许多节点,但它们之间的连接很少,反之亦然。图形数据集在节点数量、边缘和节点连接方面可能有很大差异(在给定数据集内以及数据集之间)。

这类似于 MNIST 和 CIFAR 的图像分类问题,我们希望将标签与整个图像相关联。对于文本,一个类似的问题是情感分析,我们想一次识别整个句子的情绪或情感。

节点级任务

节点级任务涉及预测图形中每个节点的身份或角色。

节点级预测问题的一个典型示例是 Zach 的空手道俱乐部。

[15]

该数据集是一个社交网络图,由在政治裂痕后宣誓效忠两个空手道俱乐部之一的个人组成。随着故事的发展,Hi 先生(教练)和 John H(管理员)之间的不和在空手道俱乐部造成了分裂。节点表示单个空手道练习者,边缘表示这些成员在 Karate 之外的交互。预测问题是对给定成员在世仇后是否忠于 Hi 先生或 John H 进行分类。在这种情况下,节点与 Instructor 或 Administrator 之间的距离与此标签高度相关。

左侧是问题的初始条件,右侧是可能的解决方案,其中每个节点都已根据联盟进行分类。该数据集可用于其他图问题,例如无监督学习。

按照图像类比,节点级预测问题类似于图像分割,我们试图标记图像中每个像素的作用。对于文本,类似的任务是预测句子中每个单词的词性(例如名词、动词、副词等)。

边缘级任务

图形中剩下的预测问题是边缘预测。

边缘级推理的一个例子是图像场景理解。除了识别图像中的对象之外,深度学习模型还可用于预测它们之间的关系。我们可以将其表述为边缘级分类:给定代表图像中对象的节点,我们希望预测这些节点中的哪些共享一条边或该边的值是多少。如果我们希望发现实体之间的联系,我们可以将图视为完全连接,并根据它们的预测值修剪边以得到稀疏图。

图神经网络

现在,图形的描述采用排列不变的矩阵格式,我们将描述使用图形神经网络 (GNN) 来解决图形预测任务。GNN 是图的所有属性(节点、边、全局上下文)的可优化转换,它保持图的对称性(排列不变性)。我们将使用 Gilmer 等人提出的 “消息传递神经网络” 框架构建 GNN。[18]

使用 Battaglia 等人介绍的 Graph Nets 架构示意图。[19]GNN 采用 “graph-in, graph-out” 架构,这意味着这些模型类型接受图形作为输入,将信息加载到其节点、边和全局上下文中,并逐步转换这些嵌入,而无需改变输入图的连通性。

最简单的 GNN

通过我们上面构建的图形的数值表示(使用向量而不是标量),我们现在已准备好构建 GNN。我们将从最简单的 GNN 架构开始,在这种架构中,我们学习所有图属性(节点、边、全局)的新嵌入,但我们还没有使用图的连接性。

为简单起见,前面的图使用标量来表示图形属性;在实践中,特征向量或嵌入更有用。

此 GNN 在图形的每个组件上使用单独的多层感知器 (MLP)(或您最喜欢的可微模型);我们称之为 GNN 层。对于每个节点向量,我们应用 MLP 并返回一个学习到的节点向量。我们对每条边做同样的事情,学习每条边的嵌入,也对全局上下文向量做同样的事情,学习整个图的单个嵌入。

 

与神经网络模块或层一样,我们可以将这些 GNN 层堆叠在一起。

由于 GNN 不会更新输入图的连通性,因此我们可以用与输入图相同的邻接列表和相同数量的特征向量来描述 GNN 的输出图。但是,输出图更新了嵌入,因为 GNN 已经更新了每个节点、边和全局上下文表示。

按池化信息进行 GNN 预测

我们已经构建了一个简单的 GNN,但是我们如何在上述任务中进行预测呢?

我们将考虑二元分类的情况,但这个框架可以很容易地扩展到多类或回归的情况。如果任务是对节点进行二进制预测,并且图形已经包含节点信息,则方法很简单 — 对于每个节点嵌入,应用线性分类器。

我们可以想象一个社交网络,我们希望通过不使用用户数据(节点)而只使用关系数据(边缘)来匿名化用户数据(节点)。此类场景的一个实例是我们在 Node-level task 小节中指定的 Node 任务。在空手道俱乐部的例子中,这只是使用人与人之间的会议次数来确定与 Hi 先生或 John H 的联盟。

然而,事情并不总是那么简单。例如,您可能将图形中的信息存储在边缘中,但在节点中没有信息,但仍需要对节点进行预测。我们需要一种方法来从边缘收集信息并将其提供给节点进行预测。我们可以通过池化来做到这一点。池化分两个步骤进行:

  1. 对于要池化的每个项,收集它们的每个嵌入并将它们连接到一个矩阵中。

  2. 然后,通常通过 sum 运算聚合收集的嵌入。

有关聚合作的更深入讨论,请转到 比较聚合作 部分。

我们用字母 ρρ 表示池化作,并表示我们正在从边收集到节点的信息。 pEn→Vn

 因此,如果我们只有边缘级特征,并且试图预测二进制节点信息,我们可以使用池化将信息路由(或传递)到它需要去的地方。模型如下所示。

如果我们只有节点级特征,并且尝试预测二进制边缘级信息,则模型如下所示。

如果我们只有节点级特征,并且需要预测二进制全局属性,我们需要将所有可用的节点信息收集在一起并聚合它们。这类似于 CNN 中的全局平均池化层。边也可以这样做。

这是预测分子特性的常见情况。例如,我们有原子信息、连接性,我们想知道分子的毒性(有毒/无毒),或者它是否有特定的气味(玫瑰/非玫瑰)。

在我们的示例中,分类模型 cc 可以很容易地替换为任何可微分模型,或者使用广义线性模型适应多类分类。

具有 GNN 模型的端到端预测任务。

现在我们已经证明我们可以构建一个简单的 GNN 模型,并通过在图的不同部分之间路由信息来进行二进制预测。这种池化技术将作为构建更复杂的 GNN 模型的构建块。如果我们有新的图属性,我们只需要定义如何将信息从一个属性传递到另一个属性。

请注意,在这个最简单的 GNN 公式中,我们根本没有在 GNN 层内使用图的连通性。每个节点都是独立处理的,每条边以及全局上下文也是如此。我们只在池化信息进行预测时使用连通性。

在图形的各个部分之间传递消息

我们可以通过在 GNN 层中使用池化来做出更复杂的预测,以使我们学习的嵌入了解图形连接性。我们可以使用消息传递来做到这一点

[18]

,其中相邻的节点或边交换信息并影响彼此更新的嵌入。

消息传递分为三个步骤:

  1. 对于图中的每个节点,收集所有相邻的节点嵌入(或消息),这就是上面描述的 gg 函数。

  2. 通过聚合函数(如 sum)聚合所有消息。

  3. 所有池化消息都通过 update 函数(通常是学习的神经网络)传递。

你也可以 1) 收集消息,3) 更新它们,以及 2) 聚合它们,并且仍然有一个排列不变作。

[20]

正如池化可以应用于节点或边缘一样,消息传递也可以发生在节点或边缘之间。

这些步骤是利用图形连接性的关键。我们将在 GNN 层中构建更精细的消息传递变体,从而产生具有更高表现力和能力的 GNN 模型。

Layer N+𝑓Layer N + 1Aggregate information from adjacent nodesTransform informationUpdate graph with new information

将鼠标悬停在节点上,以突出显示相邻节点并可视化将被池化、更新和存储的相邻嵌入。

此作序列在应用一次时,是最简单的消息传递 GNN 层类型。

这让人想起标准卷积:从本质上讲,消息传递和卷积是聚合和处理元素邻居信息以更新元素的值的作。在图形中,元素是一个节点,在图像中,元素是一个像素。但是,图形中相邻节点的数量可以是可变的,这与图像中每个像素都有一定数量的相邻元素不同。

通过将传递 GNN 的消息层堆叠在一起,节点最终可以合并来自整个图的信息:在三层之后,节点拥有有关距离它三步远的节点的信息。

我们可以更新架构图以包含节点的这个新信息源:

GCN 架构的示意图,它通过将距离为 1 度的相邻节点池化来更新图形的节点表示。

学习边缘表示

我们的数据集并不总是包含所有类型的信息(节点、边和全局上下文)。当我们想对节点进行预测,但我们的数据集只有边信息时,我们在上面展示了如何使用池化将信息从边路由到节点,但仅限于模型的最后预测步骤。我们可以使用消息传递在 GNN 层内的节点和边之间共享信息。

我们可以像之前使用相邻节点信息一样,通过首先池化边信息,使用 update 函数对其进行转换并存储它,从而合并来自相邻边的信息。

但是,存储在图中的节点和边信息不一定具有相同的大小或形状,因此目前尚不清楚如何组合它们。一种方法是学习从边空间到节点空间的线性映射,反之亦然。或者,可以在 update 函数之前将它们连接在一起。

消息传递层的架构示意图。第一步 “准备” 由来自边缘及其连接节点的信息组成的消息,然后将消息 “传递” 给节点。

我们更新哪些图形属性以及以什么顺序更新它们是构建 GNN 时的一个设计决策。我们可以选择是在边嵌入之前更新节点嵌入,还是相反。这是一个开放的研究领域,有多种解决方案——例如,我们可以以 “编织 ”的方式更新

[21]

其中我们有四个更新的表示,它们被组合成新的节点和边表示:节点到节点(线性)、边缘到边缘(线性)、节点到边缘(边缘层)、边缘到节点(节点层)。

我们可以在 GNN 层中组合边缘和节点表示的一些不同方式。

添加全局表示

到目前为止,我们描述的网络存在一个缺陷:即使我们多次应用消息传递,图中彼此相距较远的节点也可能永远无法有效地相互传递信息。对于一个节点,如果我们有 k 层,信息最多会传播 k 步。当预测任务依赖于相距很远的节点或节点组时,这可能是一个问题。一种解决方案是让所有节点都能够相互传递信息。不幸的是,对于大型图,这很快就会变得计算成本高昂(尽管这种方法称为“虚拟边”,已被用于分子等小图)。

[18]

此问题的一种解决方案是使用图形 (U) 的全局表示形式,该图形有时称为主节点 

[19]
[18]

或上下文向量。这个全局上下文向量连接到网络中的所有其他节点和边,并且可以充当它们之间的桥梁来传递信息,从而为整个图构建表示。这创建了比原本可以学习的更丰富、更复杂的图表示。

利用全局表示的 Graph Nets 架构示意图。

在这个视图中,所有 graph attributes 都有学习到的表示,所以我们可以在池化过程中通过调节我们感兴趣的 attribute 相对于其余属性的信息来利用它们。例如,对于一个节点,我们可以考虑来自相邻节点、连接边和全局信息的信息。为了在所有这些可能的信息源上设置新节点嵌入,我们可以简单地将它们连接起来。此外,我们还可以通过线性映射将它们映射到相同的空间,并添加它们或应用特征方面的调制层

[22]

,这可以被认为是一种特征化注意力机制。

基于其他三个嵌入(相邻节点、相邻边、全局)调节一个节点信息的示意图。此步骤对应于 Graph Nets Layer 中的节点作。

GNN 游乐场

我们在这里描述了各种各样的 GNN 组件,但它们在实践中实际上有何不同?这个 GNN 游乐场让你看到这些不同的组件和架构如何促进 GNN 学习实际任务的能力。

我们的 Playground 显示了一个带有小分子图的图级预测任务。我们使用 Leffingwell Odor 数据集

[23]
[24]

,它由具有相关气味感知(标签)的分子组成。预测分子结构(图形)与其气味的关系是一个 100 年的历史问题,横跨化学、物理学、神经科学和机器学习。

为了简化问题,我们只考虑每个分子一个二进制标签,根据专业调香师的标签对分子图是否闻起来“刺鼻”进行分类。如果一个分子具有强烈、醒目的气味,我们就说它有“刺鼻”的气味。例如,可能含有烯丙醇分子的大蒜和芥末就具有这种品质。分子 piperitone 通常用于薄荷味的糖果,也被描述为具有刺鼻的气味。

我们将每个分子表示为图表,其中原子是包含其原子身份(碳、氮、氧、氟)的 one-hot 编码的节点,键是包含编码其键类型(单、双、三或芳烃)的 one-hot 编码的边。

这个问题的通用建模模板将使用顺序 GNN 层构建,然后是一个带有 sigmoid 激活的线性模型进行分类。GNN 的设计空间有许多可以自定义模型的杠杆:

  1. GNN 层数,也称为深度。

  2. 更新时每个属性的维数。更新函数是一个 1 层 MLP,具有 relu 激活函数和用于激活归一化的层范数。

  3. 池化中使用的聚合函数:max、mean 或 sum。

  4. 更新的图形属性或消息传递的样式:节点、边和全局表示。我们通过布尔切换(打开或关闭)来控制这些。基线模型将是一个独立于图形的 GNN(所有消息传递),它将末尾的所有数据聚合到一个全局属性中。切换所有消息传递函数会产生 GraphNets 架构。

为了更好地理解 GNN 如何学习图的任务优化表示,我们还研究了 GNN 的倒数第二层激活。这些“图嵌入”是 GNN 模型在预测之前的输出。由于我们使用广义线性模型进行预测,因此线性映射足以让我们看到我们如何围绕决策边界学习表示。

由于这些是高维向量,我们通过主成分分析 (PCA) 将它们简化为 2D。完美的模型将可见性地分离标记的数据,但由于我们正在减少维度并且模型也不完美,因此这个边界可能更难看到。

尝试使用不同的模型架构来建立您的直觉。例如,看看是否可以编辑左侧的分子以增加模型预测。相同的编辑对不同的模型架构有相同的效果吗?

此 Playground 正在 tfjs 中的浏览器中实时运行。

任务
For this graph level prediction task, each graph is a molecule. The task is to predict whether or not a molecule will smell pungent. In the scatter plot, each point represents a graph.
模型选项
深度                 1 layer                 2 layers                 3 layers                 4 layers               
聚合函数                 Mean                 Sum                 Max               
 节点嵌入大小
                 25                 50                 100               
 边缘嵌入大小
                 5                 10                 20               
 全局嵌入大小
                 25                 50                 100               
模型 AUC
0.81
重置
模型预测
18% pungent
地面实况
not pungent
单键
=
双键
三重键
芳香键
模型预测
地面实况
刺鼻
0%
100%
epoch: 50

编辑分子以查看预测如何变化,或更改模型参数以加载不同的模型。在散点图中选择不同的分子。

一些实证 GNN 设计经验教训

在探索上述架构选择时,您可能已经发现某些模型的性能优于其他模型。是否有一些明确的 GNN 设计选择可以给我们带来更好的性能?例如,更深的 GNN 模型是否比较浅的 GNN 模型性能更好?或者,在聚合函数之间是否有明确的选择?答案将取决于数据,

[25]

 

[26]

,甚至不同的特征化和构造图形的方式也会给出不同的答案。

通过下面的交互式图,我们探讨了 GNN 架构的空间以及此任务在几个主要设计选择中的执行情况:消息传递的样式、嵌入的维度、层数和聚合作类型。

散点图中的每个点都代表一个模型:x 轴是可训练变量的数量,y 轴是性能。将鼠标悬停在一个点上可查看 GNN 架构参数。

每个模型的性能与其可训练变量数量的散点图。将鼠标悬停在一个点上可查看 GNN 架构参数。

首先要注意的是,令人惊讶的是,更多的参数确实与更高的性能相关。GNN 是一种参数效率非常高的模型类型:即使对于少量参数 (3k),我们也已经可以找到高性能的模型。

接下来,我们可以查看根据不同图形属性的学习表示的维度聚合的性能分布。

跨不同节点、边缘和全局维度聚合模型的性能。

我们可以注意到,具有较高维度的模型往往具有更好的均值和下限性能,但对于最大值,则没有发现相同的趋势。对于较小的维度,可以找到一些性能最好的模型。由于更高的维度也将涉及更多的参数,因此这些观察结果与上图一致。

接下来,我们可以看到基于 GNN 层数的性能细分。

层数与模型性能的关系图,以及模型性能与参数数量的散点图。每个点都按层数着色。将鼠标悬停在一个点上可查看 GNN 架构参数。

箱形图显示了类似的趋势,虽然平均性能往往随着层数的增加而增加,但性能最好的模型没有三层或四层,而是两层。此外,性能的下限随着四层的增加而降低。这种效果以前已经观察到,层数较多的 GNN 将在更远的距离广播信息,并且可能会面临其节点表示因多次连续迭代而“稀释”的风险

[27]

.

我们的数据集是否有首选的聚合作?下图根据聚合类型对性能进行了细分。

聚合类型与模型性能的图表,以及模型性能与参数数量的散点图。每个点都按聚合类型着色。将鼠标悬停在一个点上可查看 GNN 架构参数。

总体而言, sum 似乎对 mean 性能有非常轻微的改进,但 max 或 mean 可以给出同样好的模型。在查看聚合作的判别/表达能力时,这对于上下文化很有用。

前面的探索给出了混合信息。我们可以找到平均趋势,其中复杂性越高,性能越好,但我们可以找到明确的反例,其中参数、层数或维度数较少的模型性能更好。一个更清晰的趋势是关于相互传递信息的属性数量。

在这里,我们根据消息传递的样式来细分性能。在这两个极端,我们考虑了不在图形实体之间通信的模型(“无”)和在节点、边缘和全局变量之间传递消息传递的模型。

 

关键字:济南自助建站系统_温州个人建站模板_知乎关键词排名工具_对网站提出的优化建议

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: