1. Introduction
我们今天看的论文是斯坦福大学的同学 2016 年发表于的 ACM 的论文——《node2vec: Scalable Feature Learning for Networks》,到目前为止已经被引用 2600 多次。
在这篇论文中作者提出了一个半监督学习算法——Node2Vec,采用了有偏的随机游走算法并结合 Skip-gram 算法学习 Network Embedding,Node2Vec 可以通过参数设置来控制搜索策略,从而有效的平衡了 Embedding 的同质性和结构有效性。
接下来我们来看一下 Node2Vec 的具体实现。
2. Node2Vec
首先引入用于学习节点 Embedding 的 Skip-gram 算法,并给出目标函数为:
m a x ∑ u ∈ V l o g P r ( N S ( u ) ∣ f ( u ) ) max \; \sum_{u \in V} log \ Pr(N_S(u) | f(u)) \\ maxu∈V∑log Pr(NS(u)∣f(u))
其中,u 为节点, N s ( u ) N_s(u) Ns(u) 为节点 u 通过采样策略 S 得到的邻居, f ( u ) f(u) f(u) 是一个映射矩阵,相当于 Work2Vec 中的输入向量。
为简便起见,我们给出两个假设:
-
条件独立性假设:假设观察一个节点的领域与观察其他节点的领域相互独立,所以我们有:
P r ( N S ( u ) ∣ f ( u ) ) = ∏ n i ∈ N S ( u ) P r ( n i ∣ f ( u ) ) Pr(N_S(u) | f(u)) = \prod_{n_i \in N_S(u)} Pr(n_i | f(u)) \\ Pr(NS(u)∣f(u))=ni∈NS(u)∏Pr(ni∣f(u)) -
特征空间对称型假设:在特征空间中,源节点与邻节点相互对称。所以我们有:
p r ( n i ∣ f ( u ) ) = e x p ( f ( n i ) ⋅ f ( u ) ) ∑ v ∈ V e x p ( f ( v ) ⋅ f ( u ) ) pr(n_i | f(u)) = \frac{exp(f(n_i) \cdot f(u))}{\sum_{v\in V} exp(f(v) \cdot f(u)) } \\