经典图神经网络

GraphGAN

GraphGAN是一种结合了图神经网络和生成对抗网络(GAN)概念的机器学习模型。它旨在通过对抗学习框架解决图数据中的节点分类和链接预测问题,特别是在缺少标签数据的情况下。GraphGAN通过结合生成器和判别器两个主要组件来学习图中节点的有效表示。 GraphGAN的框架如下:设\(G=(V,\mathcal{E})\)为一个给定的图,其中\(V=\begin{Bmatrix}v_1,\ldots,v_V\end{Bmatrix}\)代表顶点的集合,而$\mathcal{E} = \left\{ e_{ij} \right\}_{i,j=1}^{V}$代表边的集合。对于给定的顶点\(\nu_{c}\),定义\(\mathcal{N}\left(\nu_{c}\right)\)为直接连接到\(\nu_{c}\)的顶点集,也就是顶点\(\nu_{c}\)的1-hop邻居。我们将顶点\(\nu_{c}\)的真实连通性分布表示为条件概率\(p_{\mathrm{true}}\left(\nu|\nu_{c}\right)\),它反映了\(\nu_{c}\)的连通性偏好和它所连接顶点的类型。从这个视角来看,\(\mathcal{N}\left(\nu_{c}\right)\)可以被看作是从\(p_{\mathrm{true}}\left(\nu|\nu_{c}\right)\)抽取的一组观察样本。给定图\(\mathrm{G}\),GraphGAN旨在学习以下两个模型: 生成器\(\mathrm{G}\)和判别器\(\mathrm{D}\)作为两个对手: 生成器\(\mathrm{G}\)将试图完美地匹配\(p_{\mathrm{true}}\left(\nu|\nu_{c}\right)\)并生成类似于\(\nu_{c}\)的真实直接邻居的相关顶点以欺骗判别器。而判别器\(\mathrm{D}\)则相反,会尝试检测这些顶点是\(\nu_{c}\)的真实邻居还是由其对手\(\mathrm{G}\)生成的。形式上, \(\mathrm{G}\)和\(\mathrm{D}\)在一个有以下价值函数\(V(G,D)\)的双人博弈中进行对抗: \(\min_{\theta_G}\max_{\theta_D}V(G,D)=\sum_{c=1}^V\left(\mathbb{E}_{\nu\sim p_{\mathbf{tne}}(\nu|\nu_c)}\left[\log D(\nu,\nu_c;\theta_D)\right]+\mathbb{E}_{\nu\sim p_G(\nu|\nu_c;\theta_G)}\left[\log\left(1-D(\nu,\nu_c;\theta_D)\right)\right]\right)\)       (1) 上式描述的最小最大(Minimax)博弈公式是生成对抗网络的核心。在图生成对抗网络(GraphGAN)的上下文中,生成器\(\mathrm{G}\)的目标是生成看起来像真实数据的样本。在GraphGAN的情境下,生成器试图生成看似是\(\nu_{c}\)的1-hop邻居的顶点。而鉴别器\(\mathrm{D}\)的目标是区分输入样本是来自于真实数据还是生成器生成的假数据。在GraphGAN中,它试图区分一个顶点对\((\nu,\nu_{c})\)是否是真实的1-hop邻点对。这个公式包含了两个期望(Expectations): 第一部分为真实数据的期望\(E_{v\sim p_{\mathrm{true}}\left(v\mid v_{c}\right)}\left[\log […]

GraphGAN Read More »

Deep Graph Infomax

Deep Graph Infomax(DGI)是一种基于图的无监督学习方法,其主要目标是学习图中节点的有效表示,即图数据的Embedding。DGI由Petar Veličković等人在2019年的论文中提出,这种方法通过最大化局部图结构(节点)和全局图结构(整个图)之间的互信息来学习节点表示,DGI整体的模型计算流程如图1所示。 从图1可以看出,第一步,算法需要一个正常图\((X,A)\)的扰动版本\((\widetilde{X},\widetilde{A})\),扰动版本通过负样本操作\(\mathrm{C}\)来实现。负样本操作可以通过多种方式实现,本质是一个函数。这个函数会接受图的节点特征\(\mathbf{X}\)和邻接矩阵\(\mathrm{A}\)作为输入,然后对原图结构进行变换,比如随机打乱节点的特征,或者在邻接矩阵中随机重排列边。目的是创建一个与原始图在统计特性上有显著区别的样本,这个负样本在后续步骤中用来帮助判别器学习如何区分图的正样本表示和与图不相关的表示。 第二步使用编码器函数\(\varepsilon(X,A)\)处理原始图的每个节点,从而得到每个节点的向量表示。这里的编码器\(\mathcal{E}\)通常是一个图神经网络(如GCN),它能够考虑节点的特征以及节点之间的连接(通过邻接矩阵\(\mathrm{A}\))来产生一个低维而信息丰富的特征向量\(\boldsymbol{h}_i\)。编码器的目的是捕获节点的局部图结构和节点特征,生成的集合\((H,A)=h_1,h_2,\cdots,h_n\)包含了输入图所有节点的这些表示。同理,在上一步中采样的负样本也需要经过编码器\(\boldsymbol{\varepsilon}\)的处理得到对应的\((\widetilde{H},\widetilde{A})\)。 第三步,算法需要从整个输入图的节点表示中提取一个单一的图级别的表示\(\mathbf{s}\)。这通常通过一个汇总函数\(R\left(\boldsymbol{H},A\right)\)完成,它可以是简单的平均节点表示,或者一个更复杂的结构,如基于注意力的汇总方法。这个图级别的表示\(\mathbf{s}\)应该捕获整个图的全局性质,它将在损失函数中用于比较正样本和负样本的节点表示。 最后一步是模型学习的关键。在这一步中,通过梯度下降来更新编码器\(\boldsymbol{\varepsilon}\)、汇总函数\(\text{R}\)以及判别器\(\text{D}\)的参数。判别器也是一个图神经网络,其任务是根据节点表示(\(h_{i}\)或\(h_{j}\))和图表示来判断节点是否属于该图。损失函数\(\text{L}\)在正样本的情况下鼓励判别器给出高的得分,而在负样本的情况下给出低的得分。通过最大化损失函数中定义的互信息量,模型能够训练出区分原始图节点和负样本节点表示的能力。 这个训练过程的目标是调整模型的参数,使得从正样本图中提取的节点表示与图的全局表示尽可能接近,而从负样本图中提取的节点表示则与图的全局表示尽可能远。即最大化节点表示和对应图级表示的互信息。这种方法认为,如果节点表示能够捕捉到与整个图表示高度相关的信息,那么这些节点表示就是有用的。这便完成了DGI的主要目标:学习图中节点的有效表示,即图数据的Embedding。 随机游走算法的目的也是学习图中节点的有效表示,且与DGI同属无监督学习方法,但在方法和理念上存在显著差异。随机游走侧重于通过模拟从一个节点开始的随机路径来捕捉图中节点的局部连接模式,以探索和利用图的局部结构特性。这种方法通过观察节点间的“游走”行为,直接反映了节点的邻近关系。相比之下,DGI采用基于互信息最大化的策略,通过学习节点表示和全局图表示之间的互信息来提取特征,不仅考虑了局部结构,还尝试捕捉整个图的全局上下文。DGI通常使用图神经网络如图卷积网络(GCN)作为编码器,更侧重于深度学习技术。总体而言,随机游走方法更加直观和简单,适用于图的局部特征学习;而DGI则是一种更复杂的深度学习方法,能够综合局部与全局信息,适合于需要深层特征提取的复杂图形任务。 此外,DGI(Deep Graph Infomax)和GAN(生成对抗网络)虽然都涉及到一个判别器组件,但它们的目标和训练过程有本质的不同。GAN由两个模型组成:生成器(Generator)和判别器(Discriminator)。生成器的目标是创建尽可能接近真实数据的新数据实例,而判别器则试图区分真实数据和生成器创建的伪造数据。这两个模型在训练过程中相互竞争,生成器不断改进其生成的数据质量以试图“欺骗”判别器,而判别器也不断改进其识别真伪数据的能力。这种对抗性的训练过程导致了生成器学会生成高质量的数据。DGI的目的不是生成新的数据,而是从图数据中学习有用的节点表示。在DGI中,判别器的作用不是与编码器对抗,而是帮助编码器学习生成高质量的节点嵌入。DGI使用一个非对抗的信息最大化原则,这个原则指导编码器生成的节点表示要包含足够的信息以便判别器可以准确区分节点是来自原始图还是扰动后的图(即正样本或负样本)。换句话说,判别器用于指导编码器捕捉到有意义的特征——使得这些特征对于区分不同图结构是有信息的。DGI的目标是通过这种方式提升表示的质量,而不是在编码器和判别器之间创建对抗。

Deep Graph Infomax Read More »

Relational Graph Convolutional Neural Network

对比GCN讲解RGCN的基本思想。GCN通过将图的邻接矩阵与节点特征结合,利用统一的权重矩阵\(\mathrm{W}\)来更新节点的特征,从而捕获图中的拓扑结构信息。这种方法在处理同质图时非常有效,即所有节点和边被假定具有相同的类型和属性。然而,GCN不直接处理图中的异质性或复杂的关系类型。 与GCN不同,RGCN(Relational Graph Convolutional Neural Network)被设计用来处理具有多种关系的异构图。此时,节点或边的种类有很多种情况,每种类型可能有其特定的属性和语义。例如,在生物医学的异构图中,不同类型的节点(如药物分子、疾病名称、蛋白质名称、生物通路等)和边(如促进、抑制、治疗、包含等)包含丰富的语义信息。RGNN能够对这些不同类型的实体和关系分别学习表示,这样能够更好地理解它们各自以及它们之间的复杂关系。用公式表示为: \(G=(V,E,R,T)\) 其中\(\text{V}\)为节点集,每个节点在下文表示为\(\nu_{i}\);\(\text{E}\)为边集,边\((\nu_{i},r,\nu_{j})\in E\);\(T(\nu_{i})\)为节点类型;\(\mathrm{R}\)为边类型集合,\(r_{i}\)在下文表示每个边的属性。 【例1】边有三种不同的类型\((r_1,r_2,r_3)\),分别用三种不同的线段格式表示,如图1所示。例如,节点A通过类型为\(r_{1}\) 的边与节点B和D相连,通过类型为\(r_{2}\) 的边与节点C相连等等。图1中也展示了关系图卷积网络(RGCN)的一个关键特点:不同类型的边使用不同的权重矩阵\((W_{_{r1}},W_{_{r2}},W_{_{r3}})\)来处理信息。这意味着,当更新一个节点的特征时,RGCN 会根据边的类型使用不同的权重矩阵。值得注意的是,在这个例子中,\(r_{1}\) 有三种类型,但这并不意味着要维护三个独立的神经网络。实际上,\(W_{_{r1}},W_{_{r2}},W_{_{r3}}\)可以共同组成一层神经网络的参数。假设用于更新边信息的神经网络输入输出都是由12个神经元组成的网络层,那么第1-3个神经元可以用于更新第一种边类型;第4-6个神经元用于更新第二种边类型;第7-9个神经元用于更新第三种边类型。 RGCN为每种类型的边引入了不同的权重矩阵,以此来捕获不同关系类型之间的细微差异。每一种关系类型的权重矩阵负责编码特定类型的边对节点特征更新的贡献。这样,RGCN能够综合节点的特征以及与其相连的各种类型边的信息,生成更丰富的节点表征。实际上,RGNN更像是一种思想,而不是固定的模型,它可以扩展到其它GNN模型上,如GraphSAGE、RGAT等。节点\(\mathrm{i}\)的特征更新规则在RGCN中可以表示为: \(\boldsymbol{h}_i^{(l+1)}=\sigma\left(\sum_{r\in R}\sum_{j\in N_r(i)}\frac{1}{c_{i,r}}\boldsymbol{W}_r^{(l)}\boldsymbol{h}_j^{(l)}\right)\) 其中: 在每一层中,对于每种类型的关系\(\mathrm{r}\),我们首先使用权重矩阵\(W_{r}^{(l)}\)来转换与节点\(\mathrm{i}\)相连的每个邻居节点\(\mathrm{j}\)的特征。然后,我们将所有这些转换后的特征进行加权求和,其中每个邻居的特征向量除以归一化常数\(c_{i,r}\),以避免不同数量的邻居对聚合结果的不均衡影响。最终,我们对所有关系类型的累加结果应用非线性激活函数,以得到节点\(\mathrm{i}\)在下一层的新特征向量\(h_i^{(l+1)}\)。这种机制允许RGCN分别学习不同类型的关系如何影响节点特征,而不是像GCN那样对所有边一视同仁,或者像GraphSAGE那样只是简单地聚合邻居节点的特征。

Relational Graph Convolutional Neural Network Read More »

Residual Gated Graph Convnets

Gated GCN 结合了GCNs的空间聚合能力和LSTM中的门控机制。这种结构设计旨在解决传统GCN在处理复杂图数据时面临的信息过载和信息损失问题。每个节点的状态更新不仅依赖于其邻居的信息,还受到门控机制的控制。这种操作使得网络可以在每一层学习到如何最有效地聚合邻近节点的信息,同时根据任务的需要丢弃无关信息,使其能够适应不同的图结构和动态变化的图数据,提供了更精细的信息处理能力。Gated GCN的模型设计如图1所示。 从图1中可以看到节点特征向量\(h_{i}\)和边特征向量\(e_{ij}\)的具体数据更新流程。首先每个节点\(\mathrm{i}\)在每一层\(\mathrm{l}\)有一个特征表示\(h_i^l\),节点\(\mathrm{i}\)邻居节点的特征向量集合为\(\begin{Bmatrix}h_j^l\end{Bmatrix}\)。每条边\((i,j)\)在每一层\(\mathrm{l}\)也有一个特征表示\(\boldsymbol{e}_{ij}\)。节点特征\(h_{i}^{l}\)通过矩阵\(U^{l}\)和\(A^{l}\)转换。相邻节点的特征\(\begin{Bmatrix}h_j^l\end{Bmatrix}\)通过矩阵\(V^{l}\)和\(B^{l}\)转换。边特征\(\begin{Bmatrix}e_{ij}^l\end{Bmatrix}\)通过矩阵\(C^{l}\)转换,这里的矩阵实际上是神经网络层中的参数矩阵。节点特征\(h_{i}^{l}\)、邻居节点的特征\(\begin{Bmatrix}h_j^l\end{Bmatrix}\)和边特征\(\begin{Bmatrix}e_{ij}^l\end{Bmatrix}\)分别经过\(A^{l}\)、\(B^{l}\)和\(C^{l}\)映射后的新特征表示将进行求和(Sum)操作,这一步的含义是进行边特征与节点特征的信息交互和融合,求和后的结果会经过激活函数ReLU的处理。处理后的结果一方面作为更新后的边特征\(\begin{Bmatrix}\boldsymbol{e}_{ij}^{l+1}\end{Bmatrix}\);另一方面将经过Sigmoid函数\(\sigma\)的处理产生一个门控信号,这个门控信号与相邻节点特征的加权(经过\(V^{l}\)变换后的\(h_{j}^{l}\))和相乘,实际上是对每个邻居节点的贡献进行缩放。这就是门控机制,它控制着信息的流向,与LSTM中的门控机制类似。最终,门控后的信息被累加到当前节点特征上 (经\(U^{l}\)变换后的\(h_{i}^{l}\)),通过一个求和(Sum)操作。结果再次通过ReLU激活函数得到当前层的输出结果。 经过上述处理后得到的结果\(\boldsymbol{h}_i^{l+1}\)是节点\(\mathrm{i}\)在下一层\(\mathrm{l+1}\)的新特征表示。同时,边的特征也更新为\(e_{ij}^{l+1}\)。这个过程体现了Gated GCN在图卷积中加入门控机制的重要性。通过调节门控信号,模型能够控制每个节点在其邻居之间传递的信息量,这样就可以捕捉到图中更加复杂的结构模式,同时减少不必要的信息传递,提高了模型的泛化能力和处理大规模图数据的效率。

Residual Gated Graph Convnets Read More »

Graph Isomorphism Network

在讲解Graph Isomorphism Network(GIN)之前,有必要先学习了解一下GNN模型的表达能力(Expressive Power),即GNN将不同图数据表示为不同嵌入向量的能力。这里会涉及一个被称为计算图的概念,图神经网络(GNN)的计算图是一种数据结构,它表示图中的节点以及它们之间的连接关系,用于有效地实施图数据上的学习算法。在这种结构中,每个节点聚合其邻居节点的信息,通过多次迭代更新其状态,从而捕捉和利用图的局部连接性质。为了研究GNN模型的表达能力,先来了解一下图数据的局部信息结构,如图1所示。 考虑图1两跳(2-hop)范围内计算图的几个特殊情况: (1)节点1和节点4,具有相同度数,但到其两跳(2-hop)邻居的信息上度数不同,导致计算图结构不同,因此可以区分这两个节点,如图2所示。 (2)节点1和节点5,因其自身度数不同而具有不同的局部结构信息,如图3所示。 (3)节点1和节点2,具有相同度数,也具有相同的邻居结构,在两跳邻居上,都具有相同的局部结构,如图4所示。 在图4的情况下,假设所有节点的初始化特征向量相同,且聚合节点信息时仅考虑两跳范围内的信息,那么节点1和节点2将被嵌入到同一个表示向量,GNN无法区分这两个节点。相比之下节点3、4、5由于计算图不同,理论上是可能由GNN区分开的。GNN模型应该有将不同的计算图映射到不同的节点向量的能力。想要区分不同的计算图,聚合的方式是关键,聚合函数表达能力越强,GNN表达能力越强。 然而,不管是求和、求平均,还是求最大值这些广泛被使用的聚合方式,都不是最佳的选择,如图5所示,两种图数据的计算图是不同的。但针对图5 (a)的初始化节点向量,求平均和求最大值的聚合方式都不能有效的区分出不同的计算图。类似的,对于图5(b)的初始化节点向量,求和的聚合方式也不能有效区分这两种计算图。这是因为图通过聚合节点向量后却得到了相同的新的节点向量。 从数学的角度上来讲,希望GNN的聚合函数是一种单射函数(Injective Function),即可把不同的元素映射成不同输出。换句话说,希望GNN的聚合函数能把不同的计算图映射生成不同的节点向量。显然,求和函数、求平均函数、求最大值函数都不是单射函数。根据Xu et al. 在论文Graph Wavelet Neural Network中得到定理可知:任一单射函数都可以表示为: \(\phi(\sum_{x\in

Graph Isomorphism Network Read More »

GNN经典论文推荐

GNN经典工作推荐 本资源汇总了图神经网络(GNN)领域的经典论文和工作,涵盖从基础模型到高级应用的广泛内容。 参考: GNN: graph neural network Contributed by Jie Zhou, Ganqu Cui, Zhengyan Zhang and Yushi Bai.   文档按照以下章节组织:

GNN经典论文推荐 Read More »

Graph Attention Network(GAT)

接下来介绍图注意力网络GAT,GAT可以有两种运算方式,一种被称为全局注意力(Global Graph Attention),顾名思义,就是每一个顶点都对于图上任意顶点都进行Attention运算。这样做的优点是完全不依赖于图的结构,即不依赖图的邻接矩阵,对于Inductive任务无压力。缺点也很明显:首先,丢掉了图结构的特征。其次,当图数据规模很大的时候,运算面临着高昂的成本。第二种被称为掩码图注意力机制(Mask Graph Attention),每个节点的Attention计算仅限于其邻接节点(即邻接矩阵所定义的直接连接)。这样做保留了图的结构特性,并利用了局部邻域信息。与全局注意力相比,掩码图注意力机制大大降低了计算成本,因为每个节点只与其直接邻居进行交互,而不是图中的所有节点。这种方式有效地利用了图的拓扑结构,可以捕捉到节点之间的局部关系,这对于许多图数据分析任务是非常有价值的。值得注意的是,虽然在掩码图注意力机制的GAT中用到了邻接矩阵,但是并不像GCN一样是利用全部的邻接矩阵信息,而是仅利用邻接矩阵查询某节点的邻居是谁。因此可以来处理Inductive任务。换句话说,GAT中节点可以通过注意力权重动态地选择其信息的重要来源,即它的邻居。这些权重是由模型通过学习自动确定的,并不依赖于预先定义的结构。这一点区别于GCN,后者使用的是固定的邻接矩阵加自环的归一化形式来确定节点之间信息传递的权重。 接下来主要讲解GAT中的 Attention机制。类似于Transformer中的注意力机制,GAT的计算也分为两步:计算注意力系数(Attention Coefficient)和加权求和(Aggregate)进行特征重要程度的重分配。对于顶点i,逐个计算它的邻居们(\(j\in N_{i}\))和它的注意力系数\(e_{ij}=\alpha([Wh_i\parallel Wh_j]),j\in\mathcal{N}_i\),具体流程如图1所示。 在图1中\(h_{i}^{l}\)是节点i的特征向量,\({h_j^l}\)是的节点i所有邻居的特征向量的集合,W是一个共享参数,通过一个单层的神经网络层来实现。\([\cdot||\cdot]\)代表对节点i,j经过神经网络层W变换后的特征进行拼接操作(Concat)。最后通过\(\alpha\)把拼接后的高维特征映射到一个实数上,也是通过一个单层的神经网络层来实现。显然学习节点i,j之间的相关性系数,就是通过可学习的神经网络层的参数W和\(\alpha\)映射完成的。有了相关系数,再对其进行Softmax归一化操作即可得到注意力系数\(\alpha_{ij}\)。至于加权求和的实现也很简单,根据计算好的注意力系数,把特征加权求和聚合(Aggregate)一下。即: \(h_i’=\sigma(\sum_{j\in\mathcal{N}_i}\alpha_{ij}Wh_j)\) \(h_i^{\prime}\)就是GAT 输出的对于每个节点i的新特征,这个新特征的向量表示融合了邻域信息,\(\sigma(\cdot)\)是激活函数。最后,与Transformer一样,GAT也可以用多头注意力机制来进化增强: \(h’_i(K)=\|_{k=1}^K\sigma(\sum_{j\in\mathcal{N}_i}\alpha_{ij}^kW^kh_j)\) 其中K是注意力机制的头数,每个头都会维护更新自己的参数,计算得到自己的结果,\(||_{k-1}^K\)表示将所有头的计算结果进行拼接(Concat)得到最后更新好的新节点向量。多头注意力机制也可以理解成用了集成学习的方法,就像卷积中,也要靠大量的卷积核才能有比较好的特征提取效果一样。最后通过一个示例来复习一下GAT的计算过程,图数据如图2所示。 计算注意力系数的两个神经网络层的参数分别是W和\(\alpha\),假设其初始化的值为W=[1,1],\(\alpha\)=[1,1,1,1]。注意,这些参数都是可学习的,随着网络的训练而更新。首先,计算注意力系数\(e_{ij}=\alpha(Wh_i,Wh_j)\),以节点1为例,与其它节点的相关性系数为: \(\begin{aligned}&e_{12}=\alpha\cdot[0.1,0.2,0.2,0.2]=0.7 \\&e_{13}=\alpha\cdot[0.1,0.2,0.25,0.2]=0.75 \\&e_{14}=0

Graph Attention Network(GAT) Read More »

Graph Sample and Aggregate Network(GraphSAGE)

相比GCN,GraphSAGE可以处理Inductive类型的任务。Inductive任务的关键在于设计能够良好泛化到未见过的图或节点上的模型。其挑战在于模型需要能够处理图的结构和特征在训练集和测试集之间可能有显著差异的情况。因此,适用于Inductive任务的GNN模型在设计时,应该侧重于学习能够代表单个节点的通用表示,而不是依赖于整个图的结构。这意味着模型应该能够从节点的局部邻域信息中学习其表示,而不是从整个图的全局结构中学习,GCN利用整个邻接矩阵这一做法就违反了这一点。GraphSAGE对此则进行了改进,更新节点信息的方式就不依赖于图的全局结构。具体来说,其更新过程主要分三步: (1)聚合邻居节点的信息,聚合函数有三种,将在下文展开解释; (2)将聚合后的信息与自身的节点信息进行拼接,进行特征的融合; (3)送入神经网络模型中进行映射,得到更新后的节点信息。 例如:图数据如图1所示,现在使用GraphSAGE对节点1进行更新。 节点1特征向量的更新步骤如下三步: (1)聚合邻居节点:\(h_{\mathcal{N}(1)}^1\leftarrow\mathrm{AGGREGATE}(h_3^0,h_4^0,h_5^0,h_6^0)\) (2)拼接自身信息:\(h_1^1\leftarrow\mathrm{CONCAT}(h_1^0,h_{\mathcal N(1)}^0)\) (3)经过神经网络映射:\(h_1^1\leftarrow\sigma(W^1\cdot\mathrm{CONCAT}(h_1^0,h_{N(1)}^0))\) 假设步骤1中聚合函数AGGREGATE是Mean函数,则代数得: \(h_{N(1)}^1\leftarrow\mathrm{AGGREGATE}(h_3^0,h_4^0,h_5^0,h_6^0)=\mathrm{Mean}([0.3,0.4],[0.2,0.2],[0.7,0.8],[0.5,0.6])\) 另外,在这个计算流程中有两个地方需要额外注意。第一,GraphSAGE在聚合某节点邻居信息的时候,并不是聚合全部的邻居,而是聚合K个邻居,K是一个超参数。举例,在图1中,若K等于3,则在聚合节点1的周围邻居时,随机从节点3、4、5、6中选择3个进行聚合。若K等于5,则除了选择节点1的周围4个邻居以外,再重复从这4个邻居中抽样一个节点。这样做的好处是,当图数据非常庞大时,选取某节点的全部邻居做聚合是非常耗时耗力的,若只选择其中的K个邻居,可以更快的进行计算。超参数K本质上是计算精度和计算速度之间的一种权衡。 第二个需要注意的是GraphSAGE定义了三种不同的聚合函数: \(\begin{aligned}&(1) \mathrm{Mean:}\quad AGG=\sum_{u\in N(\nu)}\frac{h_{u}^{(l)}}{\mid N(\nu)\mid} \leftarrow\\&(2)

Graph Sample and Aggregate Network(GraphSAGE) Read More »

Graph Convolutional Network(GCN)

先来看一下之前讲解的朴素图神经网络,如图1所示。 图1左上角方框部分可以看作图神经网络的初始状态。以1号节点为例,在图神经网络中,信息的传递是先汇聚一号节点的邻居节点信息,得到汇聚后的新向量,这个向量可以看作图神经网络第一层的输入信息\(H^{(l)}\)。然后\(H^{(l)}\) 经过一个 MLP 的映射, 得到一个新的输出向量\(H^{(l+1)}\) , 这个向量则作为第二层图神经网络的输入信息, 依次类推, 可以定义出一个多层的图神经网络。层与层之间的信息传递公式可以写作: \(H^{(l+1)}=\sigma(H^{(l)}W^{(l)})\) 而图卷积神经网络的计算公式则为: \(H^{l+1}=\sigma(\tilde{D}^{-\frac12}\tilde{AD}^{-\frac12}H(l)W(l))\) 两者最主要的区别就是图卷积神经网络比图神经网络多了一个\(\tilde{\boldsymbol{D}}^{-\frac12}\tilde{\boldsymbol{AD}}^{-\frac12}\)。其中,\(\tilde{A}=A+I_N\), \(A\) 就是图的邻接矩阵,\(I_{N}\)是一个全一的对角矩阵,即: \(\begin{aligned}&\boldsymbol{A}=\begin{pmatrix}0.&1.&1.&0.\\1.&0.&1.&0.\\1.&1.&0.&1.\\0.&0.&1.&0.\end{pmatrix}&\boldsymbol{I}_N=\begin{pmatrix}1.&0.&0.&0.\\0.&1.&0.&0.\\0.&0.&1.&0.\\0.&0.&0.&1.\end{pmatrix}\\&\tilde{\boldsymbol{A}}=\boldsymbol{A}+\boldsymbol{I}_N=\begin{pmatrix}1.&1.&1.&0.\\1.&1.&1.&0.\\1.&1.&1.&1.\\0.&0.&1.&1.\end{pmatrix}\end{aligned}\) 邻接矩阵 \(A\)表示的是节点与节点之间的关系,全一的对角矩阵\(I_{N}\)表示的是节点自身,所以\(\tilde{A}=A+I_N\)表示考虑了节点自身信息的邻接矩阵。 先将\(A\)矩阵加入图卷积神经网络的计算公式中,得到:

Graph Convolutional Network(GCN) Read More »

Scroll to Top