经典的Graph Embedding方法:DeepWalk 和 Node2vec

发布时间 2023-05-23 18:56:25作者: xd_xumaomao

DeepWalk

Deep Walk,它是 2014 年由美国石溪大学的研究者提出的。它的主要思想是在由物品组成的图结构上进行随机游走,产生大量物品序列,然后将这些物品序列作为训练样本输入 Word2vec 进行训练,最终得到物品的 Embedding

 

Node2vec

2016 年,斯坦福大学的研究人员在 DeepWalk 的基础上更进一步,他们提出了 Node2vec 模型。Node2vec 通过调整随机游走跳转概率的方法,让 Graph Embedding 的结果在网络的同质性(Homophily)和结构性(Structural Equivalence)中进行权衡,可以进一步把不同的 Embedding 输入推荐模型,让推荐系统学习到不同的网络结构特点。我这里所说的网络的“同质性”指的是距离相近节点的 Embedding 应该尽量近似,而“结构性”指的是结构上相似的节点的 Embedding 应该尽量接近。

首先,为了使 Graph Embedding 的结果能够表达网络的“结构性”,在随机游走的过程中,我们需要让游走的过程更倾向于 BFS(Breadth First Search,宽度优先搜索),因为 BFS 会更多地在当前节点的邻域中进行游走遍历,相当于对当前节点周边的网络结构进行一次“微观扫描”。当前节点是“局部中心节点”,还是“边缘节点”,亦或是“连接性节点”,其生成的序列包含的节点数量和顺序必然是不同的,从而让最终的 Embedding 抓取到更多结构性信息。

而为了表达“同质性”,随机游走要更倾向于 DFS(Depth First Search,深度优先搜索)才行,因为 DFS 更有可能通过多次跳转,游走到远方的节点上。但无论怎样,DFS 的游走更大概率会在一个大的集团内部进行,这就使得一个集团或者社区内部节点的 Embedding 更为相似,从而更多地表达网络的“同质性”。

那在 Node2vec 算法中,究竟是怎样控制 BFS 和 DFS 的倾向性的呢?其实,它主要是通过节点间的跳转概率来控制跳转的倾向性。下图所示为 Node2vec 算法从节点 t 跳转到节点 v 后,再从节点 v 跳转到周围各点的跳转概率。这里,你要注意这几个节点的特点。比如,节点 t 是随机游走上一步访问的节点,节点 v 是当前访问的节点,节点 x1、x2、x3是与 v 相连的非 t 节点,但节点 x1还与节点 t 相连,这些不同的特点决定了随机游走时下一次跳转的概率。

这些概率我们还可以用具体的公式来表示,从当前节点 v 跳转到下一个节点 x 的概率 πvx​pq​(t,x)⋅ωvx​ ,其中 wvx 是边 vx 的原始权重,αpq​(t,x) 是 Node2vec 定义的一个跳转权重。到底是倾向于 DFS 还是 BFS,主要就与这个跳转权重的定义有关了。这里我们先了解一下它的精确定义,我再作进一步的解释:

其中dtx表示两个结点之间的距离,参数 p 被称为返回参数(Return Parameter),p 越小,随机游走回节点 t 的可能性越大,Node2vec 就更注重表达网络的结构性。参数 q 被称为进出参数(In-out Parameter),q 越小,随机游走到远方节点的可能性越大,Node2vec 更注重表达网络的同质性

参考资料

https://www.zhihu.com/tardis/bd/art/64200072?source_id=1001

https://time.geekbang.org/column/article/296672?code=aL8qmXV4krKvka06zYiU4fzO0N1nCy-jYzTdJ4GGEvQ%25253D&utm_term=SPoster