介绍

英文题目:node2vec: Scalable Feature Learning for Networks

中文题目:node2vec:面向网络的可扩展特征学习

论文地址:https://arxiv.org/abs/1607.00653

领域:图神经网络,知识表示

发表时间:2016

出处:KDD

被引量:6181

代码和数据:http://snap.stanford.edu/node2vec/

参考其它翻译:【论文笔记】node2vec

说明

  • 一切皆可 vector
  • 图神经网络经典必读第一篇

读后感

(看完题目、摘要、结论、图表及小标题看完,约 30 分钟)

针对问题:自动学习图中结点和边的特征表示

目标:更好地表征图中的节点:兼顾同质性和结构等价性。

结果:在多领域与 SOTA 模型对比,展示算法有效性,可在复杂网络中生成任务无关的表征。

方法:note2vec 框架,优化随机游走算法,结合深度优先和广度优先两种游走方式,用参数设置游走方式的选择,从而提升效率。

精读

(核心章节:读 + 整理:3 小时)

摘要

如果想使用机器学习算法对图中节点和边建模,需要自动学习对图中元素的描述以替代手动对图的特征工程。

文中提出 node2vec 框架,学习对图中节点的连续性特征的表示。将节点映射到低维空间,使图中相邻节点相似性最高。文中设计了一种有偏随机游走过程,核心在于加入有弹性的领域探索方法来增强特征的表达能力。

在多分类和连接预测任务中对比了 node2vec 与 SOTA 模型,展示出文中方法在复杂网络情况下,可有效地学习任务无关的表示。

……

3. 特征学习框架

设 G=(V,E),其中 G 为图,V 是节点,E 是边。设 f 为 V->\(R^d\) 映射函数,将节点 V 映射成特征表示 R,d 是特征维度。对于每个节点 u∈V,定义 Ns(u) 为使用采样策略 S 得到的节点 u 的邻居。

目标是找到映射 f,以最大化节点 u 的邻居是 Ns(u) 的对数概率。Pasted image 20220220154359.png 为了简化问题,做以下假设:

  • 条件独立假设:假设节点与其各个邻居之间的关系相互独立
Pasted image 20220220153258.png
  • 特征空间中的对称性:节点与其邻居的关系是对称的。
Pasted image 20220220154241.png

基于上述两个假设,公式一可简化成:

Pasted image 20220220154334.png
Pasted image 20220220154637.png

当网络很大时,使用负抽样来逼近它;并使用随机梯度上升法来优化模型参数。

特征学习方法使用自然语言处理中的 Skip-gram 方法。

经典搜索策略

Pasted image 20220220160807.png

常见两种采样策略:

  • 广度优先 (BFS)

邻域由与它直接连通的节点组成,如上图所示,当邻居数据 k=3 时,BFS 采样节点 s1,s2,s3。

  • 深度优先 (DFS)

邻域由距离源节点越来越远的顺序采样的节点组成,如上图中的 s4,s5,s6。

同质性和相似结构:

  • 同质性

同质网络中各个节点往往是相互连通的,如上图中的 u 和 s1 就属于同质网络。

  • 结构相似

当节点有类似的网络结构时,这些节点可能充当相似角色,比如上图中的 u 和 s6 具有结构相似性(看起来像节点中的 hub)。需要注意的,结构相似的网络可能并不相连,它们可能出现在网络的不同位置。

另外,同质性和结构相似性往往在网络中并存。

不同的采样策略决定了节点的特征表示,基于 BFS 的嵌入方法与结构相似性相关,它可以找到微观局部的邻居,当目标节点起到桥接或 hub 作用时,通过直接邻域就可以发现。用 BFS 只能探索图中比较少的区域。相对来说,DFS 可以探索更大区域,它反映了邻域的宏观情况,即同源性。它不但需要推断节点间依赖性,还要推断精确的关系,这相对困难,另外,深度优先涉及更远更复杂的依赖,且一般来说距离越远,相关性越小。

3.2 node2vec

文中提出了一种弹性的邻域采样策略,兼顾深度和广度。

3.2.1 随机游走

对于节点 u,先设定游走的步数 l,用 ci 表示第 i 步游走的分布,比如第 0 步时 c0=u。

Pasted image 20220220164900.png

其中πvx 是节点 v 和 x 之间的转移概率,而 Z 是归一化常数。

3.2.2 有偏探索

最简单的方法是根据边的权重采样下一个节点,但这样无法兼顾网络结构以及不同的邻居类型。另外,还需要结合 BFS 和 DFS,而非二选一。

文中使用了 p,q 两个参数,如图所示:上一步从 t 到 v,目前处于节点 v,此时计算边的转移概率πvx:

Pasted image 20220220170011.png
Pasted image 20220220170023.png

其中 wvx 是图中边的权重,dtx 是从 t 到 x 的最短路径距离(注意这里指的是 t 和 x 的距离,不是 v 和 x 的距离)。

Pasted image 20220220165752.png

如图所示,参数 p 和 q 控制着游走的距离以及近邻数。

返回参数 p:p 控制是否返回 t 节点,p 较大时,不容易返回 t 节点,它鼓励了模型向外探索,并避免了两跳冗余;当 p 较小时,则使距离足够短,使表示具有微观性。

向内/向外参数 q:q 允许选择探索向内或向外的节点,当 q>1 时,随机游走倾向回到 t,使表示具有微观性;当 q<1 时,则倾向广度优先。与完全的深度优先不同,这里只考虑了两步。

相对于单纯的深度或广度优先,随机游走在空间和时间上都更加高效。

3.2.3 node2vec 算法
Pasted image 20220220172409.png

PreprocessModifiedWeights 根据参数 p,q 和图 G 生成转换概率;外循环表示生成 r 次随机游走;内循环对于每个节点 u,用 node2vecWork 生成随机游走,最后使用随机梯度下降 SGD 优化模型参数。

函数 note2vecWork 用于生成每个节点的游走,遍历每种可能的游走长度 l,将当前节点 curr 设为最后添加的节点,找到它所有的邻居节点,然后根据转移概率π进行有偏采样,得到邻居 s 并将其加入 walk。

最终由三步构成:计算转移概率、模拟随机游走、使用 SGD 优化。

3.3 学习边的特征表示

node2vec 提供了半监督的节点特征学习方法,有时我们对于节点间的关系更感兴趣,比如链接预测:两个节点间是否存在连接,随机游走方法可将节点的表示扩展成边的表示。

假设两个节点 u 和 v,其特征向量为 f(u),f(v),则两个节点的关系被表示为 g(u,v)。无论 u 与 v 之间是否有边存在,都可以用这种方法表示(存在边为 true,不存在为 false)。还有一些方法也可以用于表示边,如下表所示。

Pasted image 20220220181535.png

图 3 描述了节点的关系,上图为同质化,下图为结构一致性。

Pasted image 20220220181928.png