DeepWalk

DeepWalk

Paper : DeepWalk: Online Learning of Social Representations
Code :

摘要

作者提出了一种自监督学习图的点特征表示的方法DeepWalk,使用从截断的随机游走方法中获得的图的局部信息,通过将游走视为句子的等效词来学习潜在表示。DeepWalk作为一种在线学习算法,可建立有效的增量结果,并且可以并行化。事实上DeepWalk已经可以称作是上古的图表示学习的方法了,这篇文章主要是考古用。

DeepWalk

图的点特征表示学习定义如下:给定图 G = ( V , E ) G=(V,E) G=(V,E),假定点的原始特征表示为 X ∈ R ∣ V ∣ × S X\in \mathbb R^{|V|\times S} XRV×S,目标是学习到一个映射 Φ : ( G , X ) → X E ∈ R ∣ V ∣ × d \Phi : (G,X) \rightarrow X_E \in \mathbb R^{|V|\times d} Φ:(G,X)XERV×d,使得映射后点的特征可以包含图的结构信息和点的原始特征信息。

DeepWalk的主要思想可能来自于形式语言与自动机,将图理解成一种语言对应的自动机,那么自动机中的点可以看作是该语言的一个单词,而在自动机上任一从开始状态到结束状态的路径都对应了语言中的一个合法句子。

作者仿照该方法提出了Random Walk,将图序列化,设以节点 v i v_i vi 为根的随机游走路径表示为 v i = W v i 1 , W v i 2 . . . W v i k v_i = \mathcal W_{v_i}^1, \mathcal W_{v_i}^2 ... \mathcal W_{v_i}^k vi=Wvi1,Wvi2...Wvik ,其中 W v i j + 1 \mathcal W_{v_i}^{j+1} Wvij+1 W v i j \mathcal W_{v_i}^{j} Wvij 随机选取的邻居节点,而截断的随机游走是指长度 k k k 是固定的。

随机游走具有以下几个好处

  • 并行化,随机游走是局部的,对于一个大的网络来说,可以同时在不同的顶点开始进行一定长度的随机游走,多个随机游走同时进行,可以减少采样的时间。
  • 适应性,可以适应网络局部的变化。网络的演化通常是局部的点和边的变化,这样的变化只会对部分随机游走路径产生影响,因此在网络的演化过程中不需要每一次都重新计算整个网络的随机游走。

随机游走的信息包含两部分,一部分是点原始特征对应单词带来的信息,另一部分是序列出现的频次和序列中单词的顺序所构成的图的结构信息,因此随机游走的结果可以符合我们的要求。下一步是针对随机游走的结果进行特征学习。作者观察到,随机游走产生的句子构成的文章符合NLP领域词频次分布的幂律定律(Power Laws)

DeepWalk_第1张图片
因此可以采用NLP中任一中词编码方式进行点的特征编码,作者采用的是SkipGram算法,因此DeepWalk算法的总流程表示如下所示

DeepWalk_第2张图片
其中,外层的 γ \gamma γ 表示随机游走整体采样次数, t t t 表示随机游走的截断长度,建立二分树主要是用来进行之后的层次化Softmax。
DeepWalk_第3张图片

SkipGram是一种语言模型,可最大化出现在窗口w中句子中的单词之间的共现概率。算法2迭代出现在窗口w中的随机游走中所有可能的搭配。 对于每个顶点,我们将每个顶点v j映射到其当前表示向量Φ(v j)∈R d(见图3b)。 给定v j的表示形式,我们希望最大化其在步行中的邻居的概率。 我们可以使用几种分类器来学习这种后验分布。 为了加快训练时间,可使用层次Softmax 来近似概率分布。

DeepWalk_第4张图片

总结

作者提出的DeepWalk是一种用于学习顶点的潜在表示的新颖方法。DeepWalk 是图表示算法的开山之作,准确率上现在已经接近过时了。不过该算法可并行化和超大网络上的可扩展性还是非常具有吸引力。作者认为,语言建模的进步可能会继续为网络生成改进的潜在表示。语言建模实际上是从不可观察的语言图中采样的。从建模可观察图获得的见解可能反过来可以改善建模不可观察图的见解。

你可能感兴趣的:(图神经网络,深度学习,机器学习)