A Comprehensive Survey on Graph Neural Networks

news2024/11/28 18:38:45

A Comprehensive Survey on Graph Neural Networks----《图神经网络研究综述》

摘要

  近年来,深度学习已经彻底改变了许多机器学习任务,从图像分类和视频处理到语音识别和自然语言理解。这些任务中的数据通常在欧几里得空间中表示。然而,越来越多的应用程序从非欧几里得域生成数据,并表示为对象之间具有复杂关系和相互依赖关系的图形。图数据的复杂性给现有的机器学习算法带来了巨大的挑战。最近,出现了许多关于扩展图数据深度学习方法的研究。在本次调查中,我们全面概述了数据挖掘和机器学习领域的图神经网络(GNN)。我们提出了一种新的分类法,将最先进的图神经网络分为四类,即循环图神经网络、卷积图神经网络、图自动编码器和时空图神经网络。我们进一步讨论了图神经网络在各个领域的应用,并总结了图神经网络的开源代码、基准数据集和模型评估。最后,我们提出了这个快速发展领域的潜在研究方向。

引言

  神经网络最近的成功推动了模式识别和数据挖掘的研究。许多机器学习任务,如对象检测[1],[2],机器翻译[3],[4]和语音识别[5],曾经严重依赖手工特征工程来提取信息特征集,最近被各种端到端深度学习范式带来了革命性的变化,如卷积神经网络(cnn) [6],循环神经网络(rnn)[7]和自动编码器[8]。深度学习在许多领域的成功部分归功于快速发展的计算资源(如GPU),大训练数据的可用性,以及深度学习从欧几里德数据(如图像、文本和视频)中提取潜在表示的有效性。以图像数据为例,我们可以将图像表示为欧几里德空间中的一个规则网格。卷积神经网络(CNN)能够利用图像数据的平移不变性、局部连通性和组合性[9]。因此,CNN 可以提取与整个数据集共享的局部有意义的特征,以进行各种图像分析。
  虽然深度学习有效地捕获了欧几里德数据的隐藏模式,但越来越多的应用程序以图形的形式表示数据。例如,在电子商务中,基于图的学​​习系统可以利用用户和产品之间的交互来做出高度准确的推荐。在化学中,分子被建模为图表,并且需要确定它们的生物活性以进行药物发现。在引文网络中,论文通过引文相互链接,并且需要将它们分类到不同的组中。图数据的复杂性给现有的机器学习算法带来了巨大的挑战。由于图可能是不规则的,图可能具有可变大小的无序节点,并且图中的节点可能具有不同数量的邻居,导致一些重要的操作(例如,卷积)在图像域中易于计算,但是很难应用到图领域。此外,现有机器学习算法的一个核心假设是实例彼此独立。这种假设对图数据不再适用,因为每个实例(节点)通过各种类型的链接(如引用、友谊和交互)与其他实例(节点)联系在一起。
  最近,人们对扩展图数据的深度学习方法越来越感兴趣。在深度学习中的 CNN、RNN 和自动编码器的推动下,重要操作的新概括和定义在过去几年中迅速发展,以处理图数据的复杂性。例如,图卷积可以从 2D 卷积推广而来。如图 1 所示,图像可以被视为图的特殊情况,其中像素由相邻像素连接。与二维卷积类似,可以通过对节点的邻域信息进行加权平均来进行图形卷积。
在这里插入图片描述
  关于图神经网络(GNN)这一主题的现有综述数量有限。使用几何深度学习这个术语,Bronstein等人[9]概述了非欧几里德域的深度学习方法,包括图和流形。虽然这是对GNN的第一个综述,但本综述主要介绍了卷积GNN。Hamilton等人[10]覆盖了有限数量的GNN,专注于解决网络嵌入问题。Battaglia等人[11]将图网络定位为从关系数据中学习的构建块,在统一框架下回顾了部分 GNN。Lee等人[12]对应用不同注意机制的GNN进行了部分研究。综上所述,现有的调查只包括部分GNN,研究的作品数量有限,因此忽略了GNN的最新发展。我们的调查为想要进入这个快速发展领域的感兴趣的研究人员和想要比较 GNN 模型的专家提供了 GNN 的全面概述。为了涵盖更广泛的方法,本次调查将 GNN 视为图数据的所有深度学习方法。

  贡献:

  • 新分类法:我们提出了图神经网络的新分类法。图神经网络分为四组:循环图神经网络、卷积图神经网络、图自动编码器和时空图神经网络。
  • 全面回顾:我们为图数据的现代深度学习技术提供最全面的概述。对于每一种类型的图神经网络,我们提供了代表性模型的详细描述,进行了必要的比较,并总结了相应的算法。
  • 丰富的资源:我们收集了丰富的图神经网络资源,包括最先进的模型、基准数据集、开源代码和实际应用。本调查可作为理解、使用和开发各种现实生活应用的不同深度学习方法的实践指南。
  • 未来方向:讨论了图神经网络的理论方面,分析了现有方法的局限性,并从模型深度、可扩展性权衡、异构性和动态性四个方面提出了未来可能的研究方向。

背景

图神经网络(GNN)简史  Sperduti等人(1997)[13]首先将神经网络应用于有向无环图,这激发了对GNN的早期研究。图神经网络的概念最初是在Gori等人(2005)[14]中提出的,并在Scarselli等人(2009)[15]和Gallicchio等人(2010)[16]中进一步阐述。这些早期的研究属于循环图神经网络(RecGNNs)的范畴。它们通过迭代传播邻居信息来学习目标节点的表示,直到达到一个稳定的不动点。这个过程的计算成本很高,最近已经有越来越多的努力来克服这些挑战[17],[18]。
  受 CNN 在计算机视觉领域成功的鼓舞,并行开发了大量重新定义图数据卷积概念的方法。这些方法属于卷积图神经网络(ConvGNN)的范畴。ConvGNN 分为两大类:基于谱的方法和基于空间的方法。Bruna等人(2013)[19]提出了第一个基于频谱的卷积神经网络的杰出研究,该研究基于谱图理论开发了一种图卷积。从那时起,基于谱的 ConvGNN [20]、[21]、[22]、[23] 有了越来越多的改进、扩展和近似。基于空间的 ConvGNN 的研究比基于光谱的 ConvGNN 开始得早得多。2009年,Micheli等人[24]在从循环图神经网络继承消息传递思想的同时,通过体系结构组合非递归层,首次解决了图的相互依赖。然而,这项工作的重要性被忽视了。直到最近,出现了许多基于空间的 ConvGNN(例如[25]、[26]、[27])。代表性 RecGNN 和 ConvGNN 的时间线显示在表 II 的第一列中。除了 RecGNN 和 ConvGNN 之外,过去几年还开发了许多替代 GNN,包括图自动编码器(GAE)和时空图神经网络(STGNN)。这些学习框架可以构建在 RecGNN、ConvGNN 或其他用于图建模的神经架构上。第三节详细介绍了这些方法的分类。
在这里插入图片描述
图神经网络与网络嵌入   GNN 的研究与图嵌入或网络嵌入密切相关,这是数据挖掘和机器学习社区越来越关注的另一个主题[10]、[28]、[29]、[30]、[31]、[ 32]。网络嵌入旨在将网络节点表示为低维向量表示,保留网络拓扑结构和节点内容信息,以便任何后续的图分析任务,例如分类、聚类,并且可以使用简单的现成机器学习算法(例如用于分类的支持向量机)轻松执行推荐。同时,GNN 是深度学习模型,旨在以端到端的方式解决与图相关的任务。许多 GNN 显式地提取高级表示。GNN 和网络嵌入之间的主要区别在于,GNN 是一组为各种任务设计的神经网络模型,而网络嵌入涵盖了针对同一任务的各种方法。因此,GNN 可以通过图自动编码器框架来解决网络嵌入问题。另一方面,网络嵌入包含其他非深度学习方法,例如矩阵分解[33]、[34]和随机游走[35]。
图神经网络与图核方法   图内核是历史上解决图分类问题的主导技术[36]、[37]、[38]。这些方法采用核函数来测量图对之间的相似性,以便支持向量机等基于核的算法可用于图的监督学习。与 GNN 类似,图内核可以通过映射函数将图或节点嵌入到向量空间中。不同之处在于这个映射函数是确定性的而不是可学习的。由于成对相似性计算,图核方法严重受到计算瓶颈的影响。一方面,GNN 直接根据提取的图表示进行图分类,因此比图核方法要高效得多。为了进一步回顾图核方法,我们建议读者参考[39]。

符号和定义

在这里插入图片描述
在这里插入图片描述

图神经网络 (GNN) 分类

循环图神经网络 (RecGNN)

  大部分是图神经网络的先驱作品。RecGNN 旨在通过循环神经架构学习节点表示。他们假设图中的节点不断与其邻居交换信息/消息,直到达到稳定的平衡。RecGNN 在概念上很重要,并启发了后来对卷积图神经网络的研究。特别是,消息传递的思想是由基于空间的卷积图神经网络继承的。
  循环图神经网络(RecGNN)大多是 GNN 的先驱作品。它们在图中的节点上循环应用同一组参数来提取高级节点表示。受计算能力的限制,早期的研究主要集中在有向无环图[13]、[80]。
  Scarselli 等人提出的图神经网络(GNN*)扩展了先前的循环模型来处理一般类型的图,例如无环图、循环图、有向图和无向图[15]。基于信息扩散机制,GNN* 通过循环交换邻域信息来更新节点状态,直到达到稳定平衡。
节点的更新公式:

h v ( t ) = ∑ u ∈ N ( v ) f ( x v , x ( v , u ) e , x u , h u ( t − 1 ) ) h_{v}^{(t)}=\sum\limits_{u\in {{N}_{(v)}}}{f({{x}_{v}},x_{(v,u)}^{e},{{x}_{u}},h_{u}^{(t-1)})} hv(t)=uN(v)f(xv,x(v,u)e,xu,hu(t1))

  求和运算使 GNN* 适用于所有节点,即使邻居数量不同且不知道邻居排序也是如此。为了保证收敛性,递归函数f(·)必须是一个收缩映射,它将两点投射到一个潜空间后缩小两点之间的距离。在 f(·) 是神经网络的情况下,必须对参数的雅可比矩阵施加惩罚项。当满足收敛标准时,最后一步节点隐藏状态被转发到读出层。该策略使 GNN* 能够处理循环图。
 
相关论文:
在这里插入图片描述

卷积图神经网络 (ConvGNN)

  将卷积操作从网格数据推广到图数据。主要思想是通过聚合节点 v 自身的特征和邻居的特征来生成节点 v 的表示。与 RecGNN 不同,ConvGNN 堆叠多个图卷积层来提取高级节点表示。ConvGNN 在构建许多其他复杂的 GNN 模型中发挥着核心作用。图 2a为用于节点分类的 ConvGNN;图 2b 为用于图分类的 ConvGNN。
在这里插入图片描述
  卷积图神经网络(ConvGNN)与循环图神经网络(RecGNN)密切相关。ConvGNN 不是使用收缩约束来迭代节点状态,而是使用固定数量的层(每层具有不同的权重)来解决循环相互依赖性。这个关键区别如图 3 所示。由于图卷积更高效且更方便与其他神经网络组合,因此近年来 ConvGNN 的受欢迎程度迅速增长。ConvGNN 分为两类:基于频谱的和基于空间的。 基于谱的方法通过从图信号处理[82]的角度引入滤波器来定义图卷积,其中图卷积操作被解释为从图信号中去除噪声。基于空间的方法继承了 RecGNN 的思想,通过信息传播来定义图卷积。由于 GCN [22] 弥合了基于谱的方法和基于空间的方法之间的差距,基于空间的方法由于其有吸引力的效率、灵活性和通用性而最近迅速发展。
 
基于频谱的 ConvGNN
  基于谱的方法在图信号处理中具有坚实的数学基础[82]、[83]、[84]。他们假设图是无向的。归一化图拉普拉斯矩阵是无向图的数学表示,归一化图拉普拉斯矩阵具有实对称正半定性质。
 
基于空间的 ConvGNN
  沿着边传播节点信息
 
谱域 ConvGNN 模型和空间 ConvGNN 模型的比较
  谱模型在图信号处理方面具有理论基础。通过设计新的图信号滤波器(例如 Cayleynets [23]),人们可以构建新的 ConvGNN。然而,由于效率、通用性和灵活性问题,空间模型优于谱模型。首先,谱域模型的效率低于空间模型。谱模型要么需要执行特征向量计算,要么同时处理整个图。空间模型对于大型图更具可扩展性,因为它们通过信息传播直接在图域中执行卷积。计算可以在一批节点而不是整个图中执行。其次,依赖于图傅立叶基础的谱模型很难推广到新图。他们假设一个固定的图表。对图的任何扰动都会导致特征基的变化。另一方面,基于空间的模型在每个节点上本地执行图卷积,其中权重可以在不同位置和结构之间轻松共享。第三,基于谱的模型仅限于在无向图上运行。基于空间的模型可以更灵活地处理多源图输入,例如边缘输入[15]、[27]、[86]、[95]、[96]、有向图[25]、[72]、符号图[97],以及异构图[98],[99],因为这些图输入可以很容易地合并到聚合函数中。
 
在这里插入图片描述
大图内存溢出问题–提升训练效率
  训练 ConvGNN(例如 GCN [22])通常需要将整个图数据和所有节点的中间状态保存到内存中。ConvGNN 的全批处理训练算法存在严重的内存溢出问题,特别是当图包含数百万个节点时。为了节省内存,GraphSage [42] 提出了一种 ConvGNN 的批量训练算法。它通过以固定样本大小递归扩展根节点的邻域 K 步来对以每个节点为根的树进行采样。对于每个采样树,GraphSage 通过从下到上分层聚合隐藏节点表示来计算根节点的隐藏表示。
  图卷积网络快速学习(FastGCN)[49] 为每个图卷积层采样固定数量的节点,而不是像 GraphSage [42] 那样为每个节点采样固定数量的邻居。它将图的卷积解释为节点嵌入函数在概率度量下的积分变换。采用蒙特卡罗近似和方差减少技术来促进训练过程。由于FastGCN独立地对每一层的节点进行采样,因此层间的连接可能是稀疏的。Huang等人[51]提出了一种自适应分层抽样方法,其中下层的节点抽样以上层的节点抽样为条件。与FastGCN相比,该方法获得了更高的精度,但代价是采用了更复杂的采样方案。
  在另一项研究中,图卷积网络的随机训练(StoGCN)[50]使用历史节点表示作为控制变量,将图卷积的接受域大小减小到任意小的范围。即使每个节点有两个邻居,StoGCN 也能实现相当的性能。然而,StoGCN 仍然需要保存所有节点的中间状态,这对于大型图来说非常消耗内存。
  Cluster-GCN [58] 使用图聚类算法对子图进行采样,并对采样的子图中的节点执行图卷积。由于邻域搜索也限制在采样的子图内,因此 Cluster-GCN 能够处理更大的图并同时使用更深的架构,用更少的时间和更少的内存。ClusterGCN 特别提供了现有 ConvGNN 训练算法的时间复杂度和内存复杂度的直接比较。
  在表IV中,GCN[22]是进行全批次训练的基线方法。GraphSage以牺牲时间效率为代价来节省内存。同时,GraphSage的时间和内存复杂度随着K和r的增加呈指数增长。StoGCN的时间复杂度最高,并且内存的瓶颈仍未解决。然而,Sto-GCN 可以在 r 很小的情况下获得令人满意的性能。Cluster-GCN 的时间复杂度与基线方法相同,因为它没有引入冗余计算。在所有方法中,ClusterGCN 实现了最低的内存复杂度。
在这里插入图片描述

图卷积网络公式

在这里插入图片描述

迭代递归的形式:

h v ( 0 ) = x v h_{v}^{(0)}={{x}_{v}} hv(0)=xv   第0层

h v ( k + 1 ) = σ ( W k ∑ u ∈ N ( v ) h u k ∣ N ( v ) ∣ ) h_{v}^{(k+1)}=\sigma ({{W}_{k}}\sum\limits_{u\in {{N}_{(v)}}}{\frac{h_{u}^{k}}{\left| {{N}_{(v)}} \right|}}) hv(k+1)=σ(WkuN(v)N(v)huk)  求和作平均

N ( v ) {{N}_{(v)}} N(v) 表示节点 v 的邻居节点

z v = h v k {{z}_{v}}=h_{v}^{k} zv=hvk  第k层输出
 

矩阵的形式:

H ( k ) = [ h 1 ( k ) , . . . , h ∣ v ∣ ( k ) ] T {{H}^{(k)}}={{[h_{1}^{(k)},...,h_{\left| v \right|}^{(k)}]}^{T}} H(k)=[h1(k),...,hv(k)]T  第k层所有节点的嵌入

∑ u ∈ N v h u ( k ) = A v H ( k ) \sum\limits_{u\in {{N}_{v}}}{h_{u}^{(k)}={{A}_{v}}{{H}^{(k)}}} uNvhu(k)=AvH(k)  左乘邻接矩阵 A v {{A}_{v}} Av ,选出 v 节点所有邻居节点的嵌入求和

D v , v = D e g ( v ) = ∣ N ( v ) ∣ {{D}_{v,v}}=Deg(v)=\left| {{N}_{(v)}} \right| Dv,v=Deg(v)= N(v)   度矩阵

D v , v − 1 = 1 ∣ N ( v ) ∣ D_{v,v}^{-1}=\frac{1}{\left| {{N}_{(v)}} \right|} Dv,v1=N(v)1  求平均操作

∑ u ∈ N ( v ) h u k ∣ N ( v ) ∣ ⇒ D − 1 A H ( k ) \sum\limits_{u\in {{N}_{(v)}}}{\frac{h_{u}^{k}}{\left| {{N}_{(v)}} \right|}}\Rightarrow {{D}^{-1}}A{{H}^{(k)}} uN(v)N(v)hukD1AH(k)

∑ u ∈ N ( v ) h u k ∣ N ( v ) ∣ ⇒ D − 1 2 A D − 1 2 H ( k ) \sum\limits_{u \in {N_{(v)}}} {\frac{{h_u^k}}{{\left| {{N_{(v)}}} \right|}}} \Rightarrow {D^{ - \frac{1}{2}}}A{D^{ - \frac{1}{2}}}{H^{(k)}} uN(v)N(v)hukD21AD21H(k)  改进等量平均,增加权重信息

A ~ ( u , v ) = 1 ∣ N ( u ) ∣ ∣ N ( v ) ∣ {\tilde A_{(u,v)}} = \frac{1}{{\sqrt {\left| {{N_{(u)}}} \right|} \sqrt {\left| {{N_{(v)}}} \right|} }} A~(u,v)=N(u) N(v) 1  根据节点各自连接数计算出

A = A + I A = A + I A=A+I  增加自环边
 

GCN归纳式学习–能够泛化到新节点

  当一个新节点与一个已知节点建立关系后就可以构造出该节点的计算图,根据计算图可以用已经训练好的GCN模型得到新节点的属性。
  因为GCN模型训练、更新、学习参数仅限于每一层的模型且同一层模型共享参数。
在这里插入图片描述

图池化模块

  GNN 生成节点特征后,我们可以将它们用于最终任务。但直接使用所有这些特征在计算上可能具有挑战性,因此需要一种下采样策略。根据目标及其在网络中扮演的角色,该策略有不同的名称:(1)池化操作的目的是通过对节点进行下采样以生成更小的表示来减小参数的大小,从而避免过拟合、排列不变性和计算复杂性问题;(2)读出操作主要用于根据节点表示生成图级表示。他们的机制非常相似。在本章中,我们使用池化来指代应用于 GNN 的各种下采样策略。
  在早期的一些工作中,图粗化算法根据图的拓扑结构使用特征分解来粗化图。然而,这些方法都存在时间复杂度问题。Graclus 算法 [100] 是特征分解的替代方法,用于计算原始图的聚类版本。一些最近的研究 [23] 将其作为池化操作应用于图的粗化。
  如今,平均/最大/求和池化是实现下采样的最原始、最有效的方法,因为在池化窗口中计算均值/最大/总和值的速度很快: h G = m e a n / max ⁡ / s u m ( h 1 ( K ) , h 2 ( K ) , . . . , h n ( K ) ) {h_G} = mean/\max /sum(h_1^{(K)},h_2^{(K)},...,h_n^{(K)}) hG=mean/max/sum(h1(K),h2(K),...,hn(K)) 其中 K 是最后一个图卷积层的索引。
  Zhang等人[52]提出了具有类似池化策略的 DGCNN,名为 SortPooling,该策略通过将节点重新排列为有意义的顺序来执行池化。与 ChebNet [21] 不同,DGCNN 根据节点在图中的结构角色对节点进行排序。来自空间图卷积的图的无序节点特征被视为连续的 WL 颜色 [93],然后将它们用于对节点进行排序。除了对节点特征进行排序之外,它还通过截断/扩展节点特征矩阵将图大小统一为 q。
  上述池化方法主要考虑图的特征,忽略图的结构信息。最近,提出了可微池化(DiffPool)[54],它可以生成图的层次表示。然而,DiffPool 的缺点是它在池化后生成密集图,之后计算复杂度变为 O(n2)。最近,提出了 SAGPool [102] 方法,该方法同时考虑节点特征和图拓扑,并以自注意力方式学习池化。总的来说,池化是减少图大小的重要操作。如何提高池化的有效性和计算复杂性是一个有待研究的开放问题。

理论方面的讨论

感受野的形状 节点的感受野是有助于确定其最终节点表示的节点集。当组合多个空间图卷积层时,节点的感受野每次都会向其远处的邻居前进一步。Micheli [24] 证明存在有限数量的空间图卷积层(六度空间理论),使得对于每个节点 v ∈ V,节点 v 的感受野覆盖图中的所有节点。因此,ConvGNN 能够通过堆叠局部图卷积层来提取全局信息。

图同构 如果两个图在拓扑上相同,则它们是同构的。给定两个非同构图G1和G2, Xu等人[57]证明了如果一个GNN将G1和G2映射到不同的嵌入,这两个图可以通过同构的Weisfeiler-Lehman (WL)检验来识别为非同构[93]。结果表明,常见的GNN如GCN[22]和GraphSage[42]无法区分不同的图结构。Xu等人[57]进一步证明了如果GNN的聚合函数和读出函数是单射的,那么在区分不同图时,GNN的功能最多与WL检验一样强大。

普遍近似 众所周知,具有一个隐层的多感知器前馈神经网络可以近似任何Borel可测函数[105]。关于GNN的普遍逼近能力的研究很少。Hammer等人[106]证明了级联相关可以逼近具有结构化输出的函数。Scarselli等人[107]证明了RecGNN[15]可以近似任何保持展开等价直至任何精度的函数。如果两个节点的展开树是相同的,即节点的展开树是通过在一定深度上迭代扩展节点的邻域来构建的,则这两个节点的展开等价。Xu等人[57]表明消息传递[27]框架下的ConvGNN并不是多重集上定义的连续函数的通用逼近器。Maron等人[104]证明不变图网络可以逼近图上定义的任意不变函数。

图自动编码器 (GAE)

  图自动编码器(GAE)是无监督学习框架,它将节点/图编码到潜在向量空间中,并根据编码信息重建图数据。GAE 用于学习网络嵌入和图生成分布。对于网络嵌入,GAE 通过重建图结构信息(例如图邻接矩阵)来学习潜在节点表示。对于图生成,一些方法逐步生成图的节点和边,而其他方法则一次性输出图。图 2c 展示了用于网络嵌入的 GAE。
在这里插入图片描述
  图自动编码器(GAE)是一种深度神经架构,它将节点映射到潜在特征空间并从潜在表示中解码图信息。GAE 可用于学习网络嵌入或生成新图。表 V 总结了所选 GAE 的主要特征。下面,我们从网络嵌入和图生成两个角度对 GAE 进行简要回顾。
在这里插入图片描述

网络嵌入

先从AE 自动编码器介绍。AE是一种无监督的数据维度压缩和数据特征表示方法。
在这里插入图片描述
损失函数 使 x ≈ x ′ x \approx x' xx (使降维的 z z z 能够代表输入 x x x
 
 
GAE 图自动编码器  GCN在AE上的应用
在这里插入图片描述
目的:输入图≈输出图
损失约束: A ∗ ≈ A {A^*} \approx A AA
编码器: z = G C N ( G C N ( x , A ) , A ) z = GCN(GCN(x,A),A) z=GCN(GCN(x,A),A)
解码器: A ∗ = σ ( z ⋅ z T ) {A^*} = \sigma (z \cdot {z^T}) A=σ(zzT) 即重构邻接矩阵
 
 
  网络嵌入是节点的低维向量表示,它保留节点的拓扑信息。GAE 使用编码器提取网络嵌入并使用解码器强制网络嵌入来学习网络嵌入,以保留图拓扑信息,例如 PPMI 矩阵和邻接矩阵。
  早期的方法主要采用多层感知器来构建用于网络嵌入学习的 GAE。图自动编码器(GAE)[61]利用GCN[22]同时编码节点结构信息和节点特征信息。GAE 通过最小化给定真实邻接矩阵 A 和重建邻接矩阵 A* 的负交叉熵来训练。
  由于自动编码器的容量,简单地重建图邻接矩阵可能会导致过度拟合。变分图自动编码器(VGAE)[61]是 GAE 的变分版本,用于学习数据分布。
  与 GAE 类似,GraphSage [42] 使用两个图卷积层对节点特征进行编码。GraphSage 没有优化重建误差,而是表明可以通过带有损失的负采样来保留两个节点之间的关系信息。DGI [56] 通过最大化局部互信息来驱动局部网络嵌入来捕获全局结构信息。它在实验上显示出比 GraphSage [42] 明显的改进。
  对于上述方法,它们本质上是通过解决链接预测问题来学习网络嵌入的。然而,图的稀疏性导致正节点对的数量远小于负节点对的数量。为了缓解学习网络嵌入中的数据稀疏问题,另一项工作通过随机排列或随机游走将图转换为序列。这样,那些适用于序列的深度学习方法就可以直接用于处理图。

图生成

  对于多个图,GAEs能够通过将图编码成隐藏表示,并将给定隐藏表示的图结构解码来学习图的生成分布。大多数用于图生成的GAEs都是为了解决分子图生成问题而设计的,在药物发现中具有很高的实用价值。这些方法要么以顺序的方式提出一个新的图,要么以全局的方式提出一个新的图。
  顺序方法通过逐步提出节点和边来生成图。Gomez等人[111]、Kusner等人[112]和Dai等人[113]用深度CNN和RNNs分别作为编码器和解码器,对名为SMILES的分子图串表示的生成过程进行建模。虽然这些方法是特定于领域的,但通过迭代地向增长的图中添加节点和边,直到满足一定的条件,可以对一般的图进行替代解决方案。DeepGMG通过一系列决策生成图:即是否增加一个节点,增加哪个节点,是否增加一条边,以及哪个节点连接到新的节点。生成节点和边的决策过程是基于节点状态和由RecGNN更新的增长图的图状态。GraphRNN[66]提出了一种图级RNN和一种边级RNN,对节点和边的生成过程进行建模。图级RNN每次向节点序列添加一个新节点,而边级RNN生成一个二进制序列,表示新节点与序列中先前生成的节点之间的连接。
  全局方法一次输出一个图。Graph Variational Autoencoder (GraphVAE)[67]将节点和边的存在性建模为独立的随机变量。以一个ConvGNN作为编码器,一个简单的多层感知作为解码器,GraphVAE输出一个带有邻接矩阵、节点属性和边缘属性的生成图。控制生成的图的全局属性是一个挑战,例如图的连接性、有效性和节点兼容性。正则化图变分自动编码器(RGVAE)[68]进一步对图变分自动编码器施加有效性约束,以正则化解码器的输出分布。分子生成对抗网络(Molecular Generative Adversarial Network, MolGAN)[69]将convgnn[114]、GANs[115]和强化学习目标相结合,生成具有期望属性的图。MolGAN由一个生成器和一个鉴别器组成,它们相互竞争以提高生成器的真实性。在MolGAN中,生成器尝试提出一个假图及其特征矩阵,而鉴别器的目标是将假样本从经验数据中区分出来。此外,同时引入奖励网络,根据外部评价器,鼓励生成的图具有特定的属性。NetGAN[70]将LSTMs[7]与Wasserstein GANs[116]结合在一起,通过基于随机行走的方法生成图。NetGAN训练一个生成器在LSTM网络中生成可信的随机游动,并执行一个鉴别器来识别假的随机游动和真实的随机游动。训练后,通过归一化基于生成器产生的随机游动计算的节点共现矩阵,得到一个新的图。
  简单地说,顺序方法将图线性化为序列。由于循环的存在,它们可能会丢失结构信息。全局方法会同时生成一个图。由于GAE的输出空间高达O(n2),它们无法扩展到大型图形。

时空图神经网络(STGNN)

  时空图神经网络(STGNN)旨在从时空图中学习隐藏模式,这在交通速度预测[72]、驾驶员操纵预期[73]和人类动作识别等各种应用中变得越来越重要[ 75]。STGNN 的关键思想是同时考虑空间依赖性和时间依赖性。当前许多方法集成图卷积来捕获空间依赖性,并使用 RNN 或 CNN 来建模时间依赖性。图 2d 说明了用于时空图预测的 STGNN。
在这里插入图片描述
  在许多真实世界的应用程序中,图在图结构和图输入方面都是动态的。时空图神经网络(stgnn)在图的动态捕捉中占有重要的地位。这类方法的目标是在假定连接节点之间相互依赖的情况下,对动态节点输入进行建模。例如,交通网络由放置在道路上的速度传感器组成,其边权值由成对传感器之间的距离决定。由于一条道路的交通状况可能取决于相邻道路的条件,因此在进行交通速度预测时需要考虑空间依赖性。作为一种解决方案,stgnn同时捕获图的空间和时间依赖性。stgnn的任务可以是预测未来的节点值或标签,或预测时空图标签。stgnn有两个方向,基于rnn的方法和基于cnn的方法。大多数基于rnn的方法通过使用图卷积[48],[71],[72]过滤输入和传递到循环单元的隐藏状态来捕获时空相关性。图卷积循环网络(Graph Convolutional Recurrent Network, GCRN)[71]将LSTM网络与ChebNet[21]结合起来。扩散卷积循环神经网络(Diffusion Convolutional Recurrent Neural Network, DCRNN)[72]将提出的扩散图卷积层(式18)纳入GRU网络。此外,DCRNN采用编码器-解码器框架预测节点值的未来K步长。
  另一项并行工作使用节点级rnn和边缘级rnn来处理时间信息的不同方面。structure - rnn[73]提出了一个循环框架来预测每个时间步的节点标签。它包括两类神经网络,即节点-神经网络和边缘-神经网络。每个节点和每条边的时间信息分别通过一个node- rnn和一个edge- rnn传递。为了整合空间信息,node-RNN将edgernn的输出作为输入。由于为不同的节点和边假设不同的 RNN 会显着增加模型的复杂性,因此它将节点和边分成语义组。同一语义组中的节点或边共享相同的RNN模型,从而节省了计算成本。
  基于 RNN 的方法面临耗时的迭代传播和梯度爆炸/消失问题。作为替代解决方案,基于 CNN 的方法以非递归方式处理时空图,具有并行计算、稳定梯度和低内存需求的优点。如图 2d 所示,基于 CNN 的方法将 1D-CNN 层与图卷积层交织在一起,以分别学习时间和空间依赖性。CGCN [74] 将一维卷积层与 ChebNet [21] 或 GCN [22] 层集成。它通过按顺序堆叠门控一维卷积层、图卷积层和另一个门控一维卷积层来构造时空块。
  以前的方法都使用预定义的图结构。他们假设预定义的图结构反映了节点之间真正的依赖关系。然而,在一个时空背景下,许多图数据的快照,可以自动从数据中学习潜在的静态图结构。然而,在一个时空背景下,许多图数据的快照,可以自动从数据中学习潜在的静态图结构。对于一个复杂的基于cnn的时空神经网络,Graph WaveNet在没有给出邻接矩阵的情况下表现良好。
  学习潜在的静态空间依赖关系可以帮助研究人员发现网络中不同实体之间可解释和稳定的相关性。然而,在某些情况下,学习潜在的动态空间相关性可以进一步提高模型的精度。例如,在交通网络中,两条道路之间的行驶时间可能取决于其当前的交通状况。GaAN [48] 采用注意力机制通过基于 RNN 的方法学习动态空间依赖性。注意力函数用于在给定当前节点输入的情况下更新两个连接节点之间的边权重。ASTGCN [77] 进一步包括空间注意函数和时间注意函数,以通过基于 CNN 的方法学习潜在的动态空间依赖性和时间依赖性。学习潜在空间依赖关系的常见缺点是需要计算每对节点之间的空间依赖权重,其成本为 O(n2)。

图任务分类

以图结构和节点内容信息作为输入,GNN 的输出可以通过以下机制之一专注于不同的图分析任务:

  • 节点级 输出与节点回归和节点分类任务相关。RecGNN 和 ConvGNN 可以通过信息传播/图卷积提取高级节点表示。使用多感知器或 softmax 层作为输出层,GNN 能够以端到端的方式执行节点级任务。
  • 边级 输出与边分类和链接预测任务相关。将 GNN 中的两个节点的隐藏表示作为输入,可以利用相似函数或神经网络来预测两个节点之间的边的标签/连接强度。
  • 图级 输出与图分类任务相关。为了获得图级别的紧凑表示,GNN 通常与池化和读出操作相结合。

训练模式分类

许多 GNN(例如 ConvGNN)可以在端到端学习框架内以(半)监督或无监督的方式进行训练,具体取决于手头可用的学习任务和标签信息。

  • 节点级分类的半监督学习 给定一个部分节点被标记而其他节点未标记的单个网络,ConvGNN 可以学习一个稳健的模型,该模型可以有效地识别未标记节点的类标签 [22]。为此,可以通过堆叠几个图卷积层和一个用于多类分类的
    softmax 层来构建端到端框架。
  • 图级分类的监督学习 图级分类旨在预测整个图的类标签[52]、[54]、[78]、[79]。该任务的端到端学习可以通过图卷积层、图池化层和/或读出层的组合来实现。图卷积层负责精确的高级节点表示,而图池化层则起到下采样的作用,每次都会将每个图粗化为子结构。读出层将每个图的节点表示折叠成图表示。通过将多层感知器和
    softmax 层应用于图表示,我们可以构建用于图分类的端到端框架。
  • 图嵌入的无监督学习 当图中没有可用的类标签时,我们可以在端到端框架中以纯粹无监督的方式学习图嵌入。这些算法以两种方式利用边级信息。一种简单的方法是采用自动编码器框架,其中编码器采用图卷积层将图嵌入到潜在表示中,然后使用解码器来重建图结构[61]、[62]。另一种流行的方法是利用负采样方法,将一部分节点对采样为负对,而图中具有链接的现有节点对为正对。然后应用逻辑回归层来区分正对和负对[42]。

应用

  由于图结构数据无处不在,GNN 具有广泛的应用。在本节中,我们分别总结了基准图数据集、评估方法和开源实现。我们详细介绍了 GNN 在各个领域的实际应用。

图数据集

我们主要将数据集分为四组,即引文网络、生化图、社交网络等。在表六中,我们总结了选定的基准数据集。
在这里插入图片描述

评估和开源实现

节点分类和图分类是评估 RecGNN 和 ConvGNN 性能的常见任务。

节点分类 在节点分类中,大多数方法都遵循基准数据集(包括 Cora、Citeseer、Pubmed、PPI 和 Reddit)上训练/测试的标准划分。他们报告了多次运行测试数据集的平均准确度或 F1 分数。应该指出的是,这些结果并不一定代表严格的比较。Shchur等人发现[131]在评估GNN在节点分类方面的性能时存在两个缺陷。首先,在所有的实验中使用相同的训练/测试分割会低估泛化误差。其次,不同的方法采用不同的训练技术,如超参数调优、参数初始化、学习率衰减和提前停止。为了进行相对公平的比较,可以参考Shchur等人[131]的论文。
图分类 研究人员通常采用10倍交叉验证(cv)进行模型评价。然而,正如[132]所指出的,不同作品的实验设置是模糊的,不统一的。特别是,[132]提出了在模型选择和模型评估中正确使用数据分割的问题。[132]在标准化和统一的评估框架中比较 GNN。他们应用外部 10 倍交叉验证来估计模型的泛化性能,并应用内部保留技术,以 90%/10% 的训练/验证比例进行模型选择。另一种程序是双交叉验证方法,该方法使用外部 k 倍交叉验证进行模型评估,使用内部 k 倍交叉验证进行模型选择。
开源实现 促进深度学习研究中的基线实验工作。值得注意的是,Fey等人[92]在PyTorch中发布了一个名为PyTorch几何的几何学习库,它实现了许多GNN。最近,Deep Graph Library (DGL) [133]发布了,它在流行的深度学习平台(如PyTorch和MXNet)上提供了许多GNN的快速实现。

实际应用

  GNN在不同的任务和领域中有许多应用。尽管一般任务可以由每个类别的 GNN 直接处理,包括节点分类、图分类、网络嵌入、图生成和时空图预测,但其他与图相关的一般任务,例如节点聚类[134]、链接预测[135] ],图划分[136]也可以通过 GNN 来解决。

计算机视觉 GNN 在计算机视觉中的应用包括场景图生成、点云分类和动作识别。
  识别对象之间的语义关系有助于理解视觉场景背后的含义。场景图生成模型旨在将图像解析为由对象及其语义关系组成的语义图[137]、[138]、[139]。另一个应用程序通过生成给定场景图的真实图像来逆转这一过程[140]。由于自然语言可以被解析为语义图,其中每个单词代表一个对象,因此对具有文本描述的图像进行合成是一种很有前途的解决方案。
  对点云进行分类和分割使激光雷达设备能够“看到”周围的环境。点云是由 LiDAR 扫描记录的一组 3D 点。 [141]、[142]、[143]将点云转换为k近邻图或超点图,并使用ConvGNN来探索拓扑结构。
  识别视频中包含的人类动作有助于从机器角度更好地理解视频内容。一些解决方案检测视频片段中人体关节的位置。由骨骼连接起来的人体关节自然形成一个图形。给定人类关节位置的时间序列,[73]、[75]应用 STGNN 来学习人类行为模式。
  而且,GNN在计算机视觉中的应用方向数量仍在增长。它包括人与物体交互[144]、少样本图像分类[145]、[146]、[147]、语义分割[148]、[149]、视觉推理[150]和问题回答[151]。
 
自然语言处理 GNN 在自然语言处理中的一个常见应用是文本分类。GNN 利用文档或单词的相互关系来推断文档标签 [22]、[42]、[43]。
  尽管自然语言数据表现出顺序,但它们也可能包含内部图结构,例如句法依赖树。句法依存树定义了句子中单词之间的句法关系。Marcheggiani等人[152]提出了一种基于CNN/RNN句子编码器的句法GCN。句法 GCN 基于句子的句法依存树聚合隐藏词表示。Bastings等[153]将句法GCN应用于神经机器翻译任务。Marcheggiani等人[154]进一步采用与Bastings等人[153]相同的模型来处理句子的语义依存图。
  图到序列学习根据在给定抽象单词的语义图(称为抽象含义表示)的情况下生成具有相同含义的句子。Song等[155]提出了一种 图-lstm 来编码图级语义信息。Beck等人[156]将GGNN[17]应用于图到序列学习和神经机器翻译。相反的任务是顺序到图的学习。在知识发现过程中,根据句子生成语义图或知识图非常有用[157],[158]。
 
交通 准确预测交通网络中的交通速度、交通量或道路密度对于智能交通系统至关重要。[48]、[72]、[74] 使用 STGNN 解决流量预测问题。他们将交通网络视为时空图,其中节点是安装在道路上的传感器,边通过节点对之间的距离来测量,每个节点将窗口内的平均交通速度作为动态输入特征。另一个工业级应用是出租车需求预测。Yao等[159]在给定历史出租车需求、位置信息、天气数据和事件特征的情况下,结合LSTM、CNN和LINE[160]训练的网络嵌入,形成每个地点的联合表示,以预测某一时间段内某一地点的出租车需求量。
 
推荐系统 基于图的推荐系统以项目和用户为节点。通过利用项目与项目、用户与用户、用户与项目之间的关系以及内容信息,基于图的推荐系统能够产生高质量的推荐。推荐系统的关键是对项目对用户的重要性进行评分。因此,它可以被转换为一个链接预测问题。为了预测用户和物品之间缺失的链接,Van等人[161]和Ying等人[162]提出了一种使用convgnn作为编码器的GAE。Monti等人[163]将神经网络与图卷积结合起来,学习生成已知评级的基本过程。
 
化学 在化学领域,研究者利用GNN来研究分子/化合物的图结构。在分子/复合图中,原子被视为节点,化学键被视为边。节点分类、图分类和图生成是针对分子/化合物图的三个主要任务,以便学习分子指纹[85]、[86]、预测分子特性[27]、推断蛋白质界面[164]和合成化合物[65],[69],[165]。
 
其他 GNN 的应用不限于上述领域和任务。人们已经探索将 GNN 应用于各种问题,例如程序验证 [17]、程序推理 [166]、社会影响预测 [167]、对抗性攻击预防 [168]、电子健康记录建模 [169]、[170] ]、大脑网络[171]、事件检测[172]和组合优化[173]。

未来发展方向

尽管 GNN 已经证明了其在学习图数据方面的强大能力,但由于图的复杂性,挑战仍然存在。在本节中,我们提出了 GNN 的四个未来方向。

模型深度 深度学习的成功在于深度神经架构[174]。然而,Li等人表明,随着图卷积层[53]数目的增加,ConvGNN的性能急剧下降。随着图卷积将相邻节点的表示推向彼此更接近,理论上,通过无限数量的图卷积层,所有节点的表示将收敛到单个点[53]。这就提出了一个问题:深入学习是否仍然是学习图数据的良好策略。

可扩展性权衡 GNN 的可扩展性是以破坏图完整性为代价的。无论使用采样还是聚类,模型都会丢失部分图信息。通过采样,节点可能会错过其有影响力的邻居。通过聚类,图可能会失去独特的结构模式。如何权衡算法可扩展性和图完整性可能是未来的研究方向。

异质性 当前大多数 GNN 都假设同质图。目前的 GNN 很难直接应用于异构图,异构图可能包含不同类型的节点和边,或者不同形式的节点和边输入,例如图像和文本。因此,应该开发新的方法来处理异构图。

动态性 图本质上是动态的,节点或边可能会出现或消失,并且节点/边输入可能会随时间变化。需要新的图卷积来适应图的动态性。尽管 STGNN 可以部分解决图的动态性,但很少有人考虑如何在动态空间关系的情况下执行图卷积。

结论

  在本次调查中,我们对图神经网络进行了全面的概述。我们提供了一种分类法,将图神经网络分为四类:循环图神经网络、卷积图神经网络、图自动编码器和时空图神经网络。我们对类别内或类别之间的方法进行彻底的回顾、比较和总结。然后我们介绍图神经网络的广泛应用。总结了图神经网络的数据集、开源代码和模型评估。最后,我们提出了图神经网络的四个未来方向。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1216110.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

用电子签章软件怎么给标书一键签章的小故事

在这个数字化时代,电子签章已经成为了商务往来的重要一环。作为国内电子签章软件的佼佼者,微签凭借其19年的电子签研发应用经验,为中小企业提供了安全可靠的电子签章软件服务。 从审批场景到合同签署,微签都展现出卓越的电子签章…

vb.net 实时监控双门双向门禁控制板源代码

本示例使用设备介绍:实时网络双门双向门禁控制板可二次编程控制网络继电器远程开关-淘宝网 (taobao.com) Imports System.Net.Sockets Imports System.Net Imports System.Text Imports System.ThreadingImports System.Net.NetworkInformation Imports System.Man…

(C++类的初始化和清理)构造函数与析构函数

目录 1. 类的六个默认成员函数2. 构造函数(Constructor)2.1 概念2.2 特性 3. 析构函数(Destructor)3.1 概念3.2 特性 1. 类的六个默认成员函数 一个类中如果什么成员都没有,称为空类 class Date {};但是这并不代表空…

树状图PPT怎么做?用这个树状图制作软件轻松拿捏!

在我们的日常工作和学习中,PPT已经成为了我们常见的展示方式。 在制作PPT时,树状图PPT是非常重要和常用的一种,并且在商务、教育等领域都非常受欢迎。那么,究竟什么是树状图PPT,如何使用树状图制作软件来快速绘制树状…

肖sir__linux讲解(2.1)

linux命令 cp 复制命令 a、cp 原文件名称 新文 件名称(不存在的文件) 案例:cp a k 截图: b.cp 原文件名称 原有文 件名称(存在的文件) 案例:cp a b 截图: c、cp 指定路径复制 格式&#xff…

C#源代码生成器深入讲解二

在阅读本文前需掌握源代码生成器相关知识C#源代码生成器深入讲解一 C#源代码生成器深入讲解二—增量生成器 源代码生成器有个非常大的弊病,每次都会遍历所有的语法树来分析,这样就有个问题,每次可能只修改了很少一部分或者只有很少一部分的代码需要分析…

Linux使用Docker完整安装Superset3,同时解决please use superset_config.py to override it报错

文章目录 Docker安装Superset流程1. 首先获取镜像2. 生成SSL3. 创建Superset容器4. 更新数据库5. 测试访问Superset Docker安装Superset流程 1. 首先获取镜像 docker pull amancevice/superset2. 生成SSL 接下来我们运行一些额外的程序: openssl rand -base64 4…

每一天的努力,都会让远方变得更近——中国人民大学与加拿大女王大学金融硕士

在这个快速变化的时代,我们每个人都面临着各种挑战和机遇。要想在这个世界上获得成功和成就,就需要不断地努力和奋斗。因为只有不断地努力,我们才能够实现自己的梦想和目标,每一天的努力都会让远方变得更近。中国人民大学与加拿大…

STM32——STM32F103时钟解析(正点原子资料+HAL库代码分析)

文章目录 前言时钟树详解系统时钟配置系统时钟使能配置 前言 上次写系统时钟解析的时候说出一篇103的时钟解析,我就整理HAL库开发的正点的资料,给小白梳理,我也是小白,不做权威使用。 时钟树详解 在 STM32 中,有五个…

MATLAB与Excel的数据交互

准备阶段 clear all % 添加Excel函数 try Excel=actxGetRunningServer(Excel.Application); catch Excel=actxserver(Excel.application); end % 设置Excel可见 Excel.visible=1; 插入数据 % % 激活eSheet1 % eSheet1.Activate; % 或者 % Activate(eSheet1); % % 打开…

springboot使用MongoTemplate根据正则表达式查询日期数据

一、日期正则表达式测试 匹配HH:mm:ss正则表达式写法有很多列举两个 .(点)代表任意匹配 ^开头必须是跟着的 : 精确匹配,必须是: ([0-1]?[0-9]|2[0-3]).([0-5][0-9]).([0-5][0-9]) ^([0-1]?[0-9]|2[0-3]).([0-5][0-9]).([0-5][0-9])$ ([0-1]?[0-9]|2[0-3]):([0-5][0-9]):…

【机器学习9】前馈神经网络

深度前馈网络是一类网络模型的统称,主要包括多层感知机、 自编码器、限制玻尔兹曼机, 以及卷积神经网络等。 1 激活函数 激活函数及对应导函数图其它Sigmoid 导数 在z很大或很小时都会趋近于0, 造成梯度消失的现象Tanh 其导数在z很大或很小…

Python接口自动化(什么是接口、接口优势、类型)

简介 经常听别人说接口测试,接口测试自动化,但是你对接口,有多少了解和认识,知道什么是接口吗?它是用来做什么的,测试时候要注意什么?坦白的说,笔者之前也不是很清楚。接下来先看一下…

模拟实现一个Linux中的简单版shell

exec系列接口中的环境变量 在之前我们学习了exec系类函数的功能就是将一个程序替换成另外一个程序。 然后就会出现下面的问题: 首先父进程对应的环境变量的信息是从bash中来的,因为我们自己写的父进程在运行的时候首先就要成为bash的子进程。这里我们将…

解决计算机丢失msvcr71.dll问题,总结5种解决方法分享

由于各种原因,计算机在使用的过程中可能会出现一些问题,其中之一就是丢失msvcr71.dll文件。这个问题可能会导致计算机无法正常运行某些程序或功能,给我们的生活和工作带来困扰。那么,当我们遇到这个问题时,应该如何解决…

福利来了,运营素材免费下载

各位运营的小伙伴,是不是在日常工作中常常用到这种场景:公司要做一个活动,老板让你写一个活动SOP,但是没有过往经验,一时无从下手,老板又死催。 自己想了解拉新的办法,但是一时找不到资料&…

双十一快递业务量暴增,快递驿站视频智能监控方案保障快递业务顺利开展

一、背景分析 虽然刚刚过去的双十一电商购物狂潮结束,但是快递业务量仍处在高峰期。据数据统计,今年全国邮政快递企业在11月11日当天共揽收快递包裹6.39亿件,是平日业务量的1.87倍,同比增长15.76%。随着电商购物节的不断增多&…

【Qt之QWizardPage】使用

介绍 QWizardPage类是向导页面的基类。 QWizard表示一个向导。每个页面都是一个QWizardPage。当创建自己的向导时,可以直接使用QWizardPage,也可以子类化它以获得更多控制。 页面具有以下属性,由QWizard呈现:a title,…

易点易动库存管理系统:革新企业库存管理,降本增效

在快速变化的市场环境中,企业面临着库存管理的巨大挑战。传统的库存管理方式耗时耗力,且常常因为信息滞后、数据不精确而导致库存积压或短缺。易点易动库存管理系统(以下简称“易点易动”)的出现,标志着企业库存管理进…

前端性能优化的方式

文章目录 前言DNS 预解析存储使用 HTTP / 2.0预加载预渲染懒执行与懒加载文件优化webpack优化如何根据chrome的timing优化移动端优化后言 前言 hello world欢迎来到前端的新世界 😜当前文章系列专栏:前端系列文章 🐱‍👓博主在前端…