结合胶囊网络Capsule和图卷积GCN的文章
一、Capsule Neural Networks for Graph Classification
题目:
Capsule Neural Networks for Graph Classification using Explicit Tensorial Graph Representation
作者:
Marcelo Daniel Gutierrez Mallea, Peter Meltzer, Peter J Bentley
参考链接:
https://arxiv.org/abs/1902.08399
代码链接:
https://github.com/BraintreeLtd/PatchyCapsules
1.1 文章概要
图分类是许多科学领域的一个重要问题。它处理多种任务,如根据蛋白质和化合物的功能或化学和结构性质将其分类。在有监督的情况下,这个问题可以被理解为学习一组标记图的结构、特征和特征之间的关系,并能够正确预测不可见图的标签或类别。当试图使用已有的分类算法时,由于需要固定大小的矩阵,但这些图的节点和边的数量可能会有很大的变化,因此这一任务出现了很大的困难。这篇文章先通过将数据集中的每个子图生成一个矩阵表示,再应用一个胶囊网络在这样的表示上。
1.2 实现方法
1.2.1 Graph to Contextual Tensor
其具体流程如下图:
- 对于每一个图 G i G_i Gi,通过给定的参数 w w w确定 N o d e L i s t NodeList NodeList的长度,并通过 N o d e S e q u e n c e O r d e r i n g NodeSequenceOrdering NodeSequenceOrdering将 w w w个 n o d e node node排序。其中排序利用的是graph labelling procedure(这个最后讲);
- 对于这个序列中的每个节点,收集最近的k个邻居(根据点与点之间的跳跃次数),再通过 N e i g h b o u r G a t h e r i n g NeighbourGathering NeighbourGathering将这一些点标记成一类;
- 通过 N o r m a l i z a t i o n Normalization Normalization再次筛选点的个数,用于处理跳跃次数一样的点过多的情况。排序同样利用的graph labelling procedure;
- 将每个点上的类别特征转换成One-hot特征,并进行 E n c o d i n g Encoding Encoding;
- 最后输出一个 w × k × d w × k × d w×k×d的张量,其中 w w w为 N o d e L i s t NodeList NodeList的长度, k k k为 N e i g h b o u r G a t h e r i n g NeighbourGathering NeighbourGathering时邻居的个数, d d d为每个点的特征长度。
刚刚上面排序时采用的graph labelling procedure方法有两种:canonical labelling procedure 和 ranking based on betweenness centrality,即分别基于接近中心性(closeness)和中介中心性(betweenness)进行排序,其具体的定义如下:
- 接近中心性(Closeness Centrality)。反映在网络中某一节点与其他节点之间的接近程度。将一个节点到所有其他节点的最短路径距离的累加起来的倒数表示接近性中心性。即对于一个节点,它距离其他节点越近,那么它的接近性中心性越大。
- 中介中心性/中间中心性(Between Centrality) 。以经过某个节点的最短路径数目来刻画节点重要性的指标。
1.2.2 Graph Capsule Network
可以说是非常暴力地直接用刚刚处理好的张量输入CapsNet中,模型结构如下:
1.3 实验结果
二、Graph Capsule Convolutional Neural Networks
题目:
Graph Capsule Convolutional Neural Networks
作者:
Saurabh Verma , Zhi-Li Zhang
参考链接:
https://arxiv.org/pdf/1805.08090.pdf
2.1 文章概要
图形卷积神经网络是深度学习领域中最新的令人兴奋的进展,其应用正在包括生物信息学、化学信息学、社会网络、自然语言处理和计算机视觉在内的多交叉领域迅速扩展。在这篇文章中,我们揭示并解决了GCN模型的一些基本弱点,并提出了我们的图胶囊网络模型GCAPS-CNN。此外,我们还设计了我们的模型来解决当前GCN模型所面临的特别是图分类问题。通过大量实验,我们证明了我们提出的图形胶囊网络在图形分类基准数据集上的性能明显优于现有的深度学习方法和图形核。
2.2 GCN的缺点以及解决方法
-
GCN模型的第一个缺陷是由于基本的图形卷积运算,它被定义为对应于每个特征(或通道)的局部邻域中的节点值的聚合aggregation。因此其实在这个聚合的同时是会有信息的损失的。
为了解决这一限制,通过引入图胶囊的概念来改进基本的图卷积运算,图胶囊封装了关于局部邻域中节点的更多信息,其中局部邻域以与GCN模型中相同的方式定义。本文通过使用Weisfeiler-Lehman(WL)- subtree graph kernel的方式,使得每个节点标特征是从本地邻域中每个节点的邻居节点收集的,并且通过不断地迭代更新这个中心点的特征,这些新的特征的直方图会被拼接到每次迭代中,从而可以通过最后一次迭代的特征还原出所有的特征(即信息不会损失)。
-
GCN模型的第二个主要缺陷在于它处理图分类问题的能力,它必须处理结构相同的图。
为此作者设计了对称函数(如pointnet中置换不变性函数)保证置换不变性,使得所有的同构图都能输出相同的结果;
-
最后GCN很难整理全局的特征用于很好得分类。
为此作者利用全局特征(占整个图形结构的特征),使用图光谱距离族来解决这个问题。
2.3 实现方法
2.3.1 Graph Capsule CNN
首先先看一下普通GCN的公式,可以看出每个节点通过邻居点的值聚合形成的是一个标量;
因此GCAPS只是将其输出变为了一个向量,而聚合的向量可以是每个邻结点的1到p阶的多项式的集合。
最终文中使用的聚合方法是邻点的1到p阶矩(由于其具有置换不变性并且矩阵的乘法计算比较效率):
2.3.2 Graph Permutation Invariant Layer
文中先证明了像1.2.1节中使用的Max-Sort Pooling不具有置换不变性,再证明了矩是具有置换不变性的。
其中L为拉普帕斯矩阵即D-A。
2.3.3 GCAP-CNN with Global Features
使用 FGSD features去聚合全局特征,其具体形式入下:
(所以写到这里才发现他和CapsNet没啥关系…开始第三篇)
三、Capsule Graph Neural Networks
题目:
Capsule Graph Neural Networks
作者:
Zhang Xinyi, Lihui Chen
参考链接:
https://arxiv.org/pdf/1805.08090.pdf
代码链接:
https://github.com/benedekrozemberczki/CapsGNN
3.1 文章摘要
从GCN中学习到的高质量节点嵌入已经被应用到广泛的基于节点的应用中,其中一些已经实现了SOTA的性能。然而,当应用从GNNs学习的节点嵌入来生成图嵌入时,标量节点表示可能不足以有效地保持节点/图属性,从而导致不够好的图嵌入。
受启发与CapsNet,本文提出胶囊图神经网络(CapsGNN),其采用胶囊的概念来解决现有基于GNN的图嵌入算法中的弱点。通过提取胶囊形式的节点特征,可以利用路由机制在图形级别捕获重要信息。因此,我们的模型为每个图生成多个嵌入,以从不同的方面捕获图的属性。CapsGNN中包含的注意模块用于处理各种大小的图形,这也使模型能够关注图形的关键部分。
3.2 实现方法
模型的结构如下:
3.2.1 Basic node capsules
利用L层GCN提取信息,每一层的计算方式都如下:
其中
W
i
j
W_{ij}
Wij是可以训练的参数,即从第
l
l
l层的第
i
i
i个通道到第
(
l
+
1
)
(l + 1)
(l+1)层的第
j
j
j个通道的卷积核;激活函数
f
(
⋅
)
=
t
a
n
h
(
⋅
)
f(·) = tanh(·)
f(⋅)=tanh(⋅);A和D的组合表示邻接的信息,即只对邻接矩阵为1的链接进行如上的操作。
上面的图其实标注的字母不太对,根据源码中的向量维度,对于输入向量 N × D N\times D N×D,其中N为点的个数,D为每个点的特征维度,通过 L L L层的GCN以后产生了 L L L个输出的维度 D o u t D_{out} Dout,将这些 L L L个 N × D o u t N\times D_{out} N×Dout的向量进行合并,就得到了输出的三维张量 N × D o u t × L N\times D_{out}\times L N×Dout×L,作为CapsNet后续的输入。
3.2.2 High level graph capsules
先将上一步的输出通过一个Primary Capsule,然后接一个Attention模块。
原因是因为在CapsGNN中,基于每个节点提取主胶囊,这意味着主胶囊的数量取决于输入图的大小。在这种情况下,如果直接应用路由机制,生成的高级胶囊的值将高度依赖于初级胶囊的数量(图的大小)。因此,引入了注意力机制来解决这个问题。在注意力机制之后,在生成节点胶囊投票的过程中,会给予每一个结点的胶囊不一样的权重。
3.2.3 Graph classification block
直接利用Marginal Loss和Reconstruction Loss做分类。
3.3 实验结果
最后一行即第一篇文章与这篇文章的算法优劣比较: