图卷积网络(Semi-Supervised论文思路整理)

在开始之前,多说几句,关于graph和deep learning结合的工作,想必大家都能猜到名字该怎么取,无非是这几个关键词的组合:Graph,Neural,Network,Convolution…所以,许多工作从paper名字来看并没有多大的区分性。

前言

现实世界许多数据都是以graph的形式存储的,比如social networks(社交网络), knowledge graphs(知识图谱), protein-interaction networks(蛋白质相互作用网络), the World Wide Web(万维网),最近有一些研究者把目光投向建立一种通用的神经网络模型来处理graph数据。在此之前,该领域的主流方法是一些基于kernel的方法或基于graph的正则化技术,不过从deep learning的角度来讲,这些已经属于“传统方法”了,不是我们要讨论的主题,不了解也没有关系。

GCNs:定义

由于大家的思想普遍是如何将CNN等神经网络的思想迁移到graph上,所以往往设计出来的结构都有一定的共性,使用类似convolution权重共享的思想,我们可以把这类网络暂且都称作Graph Convolutional Networks(GCNs)。这类网络从数学上来看,是想学习 G = ( V , E ) G = ( V , E ) G = ( V , E ) G=(V,E)G=(V,E) G=(V, E) G=(V,E)G=(V,E)G=(V,E)f(H(l),A)=σ[D1/2(A+I)D1/2H(l)W(l)]

这样,本质上我们就实现了Kipf & Welling (ICLR 2017)中设计的传播模型。

GCNs : 实例

本节我们利用上面介绍的模型实现一个分类问题。首先大家可以先看一下Zachary’s karate club network数据集以及它的背景,该数据集可以以下图的形式呈现,简单介绍的话就是说一个空手道俱乐部内部出现矛盾要被拆分为两波人,我们需要依据队员们平时的交往关系来判断他们会站哪一支队伍,图中每个节点表示一个队员,若两个节点之间存在边,则表示对应两个队员之间关系密切。下图使用clustering做个一个简单的划分,仅做参考,颜色相同的表示最后分在一组(这里作者貌似没有分为2类,而是4类)。

这里使用上述介绍的模型对每个node做embedding(这里网络设置为3层,使用了半监督,具体可以看原文Kipf & Welling ,不过大可以当做有监督来看),embedding后的效果就是同一组特征在空间上距离相近,下面的video展示了embedding的过程,效果还是相当明显的:

width="560" height="315" src="https://youtu.be/EuK4L61JmcQ" allowfullscreen="">

显示不了的话可移步https://youtu.be/EuK4L61JmcQ观看

GCNs:启发式的解释

我们发现一个很有意思的现象,就是当我们还没有开始训练,仅仅是随机初始化上述模型的参数之后,也产生了一定的embedding效果,如下图所示:

近期一个叫DeepWalk (Perozzi et al., KDD 2014)的工作表明他们可以使用无监督的方式产生一个相似的embedding效果,这听起来挺不可思议的,我们试图从Weisfeiler-Lehman算法的角度来解释,并把GCNs看做该算法的通用、可微版。

其实下面的部分可看可不看,因为我并没与觉得作者的解释有多少说服力,感兴趣的可以看一下原文。
之前做过一个PPT,也简单的介绍了一下三种graph neural network,需要的可以点击这里浏览一下。

由于水平所限,可能文中很多地方解释的不好,欢迎大家批评指正,相互进步,谢谢~

reference

http://tkipf.github.io/graph-convolutional-networks/

        

你可能感兴趣的:(图神经网络)