Towards Sparse Hierarchical Graph Classifiers

Towards Sparse Hierarchical Graph Classifiers
预备知识:
在 numpy中,矩阵的元素操作对矩阵维度的要求,通过一种叫做 broadcasting的机制实现。我们称两个矩阵相容(compatible),如果它们相互对应的维度(行对行,列对列)满足以下条件:

  1. 对应的维度均相等, 或 有一个维度的大小是1
  2. 矩阵的Hadamard 乘积是一个元素运算,就像向量一样。对应位置的值相乘产生新的矩阵。
  3. 在 numpy 中,只要矩阵和向量的维度满足 broadcasting的要求,你便可以对他们使用 Hadamard 乘积运算.
    Towards Sparse Hierarchical Graph Classifiers

动机:

节点嵌入的学习对图节点分类与连接预测是非常有效的,然而现在的节点分类只停留在初级水平,也就是只是用简单的全局池化去聚集节点特征,或者是手动设计,固定的启发式的为图结构设计粗化层次。前面的一个比较大的提升是可微分粗化池化层(DIFFPOOL),其像一个CNNs的下采样,用自适应的方法对图的size进行reduce,但是之前的池化复杂度达到了平方阶,所以不能推广到大的图。所以现在我们结合图神经网络设计的几个最新进展,以证明在不牺牲稀疏性的情况下,具有竞争力的层次图分类结果是可能的。

模型

准备工作:

  • 节点特征:XRN×F\mathbf{X}\in \mathbb{R}^{N\times F}
  • 邻接矩阵:ARN×N\mathbf{A}\in \mathbb{R}^{N\times N}
    如果我们的节点没有特征可用,则可以使用节点的度作为人造特征,比如可以用one-hot编码。这里邻接矩阵采用二值对称(即无向无权图)
    类似CNN,我们这里用了readout层类比pooling层,它将学习的representation转换成了固定长度的向量表示(dualMPNN里边有用到),用于最后的预测(比如一个简单的MLP)。

卷积层

Towards Sparse Hierarchical Graph Classifiers

  • A^=A+IN\hat{\mathbf{A}}=\mathbf{A}+\mathbf{I}_N
  • D^ij=jA^ij\hat{D}_{ij}=\sum_j \hat{A}_{ij}
  • σ=Relu\sigma=Relu
  • θθRF×F\mathbf{\theta},\mathbf{\theta}' \in \mathbb{R}^{F\times F'}
    前一项是卷积,后面一项相当于是跳跃连接(skip-connect)

池化层

之前DIFFPOOL中是吧N个点变成[kN]个簇。现在我们是学graph U-Net的思想,将节点减去[kN]个,k属于0到1之间。
Towards Sparse Hierarchical Graph Classifiers为了可以决定哪些节点是要留下来的,我们采用节点得分,这个得分用网络自己学习出来,所以要是可微的操作,这里定义一个向量 pRF×1\vec{p}\in \mathbb{R}^{F\times 1},与X相乘之后可以得到每个节点的得分,按照得分排名可以选择留下来的指标,大概流程是:
Towards Sparse Hierarchical Graph Classifiers

  • ||.||为二范数
  • yRN×1\vec{y}\in \mathbb{R}^{N\times 1}
  • top-k表示从给定向量中选出前k个指标
  • \odot是哈达玛乘积,预备知识有
  • .i._{\vec{i}}表示指标操作,从矩阵中选出指定的ii个,X的话是选出 i 列,A的话行列都取。

Redout layer

我们经经过图卷积之后的矩阵都不便用于预测等操作,都是将这个得到的representation变成一个fixed-size的representation,最简单的方式就是直接将所有节点的嵌入表示都加起来,最后取平均,就像变成一个节点一样。这里我们采用全局最大节点嵌入与全局平均拼接起来,之后再利用JK-net架构,最后把所有中间的特征矩阵XlX^{l}加起来。
Towards Sparse Hierarchical Graph Classifiers

  • NlN^{l}是图节点的数量,
  • xil\vec{x}_i^{l}是第 i 个节点的特征,
  • || 表示拼接

最后将s(l)\vec{s}^{(l)}加起来,即
s=l=1Ls(l)\vec{s}=\sum_{l=1}^L \vec{s}^{(l)}
然后再放进MLP中进行预测,最后可以得到预测。

实验

Towards Sparse Hierarchical Graph ClassifiersTowards Sparse Hierarchical Graph Classifiers文章的主要亮点只是占的内存少而已,其他还不如DIFFPOOL。