Learning Convolutional Neural Networks for Graphs

introduction

  • paperpaper将图像(imageimage)看作是一种特殊的图(graphgraph),即一种grid graphgrid\ graph,每一个像素就是graphgraph当中的一个nodenode。对于图像来说,卷积神经网络对输入图像的局部关联的区域进行操作,和此类似,本文提出了一种通用的方法,也抽取图中局部关联的区域进行相应的操作。
  • 文章的motivationmotivation主要来自于想将CNNCNN在图像上的应用generalizegeneralize到一般的graphgraph上面(将局部连接区域作为输入)。
    主要要解决22个问题:
  • 1.如何确定ww个中心节点序列并为之创建邻域?
  • 2.如何一个将图表示唯一映射到一个向量表示上,使得领域图之间相似结构的节点处于向量表示中相似的位置?

同构图Learning Convolutional Neural Networks for Graphs
Graph kernel
Learning Convolutional Neural Networks for Graphs
有哪些指标可以描述两个图(graph)的相似度?

nauty
McKay提出的首先将图表示为某种规范形式,然后再判断是否同构的著名的Nauty(no automorphisms)算法,目前最快的图同构问题解决方案Nauty通过选择词典上最大的邻接矩阵来打破相等关系

The Weisfeiler-Lehman algorithm

method

Node Sequence Selection

首先对于输入的一个GraphGraph,需要确定一个宽度ww,它表示也就是要选择的nodesnodes的个数。其实也就是感知野的个数(其实这里也就是表明,每次卷积一个nodenode的感知野,卷积的stride=kernel sizestride= kernel\ size的)

1labelinglabeling算法确定一个graphgraphnodenode次序(主要采取的是中心化 的测量方式,这里的中心应该是度量一个点的关系中的重要性的概念;比如可以用node degreenode\ degree来确定,或betweeness centralitybetweeness\ centrality等)。

  • graph labelinggraph\ labeling(对图的节点做标记,比如可以用节点的度做标记,做图的划分,也 可以叫做color refinement or vertex classificationcolor\ refinement\ or\ vertex\ classification)文中采用The WeisfeilerLehman algorithmThe\ Weisfeiler-Lehman\ algorithm做图的划分。由此可以得到每个节点的rankrank 值(为了不同的图能够有一个规范化的组织方式)

2:排序后,取前ww个节点,作为要做卷积操作的的中心nodenode;若不足ww个节点,则在输出中加全零的receptivefieldreceptive field,相当于00填充。如下图所示,w=6w=6,意味着我们需要从图结果中选择66nodenode做卷积操作。)
-Learning Convolutional Neural Networks for Graphs

3:采用stride=sstride=s(步长)来遍历这ww个节点;若满足步长的不足ww个,则在输出中加全零的receptive fieldreceptive\ field,相当于00填充(同22

  • Learning Convolutional Neural Networks for Graphs

Neighborhood Assembly

  • 接下来对选出来的每一个nodenode确定一个感知野receptive filedreceptive\ filed以便进行卷积操作。
  • 遍历ww中每个节点(称为rootroot),采用BFSBFS广度优先搜索,获取对应nodenode1neighborhood1-neighborhood(即直接相邻的nodesnodes);若不足KK个,再遍历1neighborhood1-neighborhood1neighborhood1-neighborhood,直到满足kk个,(注意:此时可能多于KK个)或者所有的邻居节点都遍历完。如下图所示,为每个目标nodenode选择至少44nodenode(包括自己,kk即为感受野nodenode的个数),最后的结果如下:

Learning Convolutional Neural Networks for Graphs

Learning Convolutional Neural Networks for Graphs

Graph Normalization

Learning Convolutional Neural Networks for Graphs
子图规范化:对邻域集合中的节点按照标号函数k进行排序,得到接受域。那么,对于节点的属性,kk个节点属性值构成了一个输入通道,对于边的属性,kkk*k个属性值也构成了一个输入通道。我们可以分别用一维的卷积层来处理这两种输入通道(对于节点属性卷积层长度为kk,对于边属性卷积层长度为kkk*k)正则化还包括过量节点和虚拟节点的填充。每个顶点(边缘)属性对应一个带有各自感受域的输入通道。

  • neighborhood filedneighborhood\ filed中选择感受野的nodesnodes,并确定感受野中nodesnodes的顺序

  • 根据离rootroot节点vv的远近来计算每个节点的rankrank,对wwneighborhood graphneighborhood\ graph进行labelinglabeling;不足KK个则用哑节点(dummy nodesdummy\ nodes)补充

  • 得到了已经labellabel好的graphgraph,因为需要把它变成单射(injectiveinjective),使每个节点的标签唯一,采用 nautynauty的算法 排序;若nodesnodes数大于kk个则按排序截取前kk

  • 至此,通过这wwreceptive fieldreceptive\ field就能得到一个wkw*k维的向量

injective单射(injective)– 指将不同的变量映射到不同的值的函数;在本文中含义即将不同节点映射到不同labellabel
Learning Convolutional Neural Networks for Graphs

  • 在某种标签下,随机从集合当中选择两个图,计算他们在vectorvector空间的图的距离和在graphgraph空间图的距离的差异的期望,如果这个期望越小那么就表明这个标签越好!具体的表示如下:
  • 也就是说,对于graphgraph中两个任意子图,保证其中具有相似的结构特征的nodenode可以被映射到vectorvector当中相近的位置。
    Learning Convolutional Neural Networks for Graphs
    得到最好的标签之后,就能够按着顺序将nodenode映射到一个有序的vectorvector当中,也就得到了这个nodenodereceptive fieldreceptive\ field

但这被证明是一个NPHardNP-Hard问题

所以作者可以使用求近似解的方式–即paperpaper比较了各种labelinglabeling方法,并从其中找出最优解。具体如下:
Learning Convolutional Neural Networks for Graphs
Learning Convolutional Neural Networks for Graphs

Convolutional Architecture

CNNCNN的输入:经过上述步骤后,可以得到两个tensorw,k,avtensor(w,k,a_v)w,k,k,ae(w,k,k,a_e),分别对应于顶点特征和边特征;其中ava_vaea_e可以分别看成是CNNCNNchannelchannel的个数
Learning Convolutional Neural Networks for Graphs

  • 注释:每个子图对应两个tensortensor(竖向),上面二维的即顶点特征表示,下面三维的即边特征表示;从左到右,ww个子图,所以分别对应ww个顶点特征tensortensorww个边特征tensortensor;其中ava_vaea_e可以分别看成是CNNCNNchannelchannel的个数

文章使用的是一个22层的卷积神经网络,将输入转化为一个向量vectorvector之后便可以用来进行卷积操作了。
Learning Convolutional Neural Networks for Graphs
首先最底层的灰色块为网络的输入,每一个块表示的是一个nodenode的感知野receptive field(receptive\ field)区域,也是前面求解得到的44nodesnodes。其中ana_n表示的是每一个nodenode的数据中的一个维度(nodenode如果是彩色图像那就是33维;如果是文字,可能是一个词向量……这里表明数据的维度为n)。粉色的表示卷积核,核的大小为44,但是宽度要和数据维度一样。因此,和每一个nodenode卷季后得到一个值。卷积的步长stride(stride)为4,表明每一次卷积11nodenodestride=4stride=4下一次刚好跨到下一个nodenode。(备注:paperpaperFigure1Figure1 当中,a(a)当中的stride=1stride=1,但是转化为b(b)当中的结构后stride=9stride=9)。卷积核的个数为MM,表明卷积后得到的特征图的通道数为MM,因此最终得到的结果为V1VMV_1……V_M,也就是图的特征表示。有了它便可以进行分类或者是回归的任务了。

参考:
1、Learning Convolutional Neural Networks for Graphs
2、PPT
3、http://link.zhihu.com/?target=https%3A//github.com/tvayer/PSCN