DeepWalk

文章背景

题目:《DeepWalk:Online Learning of Social Representations》
来源:ACM SIGKDD2014
作者:Bryan Perozzi、Rami AI-Rfou、Steven Skiena

Abstract

  1. 动机:对网络中每个节点进行低维向量表示。
  2. 一句话概括思路:首先在节点之间进行有截断的随机游走获得节点序列,这时节点可以看作是单词,序列可以看作是句子;然后用NLP的方式对随机游走的输出进行训练,最终获得每个节点的低维向量表示。
    因此对于该框架:输入是图,输出是每个节点的低维向量表示。
  3. 适用场景:多标签网络分类任务——BlogCatalog、Flickr、Youtube。文章说它还可以用于异常检测。
  4. 特点:
    • 稀疏性: 针对稀疏场景,可以提升10%的F1;在一些实验中,DeepWalk仅适用60%的数据就超过了已有方法。
    • 可扩展性:在线学习、增量学习、可并行化。
    • 无监督。

1.Introduction

贡献点:

  1. 利用了深度学习(DL)对图进行表示。学习到了图的结构规律的表达。
  2. 效果:针对稀疏场景,可以提升10%的F1;在一些实验中,DeepWalk仅适用60%的数据就超过了已有方法。
  3. 并行性:算法是并行实现的。

3.Learning social representations

  1. 适应性:增量学习
  2. 低维向量之间的距离应该表示为两个节点的相似性,这样可以用于社团发现。
  3. 低维表示泛化能力更强,加速训练和预测。
  4. 低维向量表示是连续表示。因此对于社团之间的边界区分比较平滑,增强了分类的鲁棒性。

3.1 Random Walks

优势:

  1. 易于并行化:不同线程读入同一个图,但是异步可以输出不同的线路。
  2. 增量学习:图发生小变化时,只需要对改动区域进行随机游走即可,不必重新计算整个图。迭代地进行增量学习,最终即使整个图发生变化,训练也不受影响。

3.2 Connection: Power laws

  1. 一条没有被证明的结论:如果连通图的度分布遵循幂律(即无标度),我们观察到顶点出现在短随机游走中的频率也将遵循幂律分布。
    我自己理解的幂律分布:多数词被提及的次数很少,很少的词被提及了很多次。
  2. 一条可能已经被证明了的贡献:因为NLP符合幂律分布,网络结构也符合幂律分布,因此适用于NLP的方法同样可以用于处理网络结构。

4.Method

4.1Overview

语料集:随机游走序列的集合。
单词表:节点集合。

4.2Algorithm

####4.2.1 skipgram
skipgram最大化了一个窗口中单词共现的概率。

####4.2.2 hierarchical softmax
文章真正使用的方法。

4.3Parallelizability

  1. 可以并行化的理由:低频词是稀疏的。
  2. 并行化方法:因此使用ASGD,多线程单机器。
  3. 效果:线性加速,模型效果基本不受到影响。

4.4Algorithm variants

两种:streaming和non-random walks

  1. streaming:不必看到整个图,局部图直接可以用来更新。
  2. non-random walks:有的网络不必使用random walk,直接利用本来的顺序更好,比如句子中本来是有顺序的,skipgram是可以利用到这种顺序信息的。

5.Experimental design

代码和数据都开源了。
介绍了数据集和baseline。

6.Experiments

6.1Multi-label classification

使用了one-vs-other logistic regression

6.2Parameter sensitivity

6.2.1Effect of dimensionality

  1. 最优维度d依赖于训练数据大小。
  2. 模型效果依赖于迭代次数(最少30次)。

6.2.2Effect of sampling frequency

开始迭代次数越高越好,后来增加迭代次数不能带来更明显的收益。

8.Conclusion

  1. 只利用局部信息,不必看到完整的图
    适用于多标签分类任务
  2. 可输入更大规模的图
    可并行化
  3. Deepwalk得到的结论反过来可以用于优化NLP

我自己的一些想法

  1. 4.2中提及随机游走的长度不必都相同(虽然实验中它是固定的),那长度是否会影响训练效果呢,又如何判断什么时候结束随机游走?(路线:长度是否会影响训练效果—>如何选取每次的长度,即什么时候应该结束)
  2. 4.2中提及restart没有用,但好像node2vec中提及了这个作用,后续注意一下吧。
  3. word2vec中为什么窗口中单词的顺序不重要?
  4. deepwalk利用word2vec的skipgram和hierarchical softmax是否有区别?我猜应该有。
  5. deepwalk和word2vec的本质目的到底是否相同?deepwalk是探寻节点之间的相似性,用于社团发现。word2vec是去寻找近义词或者反义词。如果是这样的话,两个方法之间还是有一点不同的呀!
  6. 4.3中我承认的分布是稀疏的,但是也是稀疏的吗?为什么可以同时使用无锁更新?

本文标题:DeepWalk

文章作者:Alfred

发布时间:2018年10月08日 - 09:10

最后更新:2018年10月12日 - 10:10

原始链接:http://blog.hbsun.top/2018/10/08/DeepWalk/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。