图神经网络模型介绍2

1.基于空域的图神经网络

        空域图神经网络出现得更早,并在后期更为流行。它们的核心理念是在空域上直接聚合邻接点的信息,非常符合人的直觉。如果欧几里得空的卷积扩展到图上,那么显然这些方法需要解决的一个问题是:如何定义一个可以 在不同邻居数目的节点上进行的操作,而且保持类似卷积神经网络的权值共享的特性。

        早期的图神经网络就是直接从空域(顶点上的信号)的角度来考虑的。 它的基础是不动点理论它的核心算法是通过节点的信息传播达到一个收敛的状态,基于此进行预测(由于它的态更新方式是循环迭代的,所以一般被认为是图循环网络而非图卷积网络)。

 (巴拿赫不动点定理)(X,d)是非空的完备度量空间,如果T:X→X是X上的一个压缩映射,也就是那么映射TX内有且只有一个不动点x*,使 得Tx*=x*。

        简单地说,如果我们有一个压缩映射,就从某一个初始值开始,一直循环迭代,最终到达唯一的收敛点。Scarselli等人认为,图上的每个节点有一个隐藏状态,这个隐藏状态需要包含它的邻接点的信息,而图神经网络的目标就是学习这些节点的隐藏状态。 根据不动点理论,我们只需要合理地在图上定义一个压缩映射来循环迭代各个顶点的状态,就可以得到收敛的隐藏状态了。那么,我们如何定义顶点状态的更新,又如何保证这是一个压缩映射呢?

        考虑到节点状态的更新应该同时利用邻接点和边的信息,在t+1 时刻,节点v的隐藏状态h+1 可以写成如下的形式:

        其中,Xv 是节点原本的属性向量,xe(v)表示与节点v相连的所有边的属性, hnet(v)表示v 的邻接点在t时刻的状态,Xne(v)表示 v 的邻接点原本的属性,f可以用一个简单的前馈神经网络来实现。为了保证f 是一个压缩映射,我们只需要限制f 对状态矩阵H 的偏导矩阵的大小。通过在最终的损失函数中加入对这个雅克比矩阵范数的惩罚项,这个约束条件就近似实现了。

        虽然初代图神经网络提出了一个很好的概念,但是不动点理论也造成了它在表示学习上的局限性。节点的状态最终必须吸收周围邻接点的信息并收敛到不动点,使每个节点最终共享信息,这导致了节点过于相似而难以区分,也就是出现了过平滑的问题。这是所有图神经网络模型都在尽力避免的一个问题。在深度学习时代来临之后,沿着循环神经网络的思路,Li 等人提出了门控图神经网络,不再要求图收敛,而是采用门控循环神经网络的方式更新节点状态,取得了很大的进步。再往后,在谱域上的图卷积网络的推动下,空域上的图卷积网络出现并迅速流行起来,在百花齐放的同时开始走向统一框架。

2.再谈图卷积网络

        在介绍谱域图神经网络的章节中,我们讲解了简化的图卷积网络。虽然它是从谱域进行推导的,但也可以被认为是一个空域图神经网络。回顾图卷积网络的卷积公式,假设只看其中的一行,也就是一个节点,那么公式就变成了(3.19):

其中,是正则化常数,N(vi)U{vi} 表示节点vi的邻接点集合和它自身。图卷积网络的每层操作本质上相当于节点属性的扩散,一 个节点的状态通过接收邻接点的信息来聚合更新。这就是典型的空域卷积的做法。因此,图卷积网络实际上架起了一座谱域和空域图卷积的桥梁。

3.Weisfeiler-Lehman测试(W-L 测试):

        这是一个测试两个图是否同构的经典算法。我们只介绍1维的W-L 算法(1-WL), 它也被称为染色(如图所示),具体实现如下。

对于所有的节点vi,重复以下步骤直到收敛:

(1)取邻接点{vj} 的特征集合{hvj}

(2)利用邻接点的特征更新中心节点vi的特征:

图神经网络的更新公式(3.19)可以看作一个散列函数的神经网络替代版,因此,图卷积网络在某种程度上可以看成一个带参数的1-WL算法。W-L 测试与图神经网络的表达力直接相关,它实际上是某一类图神经网络的表达力上限。

4. GraphSAGE: 归纳式图表示学习

        在介绍谱域图卷积网络时,我们讲到这类图神经网络的一个局限是不能扩展到其他的图上的。即使是在同一个图上,要测试的点如果不在训练时就加入图结构,我们是没有办法得到它的嵌入表示的。很多早期的图神经网络和图嵌入方法都有类似的问题,它们大多是在直推式学习的框架下进行的,即假设要测试的节点和训练节点在一个图中,并且在训练过程中图结构中的所有节点都已被考虑进去(要注意的是,虽然图卷积网络在提出时只用作半监督/直推式学习,但它其实是可以改造成归纳式学习的)。它们只能得到已经包含在训练过程中的节点的嵌入,对于训练过程中没有出现过的未知节点则束手无策。由于它们在一个固定的图上直接生成最终的节点嵌入,如果这个图的结构稍后有所改变,就需要重新训练。

        Hamilton提出了一个归纳式学习的图神经网络模型 ----GraphSAGE,主要观点是:节点的嵌入可以通过一个共同的聚合邻接点信息的函数得到。在训练时只需要得到这个聚合函数,就可以泛化到未知的节点上。显然,接下来的问题是如何定义这个聚合函数,以及怎么用它来定义一个可学习的图神经网络。

(1)GraphSAGE的前向传播过程

        假设我们有 K 层网络,在每一层中,节点状态更新的操作被分为两步:先把邻接点的信息全都用一个聚合函数聚合到一起,再与节点本身的状态进行整合和状态更新。在每一层的最后,当所有的节点状态都被更新后,我们对节点的向量表示进行正则化,缩放到单位长度为1的向量上。

        正则化是机器学习中用来防止模型过拟合的一种技术。过拟合是指模型在训练数据上表现得很好,但在新的、未见过的数据上表现不佳,即模型的泛化能力差。正则化通过在模型的损失函数中添加一个额外的项来实现,这个额外的项通常与模型的复杂度相关,目的是惩罚模型的复杂度。

        GraphSAGE中的SAGE 在这里是Sample(采样)和AggreGatE(聚合)的简写,它很好地概括了这个模型的核心步骤。我们在算法中只看到了聚合的部分。那么为什么需要采样呢?一方面是为了方便批处理,另一方面是为降低计算复杂度。为了方便批处理,在给定一批要更新的节点后,要先取出它们的K阶邻居节点集合;为了降低计算复杂度,可以只采样固定数量的邻居节点而非所有的。

(2)GraphSAGE的邻居采样

        如果我们在生成节点嵌入的过程中使用所有的邻居节点,那么它的计算复杂度是不可控的,因为我们并不知道这个邻居节点的集合到底有多大。在GraphSAGE 的每个迭代过程中,我们对每个节点v,从它的邻居节点集合N(v) 中均匀采样出固定数量的节点做聚合。如果GraphSAGE有K层,每个点在每一层采样的邻居数量为S₁  (L∈[1,K])。在实际应用中,一般取K=2,S₁S₂≤500

总结一下GraphSAGE的运行步骤。

(1)定义邻接域:对每个节点采样固定数量的邻居节点。

(2)根据算法中的聚合函数聚合邻居节点的信息。

(3)得到所有节点的嵌入向量并作为下游任务的输入。

(3)GraphSAGE中聚合函数的选择

        图神经网络的一个重要特性是保证不因节点的顺序变化而改变输出,所以我们选取的聚合函数应该是对称的。GraphSAGE 给出了三种可选择的聚合函数。

(1)均值聚合:均值聚合即对所有邻接点的每个维度取平均值。我们只需要把算法中的Aggregate函数换成均值函数。

(2)LSTM 聚合:LSTM 显然比均值聚合有更强的表达力,但它的问题是不对称。因此,在应用LSTM 聚合时,GraphSAGE 使用了一些小技巧,那就是每次迭代时先随机打乱要聚合的邻接点的顺序,再使用LSTM

(3)池化聚合:池化聚合先让所有邻接点通过一个全连接层,然后做最大化池化。它的优点是既对称又可训练。

GraphSAGE小结

        GraphSAGE的提出为图神经网络的发展带来了非常积极的意义:归纳式学习的方式让图神经网络更容易被泛化;而邻 居采样的方法则引领了大规模图学习的潮流。

5.消息传递神经网络

       在图卷积网络和GraphSAGE的模型中,空域图神经网络都是以某种形式从邻居节点传递信息到中心节点,实现节点状态的更新的。几乎所有的图神经网络都可以被认为是某种形式的消息传递,于是消息传递网络作为一种空域卷积的形式化框架被提出。类似于GraphSAGE 的聚合与更新操作,它将图神经网络消息传播的过程分解为两个步骤:消息传递与状态更新操作,分别用M 函数U函数表示。

        在每一层中,假设一个节点v在时间t的状态为ht(下标)v(上标),N(v)  是它的邻接点集合,evw 是与之相连的边,消息传递网络对节点隐藏状态的更新可表示为

hv(下标)t+¹=U(hv(下标)t,hw(下标)t,mv(下标)t+1),对于每个节点,收到来自每个邻居的消息后,通过自己上一时间点的状态hv(下标)t, 和收到的消息mv(下标)t+¹共同更新自己的状态。消息传递网络相对于我们之前讲到的模型有一个很大的不同,即加入了边的信息。这使得它可以很好地扩展到包含多种边的异构图上。

        得到所有节点的最终状态{hv(下标)t}后,用一个读取函数READOUT 将所有节点的表示整合成整个图的向量和表示:

y^{\sim }=READOUT({hv(下标)T|vG})            

面我们用几个例子介绍经典的图神经网络是怎么用消息传递的方式表示的。                  

6.虚拟节点 

        息传递网络不仅统一了很多不同的图神经网络,它的作者还提一些基于此框架的变形和使用小技巧。其中一个很有用但是经常被忽略的技巧是在图中添加一个全局的虚拟节点,目的是使图中所有节点都可以通过这个虚拟节点接收和传递消息,这样哪怕两个离得很远的节点也可以通过虚拟节点把消息传给对方。添加虚拟节点的方式很简单,只需在图上增加一个新的全局节点(即虚拟节点,也被称为大节点), 并将它与图中每一个节点用一种特殊类型的边连接起来。

7.图注意力网络

        注意力机制几乎成了很多深度学习模型中必需的模块,简单地讲,注意力机制通过赋予输入不同的权重,区分不同元素的重要性,从而抽取更加关键的信息,达到更好的效果。节点和节点的重要性是不同的,于是我们可以将注意力机制应用在图神经网络上

        下面我们介绍图注意力网络的每层是如何定义的。假设我们有N个节点,作为输入的每个节点i  的特征是 h∈RF(上标), 通过这一层更新后的节点特征是hi(下标){h}'(一个H)。

首先,通过一个共享的注意力机制att 计算节点间的自注意力:

eij=att(Whi,Whj),其中,W 是一个共享权重,把原来的节点特征从F维转换为F '维,再通过函数 att:RF '→R  映射到一个注意力权重。这个权重eij即表示节点j 相对于i的重要度。在图注意力网络中,通常选取一个单层前馈神经网络和一个LeakyReLU 作为非线性激活函数来计算eij:

eij=LeakyReLU(a[Whi||Whj]),其中Ⅱ表示拼接,a 为一个向量参数。    

        为了保留原来的图结构信息,类似于消息传递网络的方式,我们只计算节i 的邻接点Ni 的注意力,再进行归一化和融合。归一化后的注意力权重为:

进一步计算得到

基于这个注意力权重,融合所有邻接点的信息,得到更新后的新节点特征:

        为了提升模型的表达能力和训练稳定性,我们还可以借鉴自然语言处理中常用的Transformer模型结构中的多头注意力层对其进行扩展,也就是用K个wk 得到不同的注意力,再将其拼接在一起或者求平均。具体地讲,除最后一 层,我们在其他层都使用矩阵拼接的方法来整合多头注意力:

其中||表示拼接, A_{i}^{k}j 是 aij在 K 个不同注意力机制间的归一化。而最后一层一般使用求平均的方法:

       

  • 11
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值