DeepWalk 论文笔记
# DeepWalk 论文笔记
针对论文[1]的阅读撰写阅读笔记。DeepWalk的代码实现 (opens new window)
# 概述
这篇论文主要提出了在一个网络中,学习节点隐表达的方法——DeepWalk,这个方法在一个连续向量空间中对节点的社会关系进行编码,是语言模型和无监督学习从单词序列到图上的一个扩展。该方法将截断游走的序列当成句子进行学习。该方法具有可扩展,可并行化的特点,可以用来做网络分类和异常点检测。
# 贡献
论文贡献有三点:
- 将深度学习应用到图分析中,构建鲁棒性的表示,其结果可应用于统计模型中
- 将表示结果应用于一些社会网络的多标签分类任务中,与对比算法比较,大部分的
值提高5-10%,有些情况下,在给定少于60%训练集的情况下,比其他对比方法要好 - 论文通过构建互联网规模(例如YouTube)的并行化实现的表示,论证了方法的可扩展性,同时描述了构建流式版本的方法实现
# 问题描述
给定一个图
- 自适应性,真实的社会网络是不断变化的,新的社会化关系进来之后,应该不需要再重新执行一次学习过程
- 社区感知性,学出来的隐空间应该能够包含网络中同质节点或相似节点距离近的信息
- 低维度
- 连续性
论文选取的是随机游走序列,作为DeepWalk的输入。原因有:
- 随机游走能够包含网络的局部结构
- 使用随机游走可以很方便地并行化
- 当网络结构具有微小的变化时,可以针对变化的部分生成新的随机游走,更新学习模型,提高了学习效率
- 如果一个网络的节点服从幂律分布,那么节点在随机游走序列中的出现次数也应该服从幂律分布,论文通过实证发现自然语言处理中单词的出现频率也服从幂律分布。可以很自然地将自然语言处理的相关方法直接用于构建社区结构模型中。
针对一个自然语言处理问题,给定一个单词序列
- 把根据上下文预测一个单词的问题,变为根据一个单词预测上下文的问题
- 在一个给定单词的左边和右边都会出现上下文内容
- 去除单词出现的顺序约束
于是问题变成了最优化如下式子
minimize_{\Phi}-log Pr(\{v_{i-w},...,v_{i+w}\}\setminus v_i | \Phi(v_i))
# 方法
算法包含两个主要部分:一个随机游走生成器和一个更新过程。随机游走生成器随机均匀地选取网络节点,并生成固定长度的随机游走序列,每个节点生成长度为
# 并行化
由于节的度服从长尾分布,因此针对
# 流式版本
这里,从图中获得一些随机序列,就直接应用到图的训练中。做了一些调整,将学习率
# 非随机游走
如果网络图是由相互交互的代理间的元素序列构成,例如用户在一个网站上的页面访问。那么我们可以直接使用这个序列作为输入,而不用使用随机游走来生成。一般这种网络,不仅包含结构信息,而且包含语义信息。
# 实验部分
实验部分就是各种说论文提出的算法有多么好了,对比的算法有,SpectralClustering,Modularity,EdgeCluster,wvRN,Majority。数据集有BlogCatalog,Flickr,YouTube。然后又做了参数敏感性分析,生成的隐表示的维度
[1]: Perozzi B, Al-Rfou R, Skiena S. Deepwalk: Online learning of social representations[C]//Proceedings of the 20th ACM SIGKDD international conference on Knowledge discovery and data mining. ACM, 2014: 701-710.