今天学习的是纽约州立大学石溪分校在 NetWork Embedding 的工作《DeepWalk Online Learning of Social Representations》,这篇文章于 2014 年发表于 ACM 会议,目前已经有 2700 多引用,是第一个将 Word2Vec 应用到 NetWork Embedding 并取得了巨大成功的方法。
由于论文比较简单,所以直接进入主题。
1. Introduction
这篇论文提出了一个新的算法——DeepWalk,大致为:通过在网络中随机游走捕获网络局部信息,将游走序列等效为句子利用 Skip-Gram 算法学习 Embedding 向量,从而完成 NetWork Embedding。
通常学习一个 NetWork Embedding 时会关注以下几个性质:
- 适应性:由于网络是动态的,网络表征应能够适应网络的正常演化;
- 社区意识:节点间的编码距离应该能反应出成员之间的社会相似性;
- 低维度:维度低占用内存小,且泛化能力强;
- 连续性:连续的表征不仅可以提供节点的可视化图,也可以在分类时更有健壮性。
作者在应用 Word2Vec 时针对性的提出了一些优化方法使得训练出的 NetWork Embedding 满足了以上需求。
2 DeepWalk
在介绍具体的优化方法之前,我们先来介绍一下随机游走和语言模型相关的知识。
2.1 Random Walks
随机游走是一个随机过程,顾名思义:每次在网络节点中行走时的选择都是随机的,即无法基于过去的行为预测未来的行为。作者采用定长的随机游走作为 DeepWalk 提取局部网络结构的基本工具。
除了提取网络结构外,随机游走还有其它特点:
- 并行化:容易并行化,在网络中可以多放几个 Walker 探索同一个网络的不同区域;
- 局部性:网络发生细微变化时只需重新提取局部网络结构,不需要重新计算全部的网络结构。
2.2 Power Laws
作者选择随机游走来捕获网络结构的原始结构,那如何去从这些结构中提取信息呢?
解决方案大家都知道,是利用 Word2Vec 技术去提取信息,但如何证明其合理性?
作者将随机游走序列从真实网络中提取到的顶点频率和从维基百科中提取到的单词频率进行对比,发现两者都是服从幂律分布的,如下图所示,这一定程度上说明了两者的相似性,所以 Word2Vec 可以应用于网络结构。
2.3 Language Modeling
简单看下语言模型,给定一个单词序列:
W 1 n = ( w 0 , w 1 , w 2 , . . . , w n ) W_1^n = (w_0, w_1, w_2,...,w_n) \\ W1n=(w0,w1,w2,...,w