Node2vec 的工作原理

gow*_*ath 5 nlp graph-theory machine-learning

我一直在阅读有关node2vec嵌入算法的内容,但我有点困惑它是如何工作的。

作为参考,node2vec 由 p 和 q 参数化,并通过模拟来自节点的一堆随机游走并在这些游走上运行 word2vec 嵌入作为“句子”来工作。通过以不同方式设置p和q,您可以在模拟阶段获得更多BFS或更多DFS类型的随机游走,在嵌入中捕获不同的网络结构。

设置 q > 1 为我们提供了更多的 BFS 行为,因为游走样本由小局部区域内的节点组成。我感到困惑的是,论文说这相当于将具有相似结构属性的节点彼此靠近地嵌入。

我不太明白这是如何运作的。如果我的网络中有两个相距较远的独立星型/集线器结构节点,为什么基于这两个节点的随机游走的嵌入会将这两个节点在嵌入中靠近在一起?

blu*_*ers 3

在读完这篇文章后,这个问题也占据了我的脑海,尤其是在凭经验看到它确实做到了这一点之后。

我假设您参考了论文中显示下图的部分,指出u所得s6嵌入在空间中将非常相似: 在此输入图像描述

要理解为什么会发生这种情况,首先我们必须了解Skip-gram 模型如何嵌入信息,这是消耗随机游走的机制。Skip-gram 模型最终会为可以出现在相似上下文中的标记生成相似的嵌入 - 但从skip-gram 模型的角度来看,这真正意味着什么?如果我们想嵌入结构等价,我们会倾向于类似 DFS 的遍历(此外,我们必须为 Skip-gram 模型使用足够的窗口大小)。所以随机游走看起来像

1. s1 > u > s4 > s5 > s6 > s8
2. s8 > s6 > s5 > s4 > u > s1
3. s1 > s3 > u > s2 > s5 > s6
4. s7 > s6 > s5 > s2 > u > s3
.
.
n. .....
Run Code Online (Sandbox Code Playgroud)

将会发生的情况是,会有许多步道,其中u和s6出现在其周围环境相同的步道中。由于它们的周围环境相似,这意味着它们的上下文相似,并且如上所述,相似的上下文 == 相似的嵌入。

有人可能会进一步问订单呢?好吧,顺序并不重要,因为skip-gram模型使用窗口大小来为每个句子生成对,在我提供的链接中您可以进一步理解这个概念。

因此,最重要的是,如果您可以创建为两个节点创建相似上下文的路径,那么它们的嵌入将是相似的。