DeepWalk粗解

    科技2025-09-05  29

    本文将图网络上随机游走(Random Walk)和自然语言处理中的skip-gram语言模型相结合起来,而产生了在网络表示学习(Network Embedding)在与NLP相结合的第一篇开山之作。

    理论支撑

    也即是在无标度网络中,网络中节点的度分布服从幂律分布。而在此网络中采样后的节点出现频率也服从幂律分布,类似的在将文本进行随机游走的时候同样服从幂律分布。故而这种随机游走的采样没有改变网络整体的结构,是合理的(网络的特性与自然语言处理中的特性十分类似)。

    方法

    从一个节点 v 4 v_4 v4出发,进行随机游走采样,可以获得游走序列 W W W: W = { w v 4 1 , w v 4 2 , w v 4 3 , . . . } W = \{w^1_{v_4}, w^2_{v_4}, w^3_{v_4}, ...\} W={wv41,wv42,wv43,...} 那么我们就可以得到从当前节点 v 4 v_4 v4出发的节点序列,其他节点类似。进而就可以得到每个节点所关联的其他游走序列的节点表示,这里整合为一个矩阵。 而skip-gram算法是一种根据中心词预测上下文词的一种算法,也就是要根据词的序列来计算当前窗口下的词出现的一个条件概率,如: 而当网络比较复杂的时候,我们将所得到的相关的采样的用one-hot来进行编码,进而计算概率的时候,工程量过大,因为向量过于稀疏。常见做法就是使用层次SoftMax来解决这个问题,也就是以当前节点为根节点,根据出现的频率来觉得叶子节点的放置位置,进而来计算每个节点的概率问题,就打打减少了运算时间,提高了效率。

    看算法2发现,文中对skip-gram算法也做了自己的修改,也即是本文中提到的层次SoftMax,如下: 如这篇文章:word2vec原理(二) 基于Hierarchical Softmax的模型详细讲解了原理,并给出了一个C语言的实现版本。

    最后

    可以发现的是,这篇文章和上上篇文章有所不同,这里没有细致的介绍关于本文是如何进行采样的,也没有用伪代码来描述采样的过程。比较细致之处就在于这个思想的提出,以及使用了大量的实验来验证所提出的思路(框架)的有效性。

    时间:2020年11月9日 09:30:51     比较有意思的是,刚看论文的时候,看见了这么一句话: DeepWalk缺乏清晰的目标函数来说明整个框架是如何预留网络结构的。

    Processed: 0.011, SQL: 8