Node2Vec
论文名称:node2vec: Scalable Feature Learning for Networks
论文地址:https://www.kdd.org/kdd2016/papers/files/rfp0218-groverA.pdf
Node2Vec是用于学习网络节点的连续特征表示。node2vec将节点映射为低维特征表示,最大化网络邻居节点的似然表示。定义一组弹性的邻居节点的概念,设计有偏的随机游走策略,学习探索各种各样的邻居表示。
1.FEATURE LEARNING FRAMEWORK
G = ( V , E ) G=(V,E) G=(V,E)表示网络, 我们分析方法适用于有向(无向),有权(无权)的网络模型。 f : V → R d f:V\rightarrow \mathbb{R}^d f:V→Rd将节点映射为 特征表示,用于下游的预测任务。 d d d表示特征表示的维度。 f f f是大小为 ∣ V ∣ × d |V|\times d ∣V∣×d的参数矩阵。对于每个source node u ∈ V u \in V u∈V, 我们定义 N S ( u ) ⊂ V N_{S}(u) \subset V NS(u)⊂V 为通过采样策略 S S S获得 u u u节点的邻居节点。
我们采用扩展的Skip-gram结构。给定节点
u
u
u的特征表示,最大化邻居节点的log-probability。
f
f
f表示如下:
max
f
∑
u
∈
V
log
Pr
(
N
S
(
u
)
∣
f
(
u
)
)
(1)
\max _{f} \sum_{u \in V} \log \operatorname{Pr}\left(N_{S}(u) \mid f(u)\right)\tag{1}
fmaxu∈V∑logPr(NS(u)∣f(u))(1)
为了使得优化过程易于处理,我们作出两个假设:
-
条件独立假设. 在给定source node的节点,他们的邻居节点是是独立的。
Pr ( N S ( u ) ∣ f ( u ) ) = ∏ n i ∈ N S ( u ) Pr ( n i ∣ f ( u ) ) \operatorname{Pr}\left(N_{S}(u) \mid f(u)\right)=\prod_{n_{i} \in N_{S}(u)} \operatorname{Pr}\left(n_{i} \mid f(u)\right) Pr(NS(u)∣f(u))=ni∈NS(u)∏Pr(ni∣f(u)) -
Symmertry in feature space。 source node和neighborhood在feature space之间的影响是对称。
对source-neighborhood node pair的特征进行softmax dot product操作:
Pr
(
n
i
∣
f
(
u
)
)
=
exp
(
f
(
n
i
)
⋅
f
(
u
)
)
∑
v
∈
V
exp
(
f
(
v
)
⋅
f
(
u
)
)
\operatorname{Pr}\left(n_{i} \mid f(u)\right)=\frac{\exp \left(f\left(n_{i}\right) \cdot f(u)\right)}{\sum_{v \in V} \exp (f(v) \cdot f(u))}
Pr(ni∣f(u))=∑v∈Vexp(f(v)⋅f(u))exp(f(ni)⋅f(u))
根据以上假设Eq.1 简化为:
max
f
∑
u
∈
V
[
−
log
Z
u
+
∑
n
i
∈
N
S
(
u
)
f
(
n
i
)
⋅
f
(
u
)
]
(2)
\max _{f} \sum_{u \in V}\left[-\log Z_{u}+\sum_{n_{i} \in N_{S}(u)} f\left(n_{i}\right) \cdot f(u)\right]\tag{2}
fmaxu∈V∑⎣⎡−logZu+ni∈NS(u)∑f(ni)⋅f(u)⎦⎤(2)
对于每个节点的partition function,
Z
u
=
∑
v
∈
V
exp
(
f
(
u
)
⋅
f
(
v
)
)
Z_{u}=\sum_{v \in V} \exp (f(u) \cdot f(v))
Zu=∑v∈Vexp(f(u)⋅f(v))对于大型网络的计算代价是非常大的,因此,我们采用负采样。采用随机梯度法优化Eq.2中的模型参数。
在文本中,基于连续的文字序列,通过window size定义它们的邻居。在网络中,采用随机策略生成source节点的不同的邻居,他们的邻居节点依赖于抽样策略 S S S。
2.node2vec
基于BFS和DFS, 我们设计两者之间平滑的抽样策略。
2.1 Random Walks
设随机游走的长度
l
l
l,
c
i
c_i
ci是游走的第
i
i
i个节点, 起始节点
c
0
=
u
c_0=u
c0=u。节点
c
i
c_i
ci通过以下方式产生:
P
(
c
i
=
x
∣
c
i
−
1
=
v
)
=
{
π
v
x
Z
if
(
v
,
x
)
∈
E
0
otherwise
P\left(c_{i}=x \mid c_{i-1}=v\right)=\left\{\begin{array}{ll} \frac{\pi_{v x}}{Z} & \text { if }(v, x) \in E \\ 0 & \text { otherwise } \end{array}\right.
P(ci=x∣ci−1=v)={Zπvx0 if (v,x)∈E otherwise
π
v
x
\pi_{vx}
πvx是 节点v和节点x之间非标准化的转移概率,
Z
Z
Z是用于标准化的常数。
2.2 Search bias α \alpha α
最简单直接的随机游走方式是基于边的权重 w v x w_{vx} wvx进行下一个节点的抽样。例如: π v x = w v x \pi_{vx}=w_{vx} πvx=wvx。(对于无权图 w v x = 1 w_{vx}=1 wvx=1)。但是,这种情况没有考虑到网络的结构,不能进行不同形式邻居节点的探查。BFS和DFS分别适合结构等价和同质的网络的极端采样范式。现实多是两种情况的融合,我们的随机游走对两者作出平衡。
根据
p
p
p和
q
q
q我们定义
2
n
d
2^{nd}
2nd阶的随机游走,
p
p
p和
q
q
q引导游走的方式:假设刚游走过一条边
(
t
,
v
)
(t,v)
(t,v), 现在处于节点
v
v
v,(Figure 2)。现在基于边
(
v
,
x
)
(v,x)
(v,x), 决定下一步游走的转移概率
π
v
x
\pi_{vx}
πvx。我们设未标准化的转移概率
π
v
x
=
α
p
q
(
t
,
x
)
⋅
w
v
x
\pi_{vx}=\alpha_{pq}(t,x)\cdot w_{vx}
πvx=αpq(t,x)⋅wvx,其中:
α
p
q
(
t
,
x
)
=
{
1
p
if
d
t
x
=
0
1
if
d
t
x
=
1
1
q
if
d
t
x
=
2
\alpha_{p q}(t, x)=\left\{\begin{array}{ll} \frac{1}{p} & \text { if } d_{t x}=0 \\ 1 & \text { if } d_{t x}=1 \\ \frac{1}{q} & \text { if } d_{t x}=2 \end{array}\right.
αpq(t,x)=⎩⎨⎧p11q1 if dtx=0 if dtx=1 if dtx=2
d
t
x
d_{tx}
dtx是节点
t
t
t和节点
x
x
x之间的最短路径。
d
t
x
d_{tx}
dtx是集合
{
0
,
1
,
2
}
\{0,1,2\}
{0,1,2}中的一个。两个参数对于引导游走的方式是非常必要的。
直观上,参数 p p p和参数 q q q是用来控制离开起始节点 u u u邻域的速度。特别的,这些参数允许我们的搜索过程在BFS和DFS之间进行插值,从而反映对不同节点的亲和力。
Return parameter p p p
参数 p p p控制在游走的过程中,折返( revisiting)访问节点可能性。如果将其设置一个较高的值 ( > max ( q , 1 ) ) (\gt \max(q,1)) (>max(q,1)),采样到已经访问过节点的概率是非常小的(除非下一个节点没有邻居节点)。这个策略鼓励新的探索,避免重复过去无效2-hop。另一方面,如果 p p p比较小 ( < min ( q , 1 ) ) (\lt\min(q,1)) (<min(q,1)),它将会导致游走的回溯(Figure 2), 将会导致在节点 u u u附近进行local walk。
In-out parameter q q q
参数 q q q控制“inward”和“outward”的参数。如Figure 2,如果 q > 1 q\gt1 q>1, 随机游走偏向节点 t t t。这个游走获得起始节点的局部视图,类似BFS,获取都是局部样本点。
如果 q < 1 q<1 q<1, 游走会远离节点 t t t, 进行更深层次访问。这种行为类似DFS探索。与DFS不同的是,我们基于随机游走的框架实现类似DFS探索。给定样本点 u u u, 抽样的样本不是严格遵循DFS的distance 递增过程,但是采样的效率是非常高的且易于处理。设 π v , x \pi_{v,x} πv,x是在 t t t时刻, 当前进行节点的函数,它们的随机游走符合马尔科夫性。
Benefits of random walks
在时间和空间复杂度方面,相对于 BFS和DFS, 随机游走的计算非常高效的。在空间复杂度方面, 存储节点邻居 O ∣ E ∣ O|E| O∣E∣. 在 2 n d 2^{nd} 2nd随机游走过程中,存储邻居间的交互,它们的空间复杂度是 O ( a 2 ∣ V ∣ ) O(a^2|V|) O(a2∣V∣), 其中 a a a是图平均度。在时间复杂度方面,通过在样本生成过程施加图连接,随机游走一种方便的机制,通过跨不同源节点重用样本来提高采样的效率。假设模拟 l > k l>k l>k随机游走, 由于马尔可夫性, 我们可以为 l − k l-k l−k个节点一次产生 k k k个样本。因此,每个样本的复杂度为 O ( l k ( l − k ) ) O(\frac{l}{k(l-k)}) O(k(l−k)l)。举例来说,我们随机游走 l = 6 l=6 l=6, 序列为 { u , s 4 , s 5 , s 6 , s 8 , s 9 } \{u, s_4, s_5, s_6, s_8, s_9\} {u,s4,s5,s6,s8,s9}, 会产生如下: N S ( u ) = { s 4 , s 5 , s 6 } N_{S}(u)=\left\{s_{4}, s_{5}, s_{6}\right\} NS(u)={s4,s5,s6}, N S ( s 4 ) = { s 5 , s 6 , s 8 } N_{S}\left(s_{4}\right)=\left\{s_{5}, s_{6}, s_{8}\right\} NS(s4)={s5,s6,s8}和 N S ( s 5 ) = { s 6 , s 8 , s 9 } N_S(s_5)=\{s_6,s_8,s_9\} NS(s5)={s6,s8,s9}。需要注意的是:重用样本在整个过程中会引入偏差,但效率大大提高。
2.3 The node2vec algorithm
Algorithm 1是node2vec的伪代码,由于起始节点 u u u的选择, 在随机游走过程中,会存在隐含的偏差。因为我们要学习所有节点的表示,我们将每个节点作为起始节点,随机游走固定的长度 l l l, 游走 r r r次。每一步的游走基于转移概率 π v x \pi_{vx} πvx。对于二阶马尔科夫转移概率 π v x \pi_{vx} πvx可以事先计算。因此,对于节点的采样可以在 O ( 1 ) O(1) O(1)时间内完成。node2vec可以分为3个阶段:转移概率预计算、随机游走序列生成、SGD优化,三个过程串联进行。每个阶段可以并行、异步执行,对全局进行优化。
3 Learning edge features
node2vec提供半监督的方式学习节点特征表示。然而,相对个体节点,我们通常对节点对的预测任务更加感兴趣。例如,在链路预测任务中,判断两个节点是否存在边。因为随机游走自然地学习到网络节点之间的连接性。我们基于个体节点的特征表示,使用bootstrapping的方法,可以学习节点对之间的关系。
考虑两个节点 u u u和 v v v, 我们基于特征向量 f ( u ) f(u) f(u)和 f ( v ) f(v) f(v)定义二值算子 ∘ \circ ∘,用于计算表征向量 g ( u , v ) g(u,v) g(u,v), g : V × V → R d ′ g: V \times V \rightarrow \mathbb{R}^{d^{\prime}} g:V×V→Rd′, 其中, d ′ d^{\prime} d′是节点对 ( u , v ) (u,v) (u,v)表征大小。我们想让我们的算子对任何算子定义有效,即使节点之间的边不存在。这样做是方便链路预测。我们的测试数据包含真假边。我们考虑几种算子 ∘ \circ ∘, 使得 d ′ = d d^{\prime}=d d′=d, 总结在Table 1中。