图卷积神经网络GCN---池化层代表作

GNN Pooling

1 Deep Convolutional Networks on Graph-Structured Data

[Henaff M, 2015, 1] 提出通过层次图聚类的方式达到池化的效果。

2 Convolutional neural networks on graphs with fast localized spectral filtering

[Defferrard M, 2016, 2] 提出了将顶点构成一颗完全二叉树,不足部分补充虚拟顶点(类似于填充padding),经行分层池化。见下图。

在这里插入图片描述

3 An End-to-End Deep Learning Architecture for Graph Classification

[Zhang M, 2018, 3] 提出了一种SortPooling的方法。
论文中将每层GCN的输出拼接在一起,作为SortPooling池化的输入。

SortPooling池化的想法是对顶点排序,取top-k个,多裁少补。

如果对顶点排序?论文提出使用顶点的拓扑信息排序。

如何获得顶点的拓扑信息?使用WL \cite{Shervashidze2011Weisfeiler}算法。

论文认为每一层GCN都可以是看成一次WL的迭代过程,那么越靠后的GCN输出结果越接近最后的WL着色。

因此,排序的第一序,是从最后一层的输出到第一层的输出。

第二序则是每层输出的顶点特征的最后一维到第一维度。

由于输入到池化的张量为 Z 1 : h = [ z 1 , … , Z j ] = R ∣ V ∣ × ∑ i = 1 h c i Z^{1:h}=[z^1, \dots, Z^j] = \mathbb{R}^{|\mathcal{V}| \times \sum_{i=1}^{h} c_i } Z1:h=[z1,,Zj]=RV×i=1hci,其中 c i c_i ci是第 i i i层GCN输出的顶点特征长度。那么整体过程,对行(每行对应一个顶点)排序,排序准则则是 Z 1 : h Z^{1:h} Z1:h最后一列到第一列。

在这里插入图片描述

在这里插入图片描述

4 Hierarchical Graph Representation Learning with Differentiable Pooling

[Ying R, 2018, 4] 提出的池化方法可以微分可以学习。主要思想是通过GCN同时生成嵌入矩阵 Z ( l ) Z^{(l)} Z(l)和assignment matrix(分配矩阵) S ( l ) S^{(l)} S(l)
Z ( l ) = GNN l , embed ( A ( l ) , X ( l ) ) , S ( l ) = GNN l , pool ( A ( l ) , X ( l ) ) . (4.1) \begin{aligned} Z^{(l)} &= \text{GNN}_{l,\text{embed}} \left( A^{(l)}, X^{(l)} \right),\\ S^{(l)} &= \text{GNN}_{l,\text{pool}} \left( A^{(l)}, X^{(l)} \right). \end{aligned} \tag{4.1} Z(l)S(l)=GNNl,embed(A(l),X(l)),=GNNl,pool(A(l),X(l)).(4.1)
再利用嵌入矩阵 Z ( l ) Z^{(l)} Z(l)和assignment matrix(分配矩阵) S ( l ) S^{(l)} S(l)生成新的图,新的特征矩阵和邻接矩阵为:
X ( l + 1 ) = S ( l ) T Z ( l ) ∈ R n l + 1 × d , A ( l + 1 ) = S ( l ) T A ( l ) S ( l ) ∈ R n l + 1 × n l + 1 . (4.2) \begin{aligned} X^{(l+1)} &= {S^{(l)}}^{T} Z^{(l)} \in \reals^{n_{l+1} \times d}, \\ A^{(l+1)} &= {S^{(l)}}^{T} A^{(l)} S^{(l)} \in \reals^{n_{l+1} \times n_{l+1}}. \end{aligned} \tag{4.2} X(l+1)A(l+1)=S(l)TZ(l)Rnl+1×d,=S(l)TA(l)S(l)Rnl+1×nl+1.(4.2)

5 Graph U-Nets

[Gao H, 2019, 5] 提出了图数据上的U-net,其中的gPooling方法,对于第 l l l层:

  1. 使用可学习的投影向量 p ⃗ \vec{p} p X l X^l Xl投影: y ⃗ = X l p ⃗ l ∥ p ⃗ l ∥ \vec{y}=\frac{X^l \vec{p}^l }{\| \vec{p}^l \|} y =p lXlp l
  2. 截取前 k k k个索引: idx = rank ( y ⃗ , k ) \text{idx} = \text{rank}(\vec{y},k) idx=rank(y ,k)
  3. 对保留部分激活投影 y ⃗ \vec{y} y y ⃗ ~ = tanh ⁡ ( y ⃗ ( idx ) ) \tilde{\vec{y}} = \tanh(\vec{y}(\text{idx})) y ~=tanh(y (idx))
  4. 根据索引idx截取 X l X^l Xl X ~ l = X l ( idx , : ) \tilde{X}^l = X^l (\text{idx},:) X~l=Xl(idx,:)
  5. 对保留下来顶点获得新的邻接矩阵: A l + 1 = A l ( idx , idx ) A^{l+1} = A^l (\text{idx}, \text{idx}) Al+1=Al(idx,idx)
  6. 对保留下来的顶点生成新的特征矩阵: X l + 1 = X ~ l ⊙ ( y ⃗ ~ 1 ⃗ C T ) X^{l+1} = \tilde{X}^l \odot \left( \tilde{\vec{y}} \vec{1}_C^T \right) Xl+1=X~l(y ~1 CT)

在这里插入图片描述

上图是gPooling池化过程。原文还有gUpooling,即上采样。在下采样的过程中,记录新图的顶点在原图的位置,在上采样时将根据这个位置信息将小图的顶点“还原”到大图上,见下图。

在这里插入图片描述

6 Self-Attention Graph Pooling

[Lee J, 2019, 6] 提出了一种自注意力池化方法SAGPool。

  1. 利用卷积生成自注意力,参数 Θ att \Theta_{\text{att}} Θatt可学习: Z = σ ( D ~ − 1 2 A ~ D ~ − 1 2 X Θ att ) ∈ R N × 1 Z = \sigma \left( \tilde{D}^{-\frac{1}{2}} \tilde{A} \tilde{D}^{-\frac{1}{2}} X \Theta_{\text{att}} \right) \quad \in \reals^{N \times 1} Z=σ(D~21A~D~21XΘatt)RN×1
  2. 根据超参池化率 k ∈ ( 0 , 1 ] k\in (0,1] k(0,1],截取前 ⌈ k N ⌉ \lceil kN \rceil kN,得到保留的索引idx和自注意力掩码 Z mask Z_{\text{mask}} Zmask idx = top-rank ( Z , ⌈ k N ⌉ ) , Z mask = Z idx \text{idx} = \text{top-rank}(Z,\lceil kN \rceil), \quad Z_{\text{mask}} = Z_{\text{idx}} idx=top-rank(Z,kN),Zmask=Zidx
  3. 根据索引idx和掩码 Z mask Z_{\text{mask}} Zmask获得新的特征和邻接矩阵: X out = X idx , : ⊙ Z mask , A out = A idx , idx X_{\text{out}} = X_{\text{idx},:} \odot Z_{\text{mask}}, \quad A_{\text{out}}= A_{\text{idx},\text{idx}} Xout=Xidx,:Zmask,Aout=Aidx,idx

在这里插入图片描述

原文对自注意力 Z Z Z的获得给出了多种变体:
Z = σ ( GNN ( X , A ) ) , Z = σ ( GNN ( X , A + A 2 ) ) , Z = σ ( GNN 2 ( σ ( GNN 1 ( X , A ) ) , A ) ) , Z = 1 M ∑ m σ ( GNN m ( X , A ) ) . \begin{aligned} Z &= \sigma \left( \text{GNN}(X,A)\right), \\ Z &= \sigma \left( \text{GNN}(X,A+A^2)\right), \\ Z &= \sigma \left( \text{GNN}_2 \left( \sigma \left( \text{GNN}_1(X,A)\right) ,A \right) \right), \\ Z &= \frac{1}{M} \sum_m \sigma \left( \text{GNN}_m(X,A)\right). \\ \end{aligned} ZZZZ=σ(GNN(X,A)),=σ(GNN(X,A+A2)),=σ(GNN2(σ(GNN1(X,A)),A)),=M1mσ(GNNm(X,A)).

参考文献

  • 6
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
卷积神经网络(Graph Convolutional Neural Network,GCN)是一种应用于数据的深度学习模型。其主要目的是通过利用结构的局部连接和节点特征的传播来进行节点分类和分类任务。为了改进GCN模型,可以考虑以下方法: 1. 基于扩散卷积神经网络(DCNN)的改进:DCNN是一种利用中节点之间的扩散过程进行卷积操作的神经网络模型。可以借鉴DCNN中的扩散过程,将其引入GCN中,以提高GCN的表达能力和分类性能。 2. 基于信息传递神经网络(MPNN)的改进:MPNN是一种利用消息传递机制进行数据处理的神经网络模型。通过在GCN中引入MPNN的思想和机制,可以增强GCN结构的理解和节点特征的传播能力,从而提升GCN的性能。 3. 基于概率模型的改进:可以借鉴CGMM(NN4G概率模型)的思想,使用概率模型来描述节点之间的关系和特征传播过程。这样可以更灵活地建模结构和节点特征之间的关系,并提高GCN的分类准确性和解释性。 综上所述,可以通过引入扩散卷积神经网络、信息传递神经网络和概率模型等方法来改进卷积神经网络GCN)。这些改进方法可以提高GCN的表达能力、分类性能和解释性,使其更适用于数据的深度学习任务。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [GCN演变及改进整理](https://blog.csdn.net/qq_60272314/article/details/120467382)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值