- 论文地址:http://de.arxiv.org/pdf/1503.03578
- 发表会议:WWW2015
动机
这篇论文的初衷是解决两个问题:
- 大规模图节点的表示学习
- 有向、有权图的节点表示学习
这篇论文首先指出了DeepWalk的缺点:1. 无法建模有权重的图;2.只捕获了图中节点的二阶相似性(second-order proximity )
定义1. 一阶相似性
通俗来讲,一阶相似性刻画了图本身的结构,即节点-边-节点,它是能直接从图中观察到的图的基本结构,是图的局部结构。利用一阶相似性来建模图中节点表示,那么两个节点相连则它们的表示相似,如果两个节点没有边相连,则它们的一阶相似性为0。比如在社交网络中,互为朋友的两个人倾向于有相似的兴趣。但是,由于网络中边经常是缺失的,所以只依靠观察到的边来建模节点的表示是远远不够的。这就需要二阶相似性。
定义2. 二阶相似性
二阶相似性不同于一阶相似性那么直观。它的基本思想是,两个节点拥有越多共同的邻居,那么它们越相似。如果不存在节点同时连着这两个节点,则这两个节点的二阶相似性为0。二阶相似性刻画了图的全局结构。
DeepWalk是一种基于dfs的算法,所以它着重于探索节点间的二阶相似性,即社区发现。缺少了对图中节点最直观的一阶相似性建模。针对这个缺陷,LINE的想法是结合一阶相似性和二阶相似性来求节点表示。
模型
- 一阶相似性建模
一阶相似性把边看成无向的。首先定义两个节点的联合概率:
p
1
(
v
i
,
v
j
)
=
1
1
+
e
x
p
(
−
u
⃗
i
T
⋅
u
⃗
j
)
p_1(v_i,v_j)=\frac{1}{1+exp(-\vec{u}_i^T·\vec{u}_j)}
p1(vi,vj)=1+exp(−uiT⋅uj)1
图中任意两个节点的概率都可以用上式来计算,这里
u
⃗
i
T
\vec{u}_i^T
uiT和
u
⃗
j
\vec{u}_j
uj就是我 们要学习的节点表示。为了进行有监督学习,需要知道两个节点出现的经验概率(Empirical probability),或者说,真实分布。这里利用图中边的权重分布做为两个节点的真实分布,即权重越大,说明两个节点的概率越大:
p
^
1
(
v
i
,
v
j
)
=
w
i
j
∑
(
i
,
j
)
∈
E
w
i
j
\widehat{p}_1(v_i,v_j)=\frac{w_{ij}}{\sum_{(i,j)\in E}w_{ij}}
p
1(vi,vj)=∑(i,j)∈Ewijwij
然后利用KL散度来刻画
p
1
p_1
p1和
p
^
1
\widehat{p}_1
p
1的差异:
其中d(·)为KL散度。然后将各项带入,并省略常数项,得到:
注:这里的化简很简单,这里省略化简步骤。下同。
这样就得到了一阶相似性下的目标函数,通过最小化 O 1 O_1 O1,就可以得到各节点基于一阶相似性的表示。
- 二阶相似性建模
由于二阶相似性刻画的是节点邻居间的相似性,所以首先刻画给定一个节点
v
i
v_i
vi,它的上下文(邻居)
v
j
v_j
vj的条件概率:
注:这里通常是利用softmax来最大化 u ⃗ i T ⋅ u ⃗ j \vec{u}_i^T·\vec{u}_j uiT⋅uj,即拟合相应标签1,最小化 u ⃗ k T ⋅ u ⃗ j ( k ! = j ) \vec{u}_k^T·\vec{u}_j(k!=j) ukT⋅uj(k!=j),即拟合相应标签0。所以softmax需要计算的参数量非常大,后面会介绍如何通过负采样来减少计算量。
同样为了有监督学习,定义
p
2
p_2
p2的经验分布(真实分布):
p
^
2
(
v
j
∣
v
i
)
=
w
i
j
∑
k
∈
N
(
i
)
w
i
k
\widehat{p}_2(v_j|v_i)=\frac{w_{ij}}{\sum_{k \in N(i)}w_{ik}}
p
2(vj∣vi)=∑k∈N(i)wikwij
这里
w
i
j
w_{ij}
wij同样是边的权重,
∑
k
∈
N
(
i
)
w
i
k
\sum_{k \in N(i)}w_{ik}
∑k∈N(i)wik是
v
i
v_i
vi的出边的权重和。其实就是对从
v
i
v_i
vi到它邻居的边的权重进行了归一化。
疑问:计算 p ^ 2 \widehat{p}_2 p 2时分母只计算了节点i的出边,而计算 p 2 p_2 p2时分母是在所有节点上进行的,两个概率分布感觉是不统一的,这样利用KL散度衡量差异会不会存在误差?我觉得这里有待商榷。
然后依旧利用KL散度衡量两个分布的差异,得到:
注意这里加了一个权重项
λ
i
\lambda_i
λi,这一项代表了节点
v
i
v_i
vi的重要程度,可以用节点的度或者PageRank等算法得到。这里采用
λ
i
=
∑
k
∈
N
(
i
)
w
i
k
\lambda_i=\sum_{k \in N(i)}w_{ik}
λi=∑k∈N(i)wik即节点的出边权重和。
然后把各项带入并省略常数项得到:
通过最小化
O
2
O_2
O2,可以得到各节点的基于二阶相似性的表示。
- 融合一阶相似性和二阶相似性
作者分开训练基于一阶相似性的节点表示和基于二阶相似性的节点表示,然后将两者拼接做为最终表示。
- 模型优化
4.1 负采样
前面也说到,建模二阶相似性时,利用softmax对
p
2
p_2
p2计算损失非常耗时。于是作者采用了负采样的方法。将
O
2
O_2
O2的
l
o
g
p
2
(
y
j
∣
v
i
)
log p_2(y_j|v_i)
logp2(yj∣vi)改为:
这里前面的一项为图中真实存在的从
v
i
v_i
vi到
v
j
v_j
vj的边,后面是采样的K个负样本(不一定存在),所以在向量相乘(
u
⃗
i
T
⋅
u
⃗
j
\vec{u}_i^T·\vec{u}_j
uiT⋅uj)前加了负号。通过这种负采样,就不用在图中所有节点上计算了,而只需采样
K
K
K个负样本节点,然后进行
K
+
1
K+1
K+1次二分类。
注:这个负采样公式和word2vec中的负采样一样,所以说LINE和DeepWalk其实都借鉴了自然语言处理中的单词预训练方式。
此外,在建模一阶相似性时,最小化 O 1 O_1 O1可能会导致 p 1 p_1 p1中的节点表示 u ⃗ i \vec{u}_i ui的各个分量趋近于无穷,从而产生无效解(trivial solution)。为了解决这一潜在问题,也可以对一阶相似性进行负采样,即把 p 1 p_1 p1的计算改成上面的公式。由于后面一项的存在(向量前加了负号),就能尽量避免节点表示的各分量为无穷的情况。
4.2 边采样
模型采用梯度下降法更新参数,在计算参数的导数时,有:
注意导数会有一个
w
i
j
w_{ij}
wij项,这个
w
i
j
w_{ij}
wij会影响每次参数更新的程度,当
w
i
j
w_{ij}
wij过大时,可能会造成梯度爆炸,过小时,又可能会造成梯度消失,当然可以通过设置合理的学习率来控制步长,但是需要根据
w
i
j
w_{ij}
wij的大小不断变换学习率,这在训练阶段是非常不方便的。所以针对这一问题,作者提出了 边采样(Edge Sampling) 算法。
边采样算法的目的就是为了去除
w
i
j
w_{ij}
wij对梯度的影响,但是针对有权图,如何才能统一边的权重,而又不丢失权重信息呢?作者创新性地想到利用采样的算法来解决这一问题。将所有的边看成二值边,即存在或不存在,然后利用边的权重做为概率,来对边进行采样,然后计算无边权重下的梯度。直观上讲,边的权重越大说明两个节点的关联性越高,即越能代表图的结构,所以以更大概率来抽取到此边来进行模型参数更新。为了使边的采样更有效率,作者采用了alias table方法,可以在O(1)时间内进行采样。这样一来,进行梯度更新时,不再是均匀采样图中各边(batch),而是按照权重的概率分布采样。
注:alias table方法是一种采样算法,在论文“Reducing the sampling complexity of topic models”中被提出。
4.3 其他技巧
- 对于度比较小的顶点,模型很难去捕捉它的二阶相似性,因为二阶相似性是依赖于邻居的表示的。一个简单的方法是”扩展“它的邻居,定义它的邻居可以是二阶邻居,即邻居的邻居,这样就增加了它的邻居数。对于这样的二阶邻居
v
j
v_j
vj,权重计算如下:
- 对于新加入的节点。只更新它自己的表示,保持其他节点的表示不变。目标函数中也只使用它周围的节点:
实验
作者在三种网络结构,语言网络(Language Network)、社会网络和引文网络中进行了实验。
语言网络中节点是单词,进行了两种任务:词语类比(Word Analogy)和文档分类。词语类比任务是仿照给定的一对单词,来补全另一对单词。比如给定(北京,中国),推断(?,法国),显然这里需要推断出“巴黎”。实验结果表明,在这类任务上,二阶相似性比一阶相似性更好,原因也很明显,词语类比任务考察的是单词的语义,而不是单词的共现。二阶相似性更能捕捉到词语间的语义相似性。对于文档分类任务,作者直接把文档中单词在图中的表示进行了平均,做为此文档的表示,然后进行分类。此外,作者还展示了在一阶和二阶相似度下,单词间的相似性:
可以看出,一阶相似性下,最相似的单词混合了句法和语义相似(syntactically and semantically);而二阶相似性主要捕捉了语义相似性。
社会网络主要进行了节点的多标签分类任务。由于社会网络比语言网络稀疏,所以作者采用了前面提到的扩展邻居的方法。
引文网络同样是稀疏图,而且是异质图。直接利用二阶相似性建模不如DeepWalk,采用了扩展邻居的方法可以使二阶相似性的效果超过DeepWalk。
从以上可以看出,二阶相似性对网络稀疏程度比较敏感。