论文笔记:Learning Convolutional Neural Networks for Graphs

1. 概要

在机器学习领域中,很多问题都可以很方便地构造成图结构问题,比如社交网络的关系数据,交通数据等。在这篇论文中,作者提出了一个基于图结构的CNN网络框架:PATCHY-SAN。其中的图结构即可以是有向图,也可以是无向图。而且图的顶点或边的特征,可以同时有离散和连续的特征。

这是原论文的地址是对应的ppt讲解。arxiv.org/pdf/1605.0527

2. intuition from traditional CNN

图像的CNN网络的卷积操作如下图所示:

上图卷积操作的感受野为3x3,stride为1。由于图像是排列成grid形状,所以图像可以直接运用卷积操作。但是对于图结构来说,却完全是另外一种完全不同的情况。本文就提出了一种方法可以基于任意的图结构的卷积神经网络。

3. intuition of how it does

下面我们先从直观上来了解一下,如何基于图结构构建CNN网络,之后再详细描述每一个步骤。

3.1 node sequence selection

首先从图结构中选择固定个数(w)的nodes。w相当于图像的宽度。选出的node就是我们将要做卷积操作的小矩形的中心node。换句话说,就是w的个数也是我们针对这个图结果做的卷积操作的个数。如下图所示,w=6,意味着我们需要从图结果中选择6个node做卷积操作。

现在我们已经选到了6个nodes,如下图所示:

3.2 neighborhood assembly

选出目标node之后,我们之后就要为目标node确定感受野大小。但是在确定之前,我们先构建一个candidate set,然后在从这个candidate set中选择感受野的node。这些感受野的candidate set,称为目标node的neighborhood。如下图所示,为每个目标node选择至少4个node(包括自己,k即为感受野node的个数),最后的结果如下:


3.3 neighborhood normalization

这一步的目的在于将从candidate中选择感受野的node,并确定感受野中node的顺序。最终的结果如下图所示:

3.4 feature extractor

最后一步就是提取特征,其中node或者edge的不同的特征对应于传统CNN的channel,图示如下:


以上就是整个算法的基本流程。下面来详细描述各个步骤中具体的算法策略。

4. Node Sequence Selection

算法的伪代码如下:

这个算法用来选择要进行卷积操作的node,其中w为要选择的node的个数。s为stride的大小。其中一个关键在于graph labeling procedure l。labeling算法用来确定一个graph中node的次序。这个算法可以根据node degree来确定,或者根据其他确定centrality的测量方式,比如:between centrality, WL algorithm等。或者其他你认为可行的算法。

5. Neighborhood Assembly

该算法的伪代码如下:

这个算法非常简单,就是一个BFS算法,对每个目标node,寻找离node最近的至少k个node。

6. Graph Normalization

这是整个论文的重点,这个步骤的目的在于将目标node无序的neighbors映射为一个有序的vector。这个label要实现一个目的:assign nodes of two different graphs to a similar relative position in the respective adjacency matrices if and only if their structural roles within the graph are similar. 也就是说,对于两个不同的graphs, 来自这两个graph的子结构g1和g2,它们在各自的graph中有相似的结构,那么他们label应该相似。为了解决这个问题,论文中定义了一个optimal graph normalization问题,定义如下:

这个等式的解在于寻找一个一个labeling L, 使得从图的集合中任意选取两个图G1和G2,它们在vector space距离差距和它们在graph space的距离差距最小化。但是这个问题是NP-hard的问题,所以作者选择找一个近似解。即它比较了各种labeling方法,并从其中找出最优解。具体如下:

7. Feature Extractor

在特征选择阶段,只有第一层和传统的CNN有区别,之后的卷积层和传统的一样。它们之间的对应关系如下:

下面来举例来说明PATCHY-SAN如何提取顶点特征和边特征。我们假设a_v为顶点特征的个数,a_e为边特征的个数。w为目标node的个数,k为感受野中node的个数。对于每个输入图结构,运用上面的一系列normalization算法,我们可以得到两个tensor(w,k,a_v)和(w,k,k,a_e),分别对应于顶点特征和边特征。这两个tensor可以被reshape成(wk, a_v)和(wk^2, a_e),其中a_v和a_e可以分别看成是CNN中channel的个数。现在我们可以对它们做一维度的卷积操作,其中第一个的感受野大小为k,第二个感受野大小为k^2。而之后的卷积层的构造和传统的CNN一样了。

8. 实验结果

下面列举下这篇论文的最主要的实验结果。我们可以看到当k=10时,本文的方法(PSCN)可以达到非常好的结果,而且速度也非常快。

下面是social graphs数据集上的结果:

9. Pros and Cons

在ppt中,作者还提高他们方法的优缺点,具体如下:


10 总结: 作者提供一种基于图结果的卷积神经网络,由于现实生活中很多问题都可以模拟成图结果问题,所以我们不妨使用这个框架来试着解决这些问题。但是目前(2017/06/24)该论文的源码还没公开,不过作者有开源意向,我们需要的只是耐心的等待。

发布于 2017-06-27