您的位置:首页 > 其它

论文笔记之Learning Convolutional Neural Networks for Graphs

2016-12-06 11:07 941 查看
本篇论文是2016ICML上的一篇论文,对于如何将cnn应用在graph上提供了一种新的思路。

架构:



总体上讲,就是用w个固定size=(k+1)的子图来表示输入的graph,再将这w个子图正则化后,生成一个w(k+1)维的向量,作为传统的cnn的输入,进行学习。其实就是做了一个从graph到向量的映射的一个预处理过程。

算法流程

输入:任意一张图

输出:每个channel输出w个receptive field

Step1: graph labeling(对图的节点做标记,比如可以用节点的度做标记,做图的划分,也 可以叫做color refinement or vertex classification)

文中采用The Weisfeiler-Lehman algorithm做图的划分。由此可以得到每个节点的rank 值(为了不同的图能够有一个规范化的组织方式)

Step2:对labeling好的节点排序,取前w个节点,作为处理的节点序列。(这样就可以把不 同size的graph,变成同一个size)若不足w个节点,则,在输出中加全零的receptive field,相当于padding

Step3:采用stride=s来遍历这w个节点。文中s=1(若s)1,为了输出有w个receptive field, 也用step2的方式补全)

Step4:对遍历到的每个节点v(称作root),采用bfs的方式获得此节点的k个1-neighborhood, 如果不k个,再遍历1-neighborhood的1-neighborhood。直到满足k个,或者所有的 邻居节点都遍历完。此节点和他的k个邻居节点就生成了neighborhood graph。

Step5: step4就生成了w个(s=1)neighborhood graph。需要对着w个graph 进行labeling, 根据离root节点v的远近来计算每个节点的rank,根据算法4是离v越近,r越小。 如果每个neighborhood graph不足k个节点,用0节点补充

Step6:规范化step5得到了已经label好的graph,因为需要把它变成injective,使每个节点 的标签唯一,采用nauty的算法

通过这w个receptive field就能得到一个w(k+1)维的向量
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐