CS224W Lecture3笔记

Node Embedding

lecture2中介绍的是一些传统的feature engineering,这节课所介绍的是更加高效、task-independent的node embedding,类似于word2vec。lecture中主要介绍了两种比较流行的方法:DeepWalk和Node2Vec

Encoder-Decoder Framework

Node Embedding遵循的还是一种Encoder-Decoder的模式。Encoder负责将原来的node映射到embedding space,decoder负责将node embedding映射到similarity score,而我们的目标是最小化这个score与原来node之间的similarity(待定义)来优化encoder中的参数。因此,Node Embedding中的Encoder-Decoder架构主要有四个部分:

  1. Encoder maps from nodes to embedding space
  2. Define a node similarity (i.e., a similarity function to measure similarity of nodes in the original network)
  3. Decoder maps from embedding space to similarity score
  4. Optimize the parameter to minimize: ∣ s i m i l a r i t y ( u , v )   −   D E C ( z u , z v ) ∣ |similarity(u,v)\ -\ DEC(z_u, z_v)| similarity(u,v)  DEC(zu,zv)

DeepWalk

一种embedding的方法是DeepWalk,DeepWalk的主要方法Random Walk。在Encoder-Decoder模式中我们提到我们需要定义original network中结点之间的similarity,而Random Walk就是一种度量结点之间相似度的方法。

Random Walk

随机游走的定义是:给定图 G G G,从某个结点 u u u出发,我们在每一步随机地选择邻居节点并移动,于是我们就能得到一个结点序列,我们就称这个序列叫做一个random walk。

我们认为在同一个random walk上的结点相似度是比较高的。random walk有两个优点:

  1. expressivity:随机游走通过随机选取neighbor来移动,能够比较好的捕获局部和更高阶的neighborhood信息,能够使得embedding的表达能力比较强。
  2. efficiency:我们不需要考虑图中任意两个结点,只需要考虑在random walk中同时出现的pair即可,极大的节省了计算的消耗。

Objective Function

DeepWalk目标函数的设计与SkipGram有相似之处。SkipGram是通过中心词来预测周围词,优化的目标的极大似然函数。而在DeepWalk中,我们令 p R ( v ∣ u ) p_{R}(v|u) pR(vu)表示从结点 u u u出发采用随机游走策略 R R R v v v u u u同时出现在 R R R上的概率。简言之,就是用当前结点 u u u来预测其邻居 N R ( u ) N_R(u) NR(u)。我们希望的是对于相似的两个结点 u 、 v u、v uv p ( v ∣ u ) p(v|u) p(vu)应该尽可能大,并且认为 N R ( u ) N_R(u) NR(u)中的结点相互之间是独立的(独立性假设),那么对于整张图的目标函数就是:
m a x i m i z e          ∑ u ∈ V p ( N R ( u ) ∣ u )   =   ∑ u ∈ V ∏ v ∈ N ( u ) p ( v ∣ u ) maximize\ \ \ \ \ \ \ \ \sum_{u \in V}p(N_R(u)|u)\ =\ \sum_{u \in V} \prod_{v \in N(u)} p(v|u) maximize        uVp(NR(u)u) = uVvN(u)p(vu)
我们使用极大似然估计,然后取反就得到:
m i n i m i z e          − ∑ u ∈ V ∑ v ∈ N ( u ) l o g ( p ( v ∣ u ) ) minimize\ \ \ \ \ \ \ \ -\sum_{u \in V}\sum_{v \in N(u)} log(p(v|u)) minimize        uVvN(u)log(p(vu))
下面来看如何计算 p ( v ∣ u ) p(v|u) p(vu)。我们令 z u z_u zu表示结点 u u u的embedding,用 z u ⋅ z v z_u \cdot z_v zuzv来计算embedding space中两个结点 u u u v v v的相似程度(余弦相似度)。我们说在同一个random walk中出现的两个结点可以被认为是相似程度比较大的,因此 p ( v ∣ u ) p(v|u) p(vu)也可以被看作是原图中 u 、 v u、v uv相似的概率,我们在Encoder-Decoder模式中提到我们的目标是最小化原图中相似度与embedding space中相似度之间的差距,于是 p ( v ∣ u ) p(v|u) p(vu)就可以用softmax来计算:
p ( v ∣ u )   =   e x p ( z u ⋅ z v ) ∑ v ′ ∈ N ( u ) e x p ( z u ⋅ z v ′ ) p(v|u)\ =\ \frac{exp(z_u \cdot z_v)}{\sum_{v' \in N(u)}{exp(z_u \cdot z_{v'})}} p(vu) = vN(u)exp(zuzv)exp(zuzv)
那么目标函数就可以改写为:
m i n i m i z e          − ∑ u ∈ V ∑ v ∈ N ( u ) l o g ( e x p ( z u ⋅ z v ) ∑ v ′ ∈ N ( u ) e x p ( z u ⋅ z v ′ ) ) minimize\ \ \ \ \ \ \ \ -\sum_{u \in V}\sum_{v \in N(u)} log(\frac{exp(z_u \cdot z_v)}{\sum_{v' \in N(u)}{exp(z_u \cdot z_{v'})}}) minimize        uVvN(u)log(vN(u)exp(zuzv)exp(zuzv))
也就是:
m i n i m i z e          − ∑ u ∈ V ∑ v ∈ N ( u ) z u ⋅ z v   −   l o g ( ∑ v ′ ∈ N ( u ) e x p ( z u ⋅ z v ′ ) ) minimize\ \ \ \ \ \ \ \ -\sum_{u \in V}\sum_{v \in N(u)} z_u \cdot z_v\ -\ log(\sum_{v' \in N(u)}{exp(z_u \cdot z_{v'})}) minimize        uVvN(u)zuzv  log(vN(u)exp(zuzv))
这是一个凸函数,因此我们可以采用梯度下降来进行优化

Negative Sampling

上面的式子有一个问题,就是后面的log归一化项计算成本比较高,复杂度是 O ( ∣ V ∣ ) O(|V|) O(V)的,因此需要进一步优化这个目标函数。那么这里遇到的问题和解决方案就都和SkipGram相同了,我们采取的策略是负采样。选取 k k k个负例,将softmax变成sigmoid,就可以把 l o g   p ( v ∣ u ) log\ p(v|u) log p(vu)改写为:
l o g   p ( v ∣ u )   ≈   l o g ( σ ( z u ⋅ z v ) )   −   ∑ i = 1 k l o g ( σ ( z u ⋅ z v i ) ) log\ p(v|u)\ \approx \ log(\sigma({z_u\cdot z_v}))\ -\ \sum_{i=1}^{k}log(\sigma{(z_u \cdot z_{v_i})}) log p(vu)  log(σ(zuzv))  i=1klog(σ(zuzvi))
这样一来我们计算的复杂度就可以从 O ( ∣ V ∣ 3 ) O(|V|^3) O(V3)降到 O ( k ∣ V ∣ 2 ) O(k|V|^2) O(kV2)

DeepWalk Procedure

下面来总结一下DeepWalk的整体流程:

  1. 对于图 G G G中的每个结点 u u u,跑一个fixed-length、unbiased的random walk
  2. 根据random walk统计每个结点 u u u的neighborhood N ( u ) N(u) N(u)
  3. 优化似然函数: − ∑ u ∈ V ∑ v ∈ N ( u ) l o g   p ( v ∣ u ) -\sum_{u \in V}\sum_{v \in N(u)} {log\ p(v|u)} uVvN(u)log p(vu)

Node2vec

DeepWalk采用的是fixed-length、unbiased的random walk,而node2vec在DeepWalk上做了改进,采用的是flexible、biased的random walk,以此来获得更好的neighborhood特征。

2-nd Order Biased Random Walk

对于图中任意结点 u u u,我们跑一个长度为 l l l的random walk,令 c i c_i ci表示该random walk中第 i i i个结点,于是
p ( c i + 1 = x ∣ c i = v )   =   { π v x Z       ( v , x ) ∈ E    0         o t h e r w i s e p(c_{i+1}=x|c_{i}=v)\ =\ \begin{cases} \frac{\pi_{vx}}{Z} \ \ \ \ \ (v,x) \in E \\ \ \ 0 \ \ \ \ \ \ \ otherwise \end{cases} p(ci+1=xci=v) = {Zπvx     (v,x)E  0       otherwise
这里 π v x \pi_{vx} πvx表示没有归一化的概率。如果是无偏的,那么 π v x   =   w v x   =   1 \pi_{vx}\ =\ w_{vx}\ =\ 1 πvx = wvx = 1,而node2vec是有偏的random walk,因此我们定义2-nd order biased random walk with 2 parameters p , q p, q p,q,令 π 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 \alpha_{pq} αpq就是权重,计算公式为:
α p q ( t , x )   =   { 1 / p        d t x = 0 1            d t x = 1 1 / q        d t x = 2 \alpha_{pq}(t,x)\ =\ \begin{cases} 1/p \ \ \ \ \ \ d_{tx}=0 \\ 1 \ \ \ \ \ \ \ \ \ \ d_{tx}=1 \\ 1/q \ \ \ \ \ \ d_{tx}=2 \end{cases} αpq(t,x) = 1/p      dtx=01          dtx=11/q      dtx=2
其中 d t x d_{tx} dtx表示结点 t t t和结点 x x x之间的最短路长度。我们发现突然又多了一个结点 t t t,其实这个结点 t t t是与 v v v相连的,可以看作是random walk中第 i − 1 i-1 i1个结点,不难看出我们每次是考虑random walk中连续的三个结点,这也就是为什么我们叫做second order(2-nd Markovian Chain)。下图说明了这里的有偏random walk的权重是怎么定义的

在这里插入图片描述

Return Parameter

我们称 p p p为return parameter。从上面的公式也能明白, d t x = 0 d_{tx}=0 dtx=0也就是我们从结点 v v v走回了结点 t t t。当 p p p比较大时,我们走回结点 t t t的概率比较小,当 p p p比较小时,我们有更大的概率走回 t t t

In-Out Parameter

我们称 q q q为in-out parameter,in和out分别对应着 q > 1 q \gt 1 q>1 q < 1 q \lt 1 q<1的情况。当 q > 1 q \gt 1 q>1 1 / q   <   1 1/q\ \lt\ 1 1/q < 1,我们自然会更倾向于走 d t x = 1 d_{tx}=1 dtx=1的结点,也就是上图中的 x 1 x_1 x1,这类结点的共性就是它们都是直接与结点 t t t相连的结点,我们可以通过BFS来获得;当 q < 1 q \lt 1 q<1 1 / q > 1 1/q \gt 1 1/q>1,我们会更倾向于走 d t x = 2 d_{tx}=2 dtx=2的结点,也就是上图中的 x 2 , x 3 x_2,x_3 x2,x3,这类结点的共性就是它们都是进一步远离结点 t t t,我们可以通过DFS来获得。

到这里就清楚了,我们的biased其实就是通过灵活的在BFS和DFS之间切换来实现的,BFS可以帮助我们捕获local信息,DFS可以帮助我们捕获global信息。如果想要BFS like,那就采用lower p,higher q;如果想要DFS like,那就采用higher p,lower q。

在这里插入图片描述

Node2vec Algorithm

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值