论文提出了一个新颖的图节点隐义表示学习方法:DeepWalk。DeepWalk使用随机游走的方法获取图节点的局部信息,然后将随机游走的结果当做句子一样学习隐义表示。输入是图,输出是图节点的向量表示
random walks
随机游走的作用就是获取图中节点的局部邻接结构信息。
我们都知道,自然语言模型的目标就是求指定句子的最大似然估计。比如给定一个句子:
W
1
n
=
(
w
0
,
w
1
,
.
.
.
,
w
n
)
W_1^n=(w_0,w_1,...,w_n)
W1n=(w0,w1,...,wn)其中
w
i
w_i
wi为语料库中的词,语言模型需要得到
P
r
(
w
n
∣
w
0
,
w
1
,
.
.
.
,
w
n
−
1
)
Pr(w_n|w_0,w_1,...,w_{n-1})
Pr(wn∣w0,w1,...,wn−1)的最大情况。
随机游走则是通过短距离游走获取节点局部的结构信息,借鉴语言模型的最大似然求解
P
r
(
v
i
∣
(
v
1
,
v
2
,
.
.
.
,
v
i
−
1
)
)
(
式
1
)
Pr(v_i|(v_1,v_2,...,v_{i-1}))\space\space\space\space\space\space\space\space(式1)
Pr(vi∣(v1,v2,...,vi−1)) (式1)为了更好的表示节点的隐义信息,论文还提出了映射函数
Φ
\varPhi
Φ,该映射函数表达了节点之间连接关系,上(式1)可以表示为
P
r
(
v
i
∣
(
Φ
(
v
1
)
,
Φ
(
v
2
)
,
.
.
.
,
Φ
(
v
i
−
1
)
)
)
(
式
2
)
Pr(v_i|(\varPhi(v_1),\varPhi(v_2),...,\varPhi(v_{i-1})))\space\space\space\space\space\space\space\space(式2)
Pr(vi∣(Φ(v1),Φ(v2),...,Φ(vi−1))) (式2)根据词嵌入Skip-gram模型原理,对图节点表示建模优化:
min
Φ
−
l
o
g
P
r
(
{
v
i
−
w
,
.
.
.
,
v
i
−
1
,
v
i
+
1
,
.
.
.
,
v
i
+
w
}
∣
Φ
(
v
i
)
)
\min_{\varPhi}-logPr(\{v_{i-w},...,v_{i-1},v_{i+1},...,v_{i+w}\}|\varPhi(v_i))
Φmin−logPr({vi−w,...,vi−1,vi+1,...,vi+w}∣Φ(vi))语言模型的输入一般有两个:语料库和词库。DeepWalk算法将随机游走得到的节点局部信息作为语料库,将节点
V
V
V作为词库。
DeepWalk算法分两个过程:一是游走;二是更新。算法伪代码:
第六、七行为算法的核心,分别是在图中进行游走得到结果
W
v
i
W_{v_i}
Wvi,然后将得到的结果利用SkipGram算法(如下图)更新节点表示。
DeepWalk算法思想整体不算太难,主要是运用了语言模型逻辑将图节点通过对图进行游走形成语言模型训练所需要的语料库,而DeepWalk对图的游走策略是随机游走,从节点
v
i
v_i
vi到节点
v
j
v_j
vj的概率是均等的。