《DeepWalk: Online Learning of Social Representations》学习笔记

来源:互联网 发布:javascript简单游戏 编辑:程序博客网 时间:2024/05/21 03:58

先附上文章链接 DeepWalk: Online Learning of Social Representations

作者也将python版的deepwalk开源了 GitHub地址

大神的关于这篇文章的主页,里面有PPT 链接

前言

最近在看一些图嵌入、图迁移学习相关的paper,陆续会将读到的一些有意思的paper整理成学习笔记。篇章中的一些个人看法与理解可能会有不恰当的地方,欢迎大家一起讨论。

介绍

Deepwalk这篇paper是有一篇很有意思的文章,整篇paper都在探讨一件事:将一个网络中的每个节点映射成一个低维的向量。说白了就是用一个向量去表示网络中的每个节点,并且希望这些向量能够将网络中的节点中的关系表达出来,即希望在原始网络中关系越紧密的结点对应的向量在其空间中距离越近。用张图表示如下所示(出自论文):

输入的是一个网络,其中颜色相同的结点表示拓扑关系上更为相近的结点。输出的是每个节点的二维向量,每个节点对应的向量关系如图所示。我们可以从这个图看出,越是拓扑结构相近的点,其对应的二维向量在二维空间上距离与近。

我个人理解可以将这个过程理解为一个降维的过程,但是不同于传统意义上的高纬度降到低纬度,而是将一个复杂的结构降到低纬度。或者说可以理解为,将网络中的拓扑结构,嵌入到一个低维向量中,每个节点的低维向量,从某种程度上反应了该节点在网络中的连接情况。

这样做的好处

这样做有什么目的呢?

我认为最主要的好处,就是便于将一些机器学习的算法应用到网络中。网络数据不同于传统的数据,它不仅包含了节点的信息,还包含了节点间的关系,对于传统的机器学习算法,很难将其应用于网络中。例如网络中的社团发现算法,大多数情况下我们都针对网络做大量的游走,不断改变网络的社团结构,以使网络获得最优的模块度,但是如果我们能将拓扑信息嵌入到低维向量中,那么每个节点我们都可以看做是一个样本,每个维度都可以看做一个feature,那么只需要跑个聚类算法,就可以得到很好的结果。除了聚类,还有链路预测、推荐等一系列网络中的问题,都可以直接扔到机器学习的相关算法中跑出来。

如何得到对应的向量

我觉得作者的思路很讨巧。我们都知道word2vec能够将文本中的每个词映射到一个低维向量中,这个目标很像Deepwalk的目标。但是word2vec针对的是文本,或者说是有序的单词序列,Deepwalk针对的是带有拓扑结构的网络。

于是作者提出了一个思路,针对每个节点跑了个随机游走,游走过程中就得到了一系列的有序节点序列,这些节点序列可以类比于文章的句子,节点类比于句子中的单词,然后再使用word2vec跑,得到对应的向量。

上边的思路可行不可行,重点是要证明网络中的节点与文本中的词相似不相似,于是作者针对YouTube的社交网络与Wikipedia的文章进行了研究,比较了在短的随机游走中节点出现的频度与文章中单词的频度进行了比较,可以得出二者基本上类似。(说实话我不是很理解这样的比较有什么意义,可能我对word2vec理解的不够。确实两个图比较相似,这个就是证明了一下Zipf’s law,关键能不能用word2vec取决于这个吗?)

证明了二者相似,就可以用类似语言模型的方法研究图数据。本文中实际上就是用了word2vec的方法训练出了“词向量”。

相关算法

实现的过程不是很复杂,事实上就两步,一步游走,一步SkipGram,游走的过程事实上是一个深搜的游走,SkipGram跟word2vec的相似,我就不细说了,直接贴了论文中的图:


同时作者也在GitHub上开源了Python版本的Deepwalk,大家可以与研究研究,它的随机游走过程很有意思,直接随了若干个点,同时SkipGram过程,直接用的Gensim的word2vec。

总结

关于图嵌入,图降维的研究,好像很早就有人做过,但都没有像这篇文章如此有影响力。感觉这篇文章的意义在于,它为图研究找到了一个很好的表示学习方法,开辟了一个图研究的新领域,这导致这两年Graph Embedding火的不行,随便一个大数据、社交网络的会,都得有几篇是做embedding的。

我个人很推崇这篇文章的,虽然仔细品品好像是将两个模型糅杂在一起,但就是很佩服作者的想法。不过客观来讲,文中有部分地方还是有很大的改进空间的,比如随机游走过程,本文提出的更像是随机地进行深搜,后来的很多文章,例如LINE、Node2vec都有在这方面有进行改进。还有一点就是LINE里面提到的,Deepwalk中没有提出一个明确的目标函数(这是不是机器学习专家的职业病,非得把问题转化为最优化问题…),虽然我也不知道这个算不算一个缺点,但是感觉说的确实有点道理( ̄▽ ̄)~*

阅读全文
0 0