Spatial-based ConvGNNs 总结

基于合成的空间GCNs

1.MPNNs

MPNNs模型中,将图卷积的前向传播定义为两个阶段:
1)信息传递阶段
2)读出阶段

(1)信息传递阶段

当信息传递到第 t t t步时,就以节点自身 h v t h_v^t hvt、该节点定义好的邻域的隐藏状态 h w t ( w ∈ N ( v ) ) h_w^t(w\in N(v)) hwt(wN(v))以及边的权重 e v w e_{vw} evw为输入,送入信息聚合函数 M t ( ∗ ) M_t(*) Mt(),:
m v t + 1 = ∑ w ∈ N ( v ) M t ( h v t , h w t , e v w ) (1) m_v^{t+1}=\sum_{w\in N(v)}{M_t(h_v^t,h_w^t,e_{vw})}\tag1 mvt+1=wN(v)Mt(hvt,hwt,evw)(1)

这个函数得到的是邻域节点信息的聚合表示。
得到 m v t + 1 m_v^{t+1} mvt+1后,再次结合节点当前的隐藏状态 h v t h_v^t hvt,送入顶点更新函数 U t ( ∗ ) U_t(*) Ut()
h v t + 1 = U t ( h v t , m v t + 1 ) (2) h_v^{t+1}=U_t(h_v^t,m_v^{t+1})\tag2 hvt+1=Ut(hvt,mvt+1)(2)

该函数将 h v t , m v t + 1 h_v^t,m_v^{t+1} hvt,mvt+1以函数 U t U_t Ut的方式组合得到下一步 t + 1 t+1 t+1的节点表示。
所以整个信息传递阶段的过程就是将节点邻域信息聚集,结合中心节点状态来更新中心节点,得到下一阶段的隐藏状态:
h v t + 1 = U t ( h v t , ∑ w ∈ N ( v ) M t ( h v t , h w t , e v w ) ) (3) h_v^{t+1}=U_t(h_v^t,\sum_{w\in N(v)}{M_t(h_v^t,h_w^t,e_{vw})})\tag3 hvt+1=Ut(hvt,wN(v)Mt(hvt,hwt,evw))(3)

(2)读出阶段

该阶段主要是将第 t t t步节点的隐藏状态输入读出函数 R ( ∗ ) R(*) R(),对整个图或者每个节点进行分类任务:
y ^ = R ( h v T ∣ v ∈ G ) (4) \hat y=R({h_v^T|v\in G})\tag4 y^=R(hvTvG)(4)

2.DCNNs

DCNNs可以按照MPNNs框架进行划分:

(1)信息传递阶段

在信息传递阶段,DCNNs将节点相同跳的邻域节点信息聚合,不同跳的聚合后信息拼接,得到每个节点的扩散卷积表示:
∑ w ∈ N ( v ) M t ( h v t , h w t , e v w ) = ∑ l = 1 N t ( P t ∗ ) i j l ( X t ) l m (5) \sum_{w\in N(v)}{M_t(h_v^t,h_w^t,e_{vw})}=\sum_{l=1}^{N_t}{{(P^*_t)}_{ijl}{(X_t)}_{lm}}\tag5 wN(v)Mt(hvt,hwt,evw)=l=1Nt(Pt)ijl(Xt)lm(5)

式(5)可以理解为节点 i i i的邻域节点定义为图上所有的节点, ( X t ) l m {(X_t)}_{lm} (Xt)lm表示 h v t , h w t h_v^t,h_w^t hvt,hwt的信息;由于 P t ∗ P^*_t Pt是由图的邻接矩阵 A A A计算得来,表示了图的结构信息,所以可以认为 ( P t ∗ ) i j l {(P^*_t)}_{ijl} (Pt)ijl表示 e v w e_{vw} evw ∑ l = 1 N t ( P t ∗ ) i j l ( X t ) l m \sum_{l=1}^{N_t}{{(P^*_t)}_{ijl}{(X_t)}_{lm}} l=1Nt(Pt)ijl(Xt)lm是以概率方式对节点 i i i j j j跳节点的一个信息聚合。
式(5)的张量表示形式为:
M t = P t ∗ X t (6) M_t=P^*_t{X_t}\tag6 Mt=PtXt(6)

其中, M t ∈ R N t × H × F M_t\in R^{N_t\times H\times F} MtRNt×H×F表示每个节点的各个跳 [ 0 , H − 1 ] [0,H-1] [0,H1]的聚合信息。在利用 P t ∗ P^*_t Pt进行信息聚合时,对每个节点每个跳每个特征都有不同的权值,所以在此处没有体现权值共享的优势。
顶点更新函数 U ( ∗ ) U(*) U()在DCNNs模型中未使用。

(2)读出阶段

在DCNNs中,实现了节点分类的读出以及图分类的读出:
节点分类:
在节点分类时,DCNNs对得到的聚合信息 P t ∗ X t P^*_t{X_t} PtXt用可学习的权值以及激活函数进行调整,之后再调整后的聚合信息展平,并将其送入全连接层和 s o f t m a x softmax softmax层:
P ( Y ∣ X ) = s o f t m a x ( f ( W d f l a t t e n ( f ( W c ⨀ M t ) ) ) ) (7) P(Y|X)=softmax(f(W^dflatten(f(W^c\bigodot M_t))))\tag7 P(YX)=softmax(f(Wdflatten(f(WcMt))))(7)

其中, ⨀ \bigodot 表示逐元素相乘, W c ∈ R H × F W^c \in R^{H\times F} WcRH×F,为训练权重;在计算 W c ⨀ P t ∗ X t W^c\bigodot P^*_tX_t WcPtXt,存在广播机制,会将 W c W^c Wc复制 N t N_t Nt遍,然后逐元素相乘; f ( W c ⨀ P t ∗ X t ) ∈ R N t × H × F f(W^c\bigodot P^*_tX_t)\in R^{N_t\times H\times F} f(WcPtXt)RNt×H×F f l a t t e n ( ∗ ) flatten(*) flatten()表示展平,将 f ( W c ⨀ M t ) f(W^c\bigodot M_t) f(WcMt)变成二维矩阵 R N t × ( H F ) R^{N_t\times (HF)} RNt×(HF) W d ∈ R ( H F ) × C W^d\in R^{(HF)\times C} WdR(HF)×C C C C表示分类种数。
对比式(4),式(7)可以理解为读出函数 R ( ∗ ) R(*) R(),将每个节点的隐藏状态 M t M_t Mt送入读出函数 R ( ∗ ) R(*) R(),得到每个节点的分类结果。
图分类:
对于图分类而言,与节点分类不同之处在于读出函数多了一个加权的步骤,图分类的读出函数是将每个节点的聚合信息通过加权求和去取均值,之后用可学习的权值以及激活函数进行调整,再送入全连接层和 s o f t m a x softmax softmax层:
P ( Y ∣ X ) = s o f t m a x ( f ( W d f l a t t e n ( f ( W c ⨀ ( 1 N t ) T M t N t ) ) ) ) (8) P(Y|X)=softmax(f(W^dflatten(f(W^c\bigodot \frac{(1_{N_t})^TM_t}{N_t}))))\tag8 P(YX)=softmax(f(Wdflatten(f(WcNt(1Nt)TMt))))(8)

其中 M t M_t Mt的意义不变, 1 N t ∈ R N t × 1 1_{N_t}\in R^{N_t\times 1} 1NtRNt×1表示将各个节点信息 ∈ R H × F \in R^{H\times F} RH×F聚合的权重;除以 N t N_t Nt得到平均值。 W c W^c Wc训练得到的加权权值。

3.PATCHY-SANs

PATCHY-SANs模型也可以概括为信息传递阶段和读出阶段,它和DCNNs模型的不同之处为在于邻域节点的选择和聚合信息的方法。

(1)信息传递阶段

确定节点邻域:
1)根据选定的图标注函数 l l l对图中的节点进行排序,得到有序节点集合 V _ s o r t V\_sort V_sort
2)根据 V _ s o r t V\_sort V_sort,以 s s s为步长等间隔取出 w w w个节点,当节点数量 ∣ V _ s o r t ∣ |V\_sort| V_sort不足以取出 w w w个节点时,则创建感受野值为 0 0 0作为填充。得到 w w w个节点的序列。
3)对于选出的节点序列中的每一个节点 v v v,取它的 1 1 1邻域,如果自身和 1 − 1- 1邻域的节点数目 ∣ N ∣ ≥ k |N|\geq k Nk,则得到 v v v的感受野的候选,否则继续取它的 2 − 2- 2领域等等,直到满足 ∣ N ∣ ≥ k |N|\geq k Nk。对所有选定节点进行上述操作。
构建子图
可以认为节点 v v v和它的邻域候选节点构成原图 G G G的子图 U U U,如果邻域候选节点的数目 ∣ U ∣ > k |U|>k U>k,则利用再次图标注函数 l l l对子图进行节点排序,在图归一化这个步骤中节点排序都必须满足约束:对于 ∀ u , w ∈ U \forall u,w \in U u,wU, 当 d ( u , v ) < d ( w , v ) d(u,v) < d(w,v) d(u,v)<d(w,v)时,满足 r ( u ) < r ( w ) r(u) < r(w) r(u)<r(w),然后取前 k k k个节点作为 v v v真正的的邻域,并得到新的新的子图 U ′ U^{'} U,并对新的子图进行节点排序用来形成邻接矩阵 A l ( U ′ ) A^{l}(U^{'}) Al(U);如果邻域候选节点的数目 ∣ U ∣ < k |U|<k U<k,则添加未连接的假节点使得 ∣ U ∣ = k |U|=k U=k,并对新的子图 U ′ U^{'} U进行节点排序用来形成邻接矩阵 A l ( U ′ ) A^{l}(U^{'}) Al(U)
邻域信息聚合
a n a_n an为顶点特征维度, a m a_m am为边特征维度。对于每个输入图G,在确定节点邻域和构建子图后,得到一个 ( w , k , a n ) (w,k,a_n) (w,k,an)顶点特征的张量和 ( w ; k ; k ; a m ) (w;k;k;a_m) (w;k;k;am)边特征的张量。如下图所示( k = 4 k=4 k=4):
在这里插入图片描述
这些可以被重塑为一个 ( w ∗ k ; a n ) (w*k;a_n) (wk;an) ( w ∗ k ∗ k ; a m ) (w*k*k;a_m) (wkk;am)的张量。注意, a n , a m a_n,a_m an,am是输入通道的数量。现在可以用一维的卷积层,对子图的节点特征和结构特征进行卷积。对子图节点的卷积核为 R k × a n × F n R^{k\times a_n\times F_n} Rk×an×Fn,步长为 k k k;对子图边的卷积核为 R k 2 × a m × F m R^{k^2\times a_m\times F_m } Rk2×am×Fm,步长为 k 2 k^2 k2。如下图所示节点信息的1维卷积( k = 4 k=4 k=4):
在这里插入图片描述
对边的1维卷积也类似,卷积后得到节点的聚合信息( ∈ R w × F n \in R^{w\times F_n} Rw×Fn)和边的聚合信息( ∈ R w × F m \in R^{w\times F_m} Rw×Fm),之后直接将这两个矩阵拼接得到最后的聚合信息( ∈ R w × ( F n + F m ) \in R^{w\times (F_n+F_m)} Rw×(Fn+Fm))。到此将图结构数据转化为欧式结构的数据。之后的卷积只需要利用传统的1维卷积即可。
(2)读出阶段
在前面的信息传递阶段,已经将图结构数据转化为欧式结构的数据,所以读出阶段的做法也和传统的欧式数据一样,利用全连接和 s o f y m a x sofymax sofymax得到每个节点或者整个图的分类概率。
相比于DCNNs模型,在聚合信息时,PATCHY-SANs将不同跳的邻域节点利用卷积的方式直接得到隐藏状态( ∈ R w × F n \in R^{w\times F_n} Rw×Fn),而不是像DCNNs那样,将相同跳的节点聚合不同跳的节点拼接得到隐藏状态。相比于DCNNs模型,在PATCHY-SANs中,对每个子图而言,卷积核是权值共享的。

4.GraphSage

与PATCHY-SANs模型相比较,GraphSage将获得子图的过程简化了,没有使用卷积的方式,而是定义了出了具体聚合函数形式,对节点的邻域信息进行聚合。

(1)信息传递阶段

确定邻域节点构建子图
首先需要先给定一个部分节点集合 B B B,这个集合是需要之后输出嵌入向量。 N k ( v ) N_k(v) Nk(v)表示从节点 v ∈ B k v\in B^k vBk k k k-邻域进行均匀采样得到节点数量固定为 s s s的节点集合( k ∈ [ 1 , K ] k\in [1,K] k[1,K]),如果 k k k-邻域节点数量大于 s s s,则无放回抽样;如果小于 s s s,则有放回抽样。这个部分确定了在整个前向传播过程中需要使用到的节点,可以理解为以 B B B中每个节点为中心构建相应的树状子图的过程,把其他不相关的节点除去。
邻域信息聚合
1)均值聚合函数
信息聚合函数 M ( ∗ ) M(*) M()
M k = m e a n ( h v k − 1 , { h u k − 1 , ∀ u ∈ N ( v ) } ) (9) M_k=mean(h_v^{k-1},\{h_u^{k-1},\forall u\in N(v)\})\tag{9} Mk=mean(hvk1,{huk1,uN(v)})(9)

顶点更新函数 R ( ∗ ) R(*) R()
h v k = σ ( W k ⋅ M k ) (10) h_v^k=\sigma(W^k\cdot M_k)\tag{10} hvk=σ(WkMk)(10)

这种k层的均值聚合网络与 k k k层的1stChebNet网络近似。训练的参数为 W k W^k Wk
2)池化聚合函数
信息聚合函数 M ( ∗ ) M(*) M()
h N ( v ) k = m a x ( { σ ( W p o o l k h u i k + b ) , ∀ u i ∈ N ( v ) } ) (11) h_{N(v)}^k=max(\{\sigma(W^k_{pool}h^k_{u_i}+b),\forall u_i\in N(v)\})\tag{11} hN(v)k=max({σ(Wpoolkhuik+b),uiN(v)})(11)

其中, W p o o l k h u i k + b W^k_{pool}h^k_{u_i}+b Wpoolkhuik+b表示多层感知机,为了简单表示,只表现了单层的结构,其目的是为了计算出每个邻域节点的特征。 m a x ( ∗ ) max(*) max()表示逐元素取最大值,即取每个特征的最大值以捕获邻居集合上在每个维度的最突出表现(均值池化和最大池化结果没有明显区别)
顶点更新函数 R ( ∗ ) R(*) R()
h v k = σ ( W k ⋅ c o n c a t ( h N ( v ) k , h v k − 1 ) ) (12) h_v^k=\sigma(W^k\cdot concat(h_{N(v)}^k,h_{v}^{k-1}))\tag{12} hvk=σ(Wkconcat(hN(v)k,hvk1))(12)

训练的参数为 W p o o l k , W k W^k_{pool},W^k Wpoolk,Wk

(2)读出阶段

利用全连接层和 s o f y m a x sofymax sofymax得到每个节点分类概率。

(3)整个过程的伪代码如下图所示:

在这里插入图片描述

5.LGCN

LGCN模型使用了与GraphSage相同的随机方法获取子图(节点的邻域信息),然后对PATCHY-SANs模型的卷积部分进行了优化。

(1)信息传递阶段

确定邻域节点构建子图
1)首先从所有节点 N N N中,随机采样 N i n i t N_{init} Ninit个节点,表示为 i n i t N o d e s initNodes initNodes,并加入采样节点集合 S S S;(代码第2-3行)
2)初始化 n e w A d d N o d e s newAddNodes newAddNodes,令 n e w A d d N o d e s newAddNodes newAddNodes等于 i n i t N o d e s initNodes initNodes(代码第四行)
3)从 n e w A d d N o d e s newAddNodes newAddNodes节点的1-邻域中再随机采样 N m N_m Nm个节点,更新 n e w A d d N o d e s newAddNodes newAddNodes,并将新的 n e w A d d N o d e s newAddNodes newAddNodes加入采样节点集合 S S S;(代码6-10行)
3)循环过程(3)直到采样节点总数 S S S大于等于 N s N_s Ns停止循环;每次迭代过程中的 N m N_m Nm都为不同值。
4) S > N s S>N_s S>Ns时,需要把最后一次过程(3)得到的采样节点再次采样 N r N_r Nr个节点,使得 S = N s S=N_s S=Ns。(代码11-14行)
伪代码如下图所示:
在这里插入图片描述
邻域信息聚合
1)利用子图的 A A A矩阵,找到节点 i i i的所有1-邻域节点 { i 1 , . . . , i n } \{i_1,...,i_n\} {i1,...,in}。将这 n n n个节点拼接成矩阵 M l i ∈ R n × C M_l^i \in R^{n\times C} MliRn×C;如果 n < k n<k n<k,可以构造节点的所有特征都为0的伪节点进行拼接。
2)对 M l i M_l^i Mli矩阵每一列的值进行由大到小的排序,并选出前 k k k个值,得到 M ^ l i ∈ R k × C \hat M_l^i\in R^{k\times C} M^liRk×C矩阵,目的是选出邻域节点的各个特征中良好表现该特征的值,之后将节点 i i i拼接于 M ^ l i \hat M_l^i M^li的第一行,得到最后的网格化数据 M ~ l i ∈ R k + 1 × C \tilde M_l^i\in R^{k+1\times C} M~liRk+1×C,对所有节点上述操作后得到表示节点特征的张量 X l ~ ∈ R N × ( k + 1 ) × C \tilde{X_l}\in R^{N\times (k+1)\times C} Xl~RN×(k+1)×C
3)利用一维卷积核卷积实现信息聚合操作,得到最后的输出。 X l ~ ∈ R N × ( k + 1 ) × C \tilde{X_l}\in R^{N\times (k+1)\times C} Xl~RN×(k+1)×C中, N N N可以视为批大小 ( b a t c h   s i z e ) (batch\ size) (batch size) ( k + 1 ) (k+1) (k+1)可以视为一维图像(样本)的大小, C C C可以认为每个像素的通道数。所以与传统卷积类比,卷积核的大小,与批大小无关,与输入样本的特征维度 C C C,输出样本维度 D D D,以及自定义的卷积核大小 m m m有关,卷积核 ∈ R m × C × D \in R^{m\times C \times D} Rm×C×D。可以使用多层1-D卷积神经网络,但是对每个节点而言,多层1-D卷积神经网络之后的输出,必须还是一维向量 ∈ R 1 × D \in R^{1\times D} R1×D,才可以再次输入k-最大节点选择部分。最简单的卷积为卷积核大小选择为 k + 1 k+1 k+1,可以直接得到 X l + 1 ∈ R N × D X_{l+1}\in R^{N\times D} Xl+1RN×D
邻域信息聚合过程如下图所示:
在这里插入图片描述

(2)读出阶段

利用全连接层和 s o f y m a x sofymax sofymax得到每个节点分类概率。

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值