参考一个微信公众号DrPeot
证明:DeepWalk的本质是一种矩阵分解
主要用于自己学习
1.对NRL的定义 (网络表示学习)
给定一个网络:G=(V,E)
对每一个节点v建立低维向量 且k << |V|
由于稠密的实数化表示,rv 可以减轻诸如邻接矩阵等表示带来的稀疏性。将rv当作节点v的特征,将其应用到机器学习中去。
2.Deepwalk
Deepwalk第一将skip-gram算法用于网络结构学习社交网络的节点表示。
首先生成一个短随机游走当作相似性度量,
给定由随机游走生成的节点序列S={v1,v2,...,V|s|}
将顶点视作中心节点vi 的上下文信息。
与SkipGram相似,DeepWalk的目标是最大化S中的顶点-上下文对的概率的对数的平均值:
其中p(vj|vi) 是一个softmax函数
rvi和cvj分别是中心节点vi 和上下文节点vj 的向量表示。
因此每个节点有两种表示向量:作为中心节点的r 和作为上下文节点的c。
之后DeepWalk使用SkipGram及Hierarchical Softmax从S中学习节点的向量表示。
DeepWalk的思想类似word2vec,使用图中节点与节点的共现关系来学习节点的向量表示。那么关键的问题就是如何来描述节点与节点的共现关系,DeepWalk给出的方法是使用随机游走(RandomWalk)的方式在图中进行节点采样。
RandomWalk是一种可重复访问已访问节点的深度优先遍历算法。给定当前访问起始节点,从其邻居中随机采样节点作为下一个访问节点,重复此过程,直到访问序列长度满足预设条件。
获取足够数量的节点访问序列后,使用skip-gram model 进行向量学习。