《Metapath2vec:Scalable Representation Learning for Heterogeneous Networks》—— 结构化深度网络特征表示
- 作者:Yuxiao Dong,etc
- 单位:Microsoft Research
- 发表会议及时间:KDD 2017
- 论文下载地址:https://dl.acm.org/doi/abs/10.1145/3097983.3098036
1、图嵌入背景介绍
1.1 什么是图嵌入
图嵌入是一种将图数据映射为低维稠密向量的过程,如下图。图嵌入需要捕捉到图的拓扑结构,顶点与顶点的关系,以及其他的信息 (如子图,连边等)。如果有更多的信息被表示出来,那么下游的任务将会获得更好的表现。在嵌入的过程中存在着一种共识:向量空间中保持连接的节点彼此靠近。
总的来说图嵌入技术大致可以分为两种:节点嵌入和图嵌入。当需要对节点进行分类,节点相似度预测,节点分布可视化时一般采用节点的嵌入;当需要在图级别(graph-level)
上进行预测或者整个图结构越策,需要将整个图表示为一个向量进行嵌入表示。
1.2 为什么要使用图嵌入
图是一种易于理解的表示形式,除此之外出于下面的原因需要对图进行嵌入表示:
- 在
graph
上直接进行机器学习具有一定的局限性。我们都知道图是由节点和边构成,这些向量关系一般只能使用数学,统计或者特定的子集进行表示,但是嵌入之后的向量空间具有更加灵活和丰富的计算方式; - 图嵌入能够压缩数据, 我们一般用邻接矩阵描述图中节点之间的连接。 连接矩阵的维度是
|V| x |V|
,其中|V|
是图中节点的个数。矩阵中的每一列和每一行都代表一个节点。矩阵中的非零值表示两个节点已连接。将邻接矩阵用用大型图的特征空间几乎是不可能的。一个具有1M
节点和1Mx1M
的邻接矩阵的图该怎么表示和计算呢?但是嵌入可以看做是一种压缩技术,能够起到降维的作用; - 向量计算比直接在图上操作更加的简单、快捷;
但是图嵌入也需要满足一定的要求:
- 属性选择:确保嵌入能够很好地描述图的属性,即需要表示图拓扑,节点连接和节点邻域。这样后期的预测或可视化才能获得较好的表现。
- 可扩展性:大多数真实网络都很大,包含了大量节点和边。嵌入方法应具有可扩展性,能够处理大型图。定义一个可扩展的模型具有挑战性,尤其是当该模型旨在保持网络的全局属性时。网络的大小不应降低嵌入过程的速度,一个好的嵌入方法不仅在小图上高效嵌入,同时也需要在大图上能够高效地嵌入。
- 嵌入的维度:实际嵌入时很难找到表示的最佳维数,维度越大能够保留的信息越多,但是通常有更高的时间和空间复杂度。较低的维度虽然时间、空间复杂度低,但无疑会损失很多图中原有的信息。
2、论文背景介绍
2.1 同质网络 & 异质网络
- 同质(图)网络:图的节点类型是唯一的,图的边类型是唯一的;
- 异质(图)网络:图的节点类型和边的类型是有多种类型的;
在本篇论文提出之前。绝大部分论文研究图嵌入都集中在同质网络中,同质网络比异质网络简单,同质网络中节点类型唯一,边的类型也唯一。但是这种办法并不使用与一般的社交网络或者推荐系统等场景中,因为这些网络的本质上是异质的网络结构,网络中的节点类型和边类型是多种多样的,因此异质网络是一个很具有研究意义的场景。但是这也导致异质网络表示学习的挑战在于怎么有效表示网络中不同类型的节点和不同类型的边关系;
异质图的意思是每个点的类型是不相同的,上图中的第一幅图可以理解为异质图,图中的点有多种类型,有建筑物,有时间,有地点等,这幅图有点像NLP中的知识图谱,但是这个图没有知识图谱的图复杂;
上图中的第二幅图和论文的研究内容很像,这个图称为academic graph,这个图中有三种点类型,第一种类型的点为author,第二种类型点为paper,第三种类型点为venue;author和paper的连线表示论文paper的作者为该author;paper和venue的连线表示paper发表在该venue会议上,可以发现不同边的意义也不同;
上图中的第三个图为二部图,这个图中有两种类型的点,一种为user,一种为item,这种图中user之间没有连线,item之间也没有连线,在user和item之间有连线,这种图称为二部图;
总结一下各种图
- Homogenous为同质图,也就是简单图,各点之间的类型是一样的,边的类型也是一样的,所以点和边的种类都为1;
- Bipartite graph中点的类型有两种,边的类型只有一种,这种图中相同点之间是没有连线的,只有相异的点之间有连线;
- k-partite graph是Bipartite graph的延伸,在k-partite graph中有k种不同类型的点;
- Signed network中边的类型有两种,分别为正号边和负号边,正号表示两个点之间是同盟关系,负号表示两个点之间是敌对关系;
- Labeled graph、k-star graph暂不做分析;
2.2 异质网络与Metapath2vec
在传统的图嵌入(Graph embedding)
模型研究中将异质网络中不同类型的节点和边看做同种类型的节点和边,这导致异质网络中不同类型的节点和不同类型的边没有区分度,不能包含有效的类别信息,因此这些传统的图嵌入(Graph embedding)
模型不能有效地解决异构网络的学习问题;
异质网络表示学习的目的是同时学习多种类型顶点的低维 embedding
,本篇论文首先形式化异质网络的表示学习问题,定义了异构网络,基于meta-path
随机游走规则和word2vec
算法中的skip-gram
模型提出了 metapath2vec
框架来解决异质网络的表示学习问题,metapath2vec
的目标是最大化的保留给定异质网络的结构关系和语义关系;同时根据网络中存在不同类型的节点,metapath2vec ++
在 metapath2vec
的基础上使用了一种基于异质负采样的方法,对softmax
函数进行改进提出了扩展的 metapath2vec ++
框架来解决异质网络的表示学习问题。
论文进行的大量实验表明,metapath2vec
和 metapath2vec ++
不仅能够超越各种异质网络挖掘任务的 SOA
的 embedding
模型,还能够识别不同顶点之间的结构相关性和语义相关性。
3、Metapath2vec模型结构
3.1 异质网络的定义
论文中定义异质网络是一个图,其表示形式为:
G
=
(
V
,
E
,
T
)
G=(V,E,T)
G=(V,E,T)
图中的每个节点和节点之间的边分别关联一个映射函数: ϕ ( v ) : V → T V ϕ ( e ) : E → T E \phi(v): V \rightarrow T_{V} \quad \phi(e): E \rightarrow T_{E} ϕ(v):V→TVϕ(e):E→TE公式中的 T V T_V TV表示节点类型,公式中的 T E T_E TE表示边的类型;
同时,论文中定义了: ∣ T V ∣ + ∣ T E ∣ > 2 \left|T_{V}\right|+\left|T_{E}\right|>2 ∣TV∣+∣TE∣>2
在同质网络中默认节点类型和边的类型相同,所以在同质网路网络中 T V = 1 T_V=1 TV=1, T E = 1 T_E=1 TE=1,可以得到: ∣ T V ∣ + ∣ T E ∣ = 2 \left|T_{V}\right|+\left|T_{E}\right|=2 ∣TV∣+∣TE∣=2
在异质网络中,因为节点的类型或者边的类型肯定不唯一(如果唯一则是同质网络),所以可以得到上述公式: ∣ T V ∣ + ∣ T E ∣ > 2 \left|T_{V}\right|+\left|T_{E}\right|>2 ∣TV∣+∣TE∣>2
3.2 异质网络的学习目标和挑战
给定一个异质网络G
,异质网络的Embedding
目标是学习一个d
维的潜在表示
X
∈
R
d
×
∣
V
∣
\mathbf{X} \in \mathbb{R}^{d \times|V|}
X∈Rd×∣V∣,其中
d
≪
∣
V
∣
d \ll|V|
d≪∣V∣,使得该表示能够捕获网络的结构关系以及语义关系。任务的输出是一个低维矩阵
X
X
X,其第v
列对应一个d
维向量 ,即顶点的embedding
向量 。尽管图嵌入矩阵
X
X
X中存在不同类型的节点,但是各种类型节点的embedding
都被映射到相同的潜在空间中,虽然不同类型之间的嵌入维度相同,但是其不同节点之间的信息已经内含到嵌入向量中;学到的节点 embedding
矩阵可以应用于各种异质网络挖掘任务,如顶点分类、聚类、相似性查找等。
异质网络的表示学习问题的挑战来自于网络异质性。网络embedding
模型的基本假设是:在embedding
空间保持顶点及其邻居(上下文)之间的邻近性。但是在异质网络中,如何定义和建模 “顶点 - 邻居” 的概念?另外模型如何优化,其中该模型有效维护多种类型顶点和边的结构关系和语义关系?
3.3 Metapath2vec
Metapath2vec整体上可可分为两部分,一是meta-path随机游走,二是异质 skip-gram
模型 Heterogeneous Skip-Gram
,下面简单对这两个算法进行分析。
3.3.1 随机游走 & meta-path随机游走
3.3.1.1 随机游走
DeepWalk算法基于随机游走(random walk
)产生一些随机游走路径(random walk paths
),经过多次采样,可能得到大量的随机路径,这些路径可以类比于NLP
中的句子。在NLP
领域中应用word2vec
模型和大量语料可以训练得到每个词的词嵌入向量,同理,当我们得到大量同质网络的随机游走路径数据,应用word2vec
模型可以训练得到每个结点的嵌入向量,也就是可以得到上图中最后的输出:节点嵌入矩阵
X
X
X。
模型的输入为 G = ( V , E ) G=(V,E) G=(V,E),输出为每个点的d维向量表示;
同质网络中的随机游走是简单的随机游走,对于当前节点,其下一步可以选择与其相邻的任一邻居节点,比如对于某一节点,其邻居节点有5个,则其下一步访问其任一邻居的概率相等吗,都为 1 / 5 1/5 1/5。
3.3.1.2 meta-path随机游走
本论文提出了一个通用的异质网络embedding
学习框架metapath2vec
,其目标是在考虑多种类型的顶点和边的情况下,最大化网络的概率,并获得节点的嵌入矩阵表示。
metapath2vec和传统的deepwalk算法的不同点在于,在生成路径数据的信息不再采用随机游走,为什么在异质网络中不能使用简单的随机游走呢?这里我们简单想象一下在异质网络中采用随机游走会发生什么问题:
在异质网络中引入随机游走,在随机游走的第i
步,我们定义转移概率
p
(
v
<
i
+
1
>
∣
v
<
i
>
)
p\left(v^{<i+1>} \mid v^{<i>}\right)
p(v<i+1>∣v<i>)为:在顶点
v
<
i
>
v^{<i>}
v<i>的邻域上的归一化概率分布,其中忽略顶点类型。然后将生成的游走序列作为 node2vec
和 DeepWalk
的输入。前人已经证明异质随机游走偏向于高度可见的顶点类型(即那些在路径中频繁出现的顶点类型),以及中心顶点(即那些出现频繁出现在关键路径中的顶点)。
这里我们也可以举个例子,给定如下的异质网络:
该异质网络中存在四种不同的节点,其中Author
的节点数量较大,当采用随机游走时,得到的路径更多地采集到Author
的信息,这样会导致节点数量少的节点信息更难收集到。
因此在metapath2vec
中抛弃了随机游走,提出了meta-path
随机游走,meta-path
就是人为地定义可行的游走路径形式,如下图中假设了三种可能的随机游走类型:APA
、APVPA
、OAPVPAO
;在APA
中,当当前节点为A中的某一个节点时,下一个结点为P中与其存在边的某一个结点,这是人为定义的随机游走规则;
基于 meta-path
的随机游走,生成能够捕获不同类型顶点之间的语义相关性和结构相关性的游走序列,从而有助于我们将异质网络结构转化为异质 skip-gram
。
形式化描述meta-path随机游走
一个 meta-path
范式 定义为一个路径:
V
1
⟶
R
1
V
2
⟶
R
2
⋯
V
t
⟶
R
t
V
t
+
1
⟶
R
t
+
1
⋯
⟶
R
l
−
1
V
l
V_{1} \stackrel{R_{1}}{\longrightarrow} V_{2} \stackrel{R_{2}}{\longrightarrow} \cdots V_{t} \stackrel{R_{t}}{\longrightarrow} V_{t+1} \stackrel{R_{t+1}}{\longrightarrow} \cdots \stackrel{R_{l-1}}{\longrightarrow} V_{l}
V1⟶R1V2⟶R2⋯Vt⟶RtVt+1⟶Rt+1⋯⟶Rl−1Vl
公式中
R
=
R
1
∘
R
2
∘
⋯
∘
R
l
−
1
R=R_{1} \circ R_{2} \circ \cdots \circ R_{l-1}
R=R1∘R2∘⋯∘Rl−1定义顶点类型
V
1
,
⋯
⋅
V
l
V_{1}, \cdots \cdot V_{l}
V1,⋯⋅Vl之间的一个组合关系。以下图为例:meta-path:APA
代表两个作者 A 在同一论文 P 上的 co-author 关系;meta-path:APVPA
代表两个作者 A 在同一个会议 V 的不同论文 P 上的 co-venue 关系。
这里我们展示如何利用 meta-path
来指导异质 random walker
:
给定一个异质网络
G
=
(
V
,
E
,
T
)
G=(V,E,T)
G=(V,E,T)以及一个 meta-path 范式
P
P
P ,在随机游走的第
i
i
i步的转移概率定义为:
p
(
v
<
i
+
1
>
∣
v
t
<
i
>
,
P
)
=
{
1
∣
N
t
+
1
(
v
t
⟨
⟩
)
∣
,
(
v
⟨
i
+
1
>
,
v
t
<
i
>
)
∈
E
,
ϕ
(
v
<
i
+
1
>
)
=
t
+
1
0
,
(
v
<
i
+
1
>
,
v
t
<
i
>
)
∈
E
,
ϕ
(
v
<
i
+
1
>
)
≠
t
+
1
0
,
(
v
<
i
+
1
>
,
v
t
<
i
>
)
∉
E
p\left(v^{<i+1>} \mid v_{t}^{<i>}, \mathcal{P}\right)=\left\{\begin{array}{ll} \frac{1}{\left|\mathcal{N}_{t+1}\left(v_{t}^{\langle\rangle}\right)\right|}, & \left(v^{\langle i+1>}, v_{t}^{<i>}\right) \in E, \phi\left(v^{<i+1>}\right)=t+1 \\ 0, & \left(v^{<i+1>}, v_{t}^{<i>}\right) \in E, \phi\left(v^{<i+1>}\right) \neq t+1 \\ 0, & \left(v^{<i+1>}, v_{t}^{<i>}\right) \notin E \end{array}\right.
p(v<i+1>∣vt<i>,P)=⎩⎪⎨⎪⎧∣∣Nt+1(vt⟨⟩)∣∣1,0,0,(v⟨i+1>,vt<i>)∈E,ϕ(v<i+1>)=t+1(v<i+1>,vt<i>)∈E,ϕ(v<i+1>)=t+1(v<i+1>,vt<i>)∈/E公式中的
v
t
<
i
>
∈
V
t
v_t^{<i>}\in V_{t}
vt<i>∈Vt表示第
i
i
i步的顶点,
N
t
+
1
(
v
t
<
i
>
)
\mathcal{N}_{t+1}\left(v_{t}^{<i>}\right)
Nt+1(vt<i>)表示顶点
v
t
<
i
>
v_t^{<i>}
vt<i>的类型为
V
t
+
1
V_{t+1}
Vt+1的邻居节点;
- 由于 v t < i + 1 > ∈ V t + 1 v_t^{<i+1>}\in V_{t+1} vt<i+1>∈Vt+1,这意味着随机游走必须根据预定义的meta-path规则来进行随机游走;
- 通常meta-path都是对称的,如上图所示,这里假设 V 1 = V l V_1=V_l V1=Vl,因此有: p ( v < i + 1 > ∣ v l < i > ) = p ( v < i + 1 > ∣ v 1 < i > ) p\left(v^{<i+1>} \mid v_{l}^{<i>}\right)=p\left(v^{<i+1>} \mid v_{1}^{<i>}\right) p(v<i+1>∣vl<i>)=p(v<i+1>∣v1<i>)
- 基于
meta-path
的随机游走策略可以确保不同类型节点之间的语义关系可以正确的合并到skip-gram
中; - 如下图所示,假设上一个节点为CMU,当前节点为
a
4
a_4
a4,在传统的随机游走过程中,下一个节点可能是
a
4
a_4
a4周围的顶点
{
a
2
,
a
3
,
a
5
,
p
2
,
p
3
,
C
M
U
}
\{a_2,a_3,a_5,p_2,p_3,CMU\}
{a2,a3,a5,p2,p3,CMU},但是在
meta-path
的范式OAPVPAO中
,下一个节点倾向于Paper
中的节点 { p 2 , p 3 } \{p_2,p_3\} {p2,p3},从而保持路径的语义。
3.3.2 word2vec模型 & 异质skip-gram模型
在同质网络中根据随机游走得到的路径数据,然后使用word2vec
模型训练就能得到节点的embedding
矩阵,在异质网络中,考虑到不同节点的类型不同,基于word2vec
提出异质skip-gram
模型,下面我们简单分析一下这两种算法:
3.3.2.1 word2vec模型
给定同质网络 G = ( V , E ) G=(V,E) G=(V,E),模型的目标是根据局部结构来最大化网络概率: arg max θ ∏ v ∈ V ∏ c ∈ N ( v ) p ( c ∣ v ; θ ) \arg \max _{\theta} \prod_{v \in V} \prod_{c \in \mathcal{N}(v)} p(c \mid v ; \theta) argθmaxv∈V∏c∈N(v)∏p(c∣v;θ)其中 N ( v ) \mathcal{N}(v) N(v)为网络 G G G中顶点 v v v的邻域,它可以由不同的方式定义,比如为 v v v的直接相连的顶点集合;
p ( c ∣ v , θ ) p(c|v,\theta) p(c∣v,θ)定义了给定顶点 v v v的条件下,上下文 c c c出现的条件概率: p ( c ∣ v ; θ ) = e X c ⋅ X v ∑ u ∈ V e X u ⋅ X v p\left(c \mid v ; \theta\right)=\frac{e^{X_{c} \cdot X_{v}}}{\sum_{u \in V} e^{X_{u} \cdot X_{v}}} p(c∣v;θ)=∑u∈VeXu⋅XveXc⋅Xv这里和NLP中Word2vec的训练过程类似,具体原理可以参考NLP中的原理分析;
3.3.2.2 异质skip-gram模型
在metapath2vec
中,给定异质网络
G
=
(
V
,
E
,
T
)
G=(V,E,T)
G=(V,E,T),其中
T
V
T_V
TV表示节点类型,
T
E
T_E
TE表示边的类型,
∣
T
V
∣
>
1
|T_V|>1
∣TV∣>1。论文通过最大化给定节点
v
v
v的条件下,异质上下文
N
t
(
v
)
,
t
∈
T
V
\mathcal{N}_{t}(v), t \in T_{V}
Nt(v),t∈TV的条件概率,使得
s
k
i
p
−
g
r
a
m
skip-gram
skip−gram能够学习异质网络
G
G
G的有效节点的向量表示:
arg
max
θ
∑
v
∈
V
∑
t
∈
T
V
∑
c
t
∈
N
t
(
v
)
log
p
(
c
t
∣
v
;
θ
)
\arg \max _{\theta} \sum_{v \in V} \sum_{t \in T_{V}} \sum_{c_{t} \in N_{t}(v)} \log p\left(c_{t} \mid v ; \theta\right)
argθmaxv∈V∑t∈TV∑ct∈Nt(v)∑logp(ct∣v;θ)
p
(
c
t
∣
v
;
θ
)
=
e
X
c
t
⋅
X
v
∑
u
∈
V
e
X
u
⋅
X
v
p\left(c_{t} \mid v ; \theta\right)=\frac{e^{X_{c_{t}} \cdot X_{v}}}{\sum_{u \in V} e^{X_{u} \cdot X_{v}}}
p(ct∣v;θ)=∑u∈VeXu⋅XveXct⋅Xv公式中的
N
t
(
v
)
\mathcal{N}_{t}(v)
Nt(v)表示顶点
v
v
v的第
t
t
t种类型的邻域顶点;
为了有效优化目标函数,提高训练效率,Milkolov
等人引入了负采样,它从网络中随机采样不属于邻域节点的一组节点作为一组训练数据,并建立二分类模型来代替softmax
的作用;在metapath2vec
中也采用了相同的负采样,给定一个负采样数据集
M
M
M,则定义:
log
p
(
c
t
∣
v
;
θ
)
=
log
σ
(
x
→
c
t
⋅
x
→
v
)
+
∑
m
=
1
M
E
u
(
m
)
∼
P
(
u
)
[
log
σ
(
−
x
→
u
(
m
)
⋅
x
→
v
)
]
\log p\left(c_{t} \mid v ; \theta\right)=\log \sigma\left(\overrightarrow{\mathbf{x}}_{c_{t}} \cdot \overrightarrow{\mathbf{x}}_{v}\right)+\sum_{m=1}^{M} \mathbb{E}_{u^{(m)} \sim P(u)}\left[\log \sigma\left(-\overrightarrow{\mathbf{x}}_{u^{(m)}} \cdot \overrightarrow{\mathbf{x}}_{v}\right)\right]
logp(ct∣v;θ)=logσ(xct⋅xv)+m=1∑MEu(m)∼P(u)[logσ(−xu(m)⋅xv)]公式中的
σ
(
x
)
=
1
1
+
e
x
p
(
−
x
)
\sigma(x)=\frac{1}{1+exp(-x)}
σ(x)=1+exp(−x)1,负采样部分的
P
(
u
)
P(u)
P(u)为预定义的顶点分布函数,metapath2vec根据该分布采样M个负样本顶点
u
(
m
)
u^{(m)}
u(m),metapath2vec
无视顶点类型来构建顶点的频率分布;
在训练的时候,我们希望属于当前节点邻域的节点出现的概率最大,同时负采样得到的不属于当前节点邻域的随机采样节点不出现的概率最大,这样就得到了上面的负采样计算公式;
metapath2vec
的整体框架如下所示:
其模型框架和node2vec&DeepWalk
是相似的,主要不同在于metapath2vec
是运用在异质网络中,使用基于meta
的随机游走和异质skip-gram
模型;
3.4 Metapath2vec ++
我们现在来看一下metapath2vec
中可能存在的问题,在上面介绍了metapath2vec的训练过程:
arg
max
θ
∑
v
∈
V
∑
t
∈
T
V
∑
c
t
∈
N
t
(
v
)
log
p
(
c
t
∣
v
;
θ
)
\arg \max _{\theta} \sum_{v \in V} \sum_{t \in T_{V}} \sum_{c_{t} \in N_{t}(v)} \log p\left(c_{t} \mid v ; \theta\right)
argθmaxv∈V∑t∈TV∑ct∈Nt(v)∑logp(ct∣v;θ)
p
(
c
t
∣
v
;
θ
)
=
e
X
c
t
⋅
X
v
∑
u
∈
V
e
X
u
⋅
X
v
p\left(c_{t} \mid v ; \theta\right)=\frac{e^{X_{c_{t}} \cdot X_{v}}}{\sum_{u \in V} e^{X_{u} \cdot X_{v}}}
p(ct∣v;θ)=∑u∈VeXu⋅XveXct⋅Xv从公式中可以看到在计算的时候metapath2vec
根据上下文节点的类型来区分节点
v
v
v的上下文节点,但是在进行softmax
变换的时候没有统计节点类型信息。即在给定顶点
v
v
v的条件下,为了推断来自邻域
N
t
(
v
)
\mathcal{N}_{t}(v)
Nt(v)中上下文的
c
t
c_t
ct的节点类型时,metapath2ve
c实际上采用了所有类型的负样本,包括相同类型
t
t
t的负样本,以及其他类别的负样本。
基于metapath2vec
存在的问题,该论文提出了metapath2vec++框架,该方法采用异质负采样策略,在该方法中,softmax
根据上下文节点
c
t
c_t
ct的类型进行归一化,即
p
(
c
t
∣
v
;
θ
)
p(c_t|v;\theta)
p(ct∣v;θ)根据指定的顶点类型
t
t
t来调整:
p
(
c
t
∣
v
;
θ
)
=
exp
(
x
→
c
t
⋅
x
→
v
)
∑
u
t
∈
V
t
exp
(
x
→
u
t
⋅
x
→
v
)
p\left(c_{t} \mid v ; \theta\right)=\frac{\exp \left(\overrightarrow{\mathbf{x}}_{c_{t}} \cdot \overrightarrow{\mathbf{x}}_{v}\right)}{\sum_{u_{t} \in V_{t}} \exp \left(\overrightarrow{\mathbf{x}}_{u_{t}} \cdot \overrightarrow{\mathbf{x}}_{v}\right)}
p(ct∣v;θ)=∑ut∈Vtexp(xut⋅xv)exp(xct⋅xv)公式中的
V
t
V_t
Vt为类型为
t
t
t的顶点集合;
因为在metapath2vec
中修改了softmax
的计算方法,因此在metapath2vec
中其输出层也发生了改变:
如上图,metapath2vec++
会为skip-gram
模型输出层中的每种邻域类型定义一组softmax
分布,我们可以看出metapath2vec++
与metapath2vec
、node2vec
、DeepWalk
的输出层的区别,如下图:
在上图中,metapath2vec
、node2vec
、DeepWalk
中,输出softmax
分布的维度等于网络的顶点数量
∣
V
∣
|V|
∣V∣,但是在metapath2vec++
中,输出softmax
分布的维度由类型为
t
t
t的节点数量
∣
V
t
∣
|V_t|
∣Vt∣决定;
对于softmax
做出的修改,在metapath2vec
中也对负采样做出了修改,metapath2vec
在负采样的过程中同样根据邻居节点
c
t
c_t
ct的类型进行调整,因此可以得到改进后的负采样函数为:
L
=
log
σ
(
x
→
c
t
⋅
x
→
v
)
+
∑
m
=
1
M
E
u
t
(
m
)
∈
P
t
(
u
t
)
[
log
σ
(
−
x
→
u
t
(
m
)
⋅
x
→
v
)
]
\mathcal{L}=\log \sigma\left(\overrightarrow{\mathbf{x}}_{c_{t}} \cdot \overrightarrow{\mathbf{x}}_{v}\right)+\sum_{m=1}^{M} \mathbb{E}_{u_{t}^{(m)} \in P_{t}\left(u_{t}\right)}\left[\log \sigma\left(-\overrightarrow{\mathbf{x}}_{u_{t}^{(m)}} \cdot \overrightarrow{\mathbf{x}}_{v}\right)\right]
L=logσ(xct⋅xv)+m=1∑MEut(m)∈Pt(ut)[logσ(−xut(m)⋅xv)]公式中的
p
t
(
u
t
)
p_t(u_t)
pt(ut)为类型为
t
t
t的顶点的分布函数;
论文中给出了上述函数的梯度计算公式: ∂ L ∂ x → u t ( m ) = σ ( x → u t ( m ) ⋅ x → v − I c t [ u t ( m ) ] ) × x → v \frac{\partial \mathcal{L}}{\partial \overrightarrow{\mathbf{x}}_{u_{t}^{(m)}}}=\sigma\left(\overrightarrow{\mathbf{x}}_{u_{t}^{(m)}} \cdot \overrightarrow{\mathbf{x}}_{v}-\mathbb{I}_{c_{t}}\left[u_{t}^{(m)}\right]\right) \times \overrightarrow{\mathbf{x}}_{v} ∂xut(m)∂L=σ(xut(m)⋅xv−Ict[ut(m)])×xv ∂ L ∂ x → v = ∑ m = 0 M σ ( x → u t ( m ) ⋅ x → v − I c t [ u t ( m ) ] ) × x → u t ( m ) \frac{\partial \mathcal{L}}{\partial \overrightarrow{\mathbf{x}}_{v}}=\sum_{m=0}^{M} \sigma\left(\overrightarrow{\mathbf{x}}_{u_{t}^{(m)}} \cdot \overrightarrow{\mathbf{x}}_{v}-\mathbb{I}_{c_{t}}\left[u_{t}^{(m)}\right]\right) \times \overrightarrow{\mathbf{x}}_{u_{t}^{(m)}} ∂xv∂L=m=0∑Mσ(xut(m)⋅xv−Ict[ut(m)])×xut(m)公式中的 I c t [ u t ( m ) ] \mathbb{I}_{c_{t}}\left[u_{t}^{(m)}\right] Ict[ut(m)]为一个示性函数,用于指示 u t ( m ) u_t^{(m)} ut(m)是否为邻域上下文节点 c t c_t ct,并且当 m = 0 m=0 m=0时 u t ( m ) = c t u_t^{(m)}=c_t ut(m)=ct,最终可以通过随机梯度下降算法来对模型进行优化求解。
简单分析metapath2vec++
与metapath2vec
的区别主要在于针对不同类别的节点进行细分计算,不再是针对整个节点集合计算softmax
和进行负采样;
4、metapath2vec伪代码
-
输入:
- 异构网络 G = ( V , E , T ) G=(V,E,T) G=(V,E,T)
- meta-path的随机游走策略
- 每个节点作为游走序列起点的次数 w w w
- 每条随机游走序列的长度 l l l
- 节点embedding的嵌入维度 d d d
- 节点的邻域大小(窗口大小)
-
输出:
- 节点的嵌入矩阵X, X ∈ R d × ∣ V ∣ \mathbf{X} \in \mathbb{R}^{d \times|V|} X∈Rd×∣V∣
-
算法步骤:
-
初始化节点的嵌入矩阵 X X X;
-
迭代 w w w次,迭代步骤为:
遍历异构图 V V V中的每个节点 v v v,执行以下两个函数:
M P = M e t a P a t h R a n d o m W a l k ( G , P , v , l ) MP = MetaPathRandomWalk(G,P,v,l) MP=MetaPathRandomWalk(G,P,v,l) X = H e t e r o g e n e o u S k i p G r a m ( X , k , M P ) X = HeterogeneouSkipGram(X,k,MP) X=HeterogeneouSkipGram(X,k,MP) -
返回 X X X
-
-
MetaPathRandomWalk算法:
- 输入:
- 异构网络 G = ( V , E , T ) G=(V,E,T) G=(V,E,T)
- 一个meta-path随机游走策略
- 当前节点 v v v
- 每条随机游走序列的长度 l l l
- 输出:一条meta-path随机游走序列
- 算法步骤:
- 初始化: M P [ 1 ] = v MP[1] = v MP[1]=v
- 迭代
i
=
1
,
2
,
.
.
.
,
l
−
1
i=1,2,...,l-1
i=1,2,...,l−1,迭代过程为:
根据 p ( v < i + 1 > ∣ v t < i > , P ) p\left(v^{<i+1>} \mid v_{t}^{<i>}, \mathcal{P}\right) p(v<i+1>∣vt<i>,P) 采样节点 u u u,并记录 M P [ i + 1 ] = u MP[i+1] = u MP[i+1]=u - 返回MP
- 输入:
-
HeterogeneousSkipGram算法:
- 输入:
- 当前的嵌入矩阵 X X X
- 邻域大小(窗口大小) k k k
- 随机游走序列 M P MP MP以及它的长度 l l l
- 输出:更新后的嵌入矩阵 X X X
- 算法步骤:
- 迭代
i
=
1
,
2
,
.
.
.
,
l
i=1,2,...,l
i=1,2,...,l,迭代步骤为:
取出当前顶点 v = M P [ i ] v=MP[i] v=MP[i],对左侧的 k k k个顶点、右侧的 k k k个顶点共计 2 k 2k 2k个顶点进行更新: c t = M P [ j ] c_t = MP[j] ct=MP[j] X n e w = X old − η ∂ L ∂ X \mathbf{X}^{n e w}=\mathbf{X}^{\text {old }}-\eta \frac{\partial \mathcal{L}}{\partial \mathbf{X}} Xnew=Xold −η∂X∂L 公式中的 η \eta η为学习率;
- 迭代
i
=
1
,
2
,
.
.
.
,
l
i=1,2,...,l
i=1,2,...,l,迭代步骤为:
- 输入:
5、实验结果
该论文进行了三种异质网络挖掘任务,包括顶点分类任务、顶点聚类任务、顶点相似性查找问题,并且通过tensorflow的embedding可视化来观察异质网络中学习的节点嵌入向量。
5.1 实验数据集 —— 两个公开的异构网络数据集
-
Aminer Computer Science(CS)dataset
包含2016年之前举行的3883个计算机科学venue(包含会议conference和期刊journal)的9323739名科学家,以及3194405篇论文。该论文使用该数据集构建了一个异构网络,该网络包含三种类型的顶点:作者Author、论文Paper、会议Venue;
-
Database and Information Systems(DBIS) dataset:包含464个会议,以及其中top-5000个作者,以及对应的72902篇论文;
5.2 基准模型
- DeepWalk/node2vec :在相同的随机游走序列输入下,作者发现 DeepWalk 的hierarchical softmax 和 p = 1 , q = 1 p=1,q=1 p=1,q=1的node2vec的负采样之间并未产生显著差异,因此论文中采用 p = 1 , q = 1 p=1,q=1 p=1,q=1的node2vec ;
- LINE:论文使用同时采用了1 阶邻近度和 2 阶邻近度的 LINE 模型;
- PTE:构建了三个异质二部图 A-A, A-V, V-V ,并将其作为无监督 embedding 学习方法的约束;
- 谱聚类Spectral Clustering/图的因子分解 Graph Factorization:因为早前的研究表明 DeepWalk 和 LINE 的性能超越了它们,因此这里并不考虑这两种方法。
5.3 参数配置
对于所有模型,使用相同的参数:
- 每个顶点开始的随机游走序列数量 w = 1000 w=1000 w=1000
- 每个随机游走序列长度 l = 100 l=100 l=100
- 隐向量维度 d = 128 d=128 d=128,在LINE模型中,一阶embedding和二阶embedding的维度都是128
- 邻域尺寸 k = 7 k=7 k=7
- 负采样大小 M = 5 M=5 M=5
- 对于 metapath2vec/metapath2vec ++ ,需要制定meta-path随机游走范式来指导随机游走的生成,作者调查了大多数基于meta-path的工作,发现异质学术网络中最常用和最有效的meta-path范式是APA和APVPA;论文的实验表明,meta-path范式APVPA产生的节点embedding可以泛化到各种异质学术网络的挖掘任务中;
- 在参数敏感性实验中,作者对参数中的一个进行变化,同时固定其它参数来观测metapath2vec/metapath2vec ++的效果;
5.4 顶点分类实验结果
-
作者使用第三方的 label 来确定每个顶点的类别。
首先将 Google Scholar 中的八个会议的研究类别与 AMiner 数据中的会议进行匹配:Computational Linguistics, Computer Graphics, Computer Networks & Wireless Communication, Computer Vision & Pattern Recognition, Computing Systems, Databases & Information Systems, Human Computer Interaction, Theoretical Computer Science
每种类别20 个会议。在这 160 个会议中,有 133 个已经成功匹配并进行相应的标记。
然后,对于这 133 个会议的论文的每位作者,将他/她分配给他/她大部分论文的类别,如果论文类别分布均匀则随机选择一个类别。最终有 246678 位作者标记了研究类别。
-
从完整的 AMiner 数据集中学到顶点的 embedding ,然后将上述顶点标记以及对应的顶点 embedding 一起作为逻辑回归分类器的输入。实验将训练集规模从标记样本的 5% 逐渐增加到 90% ,并使用剩下顶点进行测试。将每个实验重复十轮,并报告平均的 macro-F1 和 micro-F1 。
下表给出了 Venue 类型顶点的分类结果。
下表给出了 Author 类型顶点的分类结果:
结论:- metapath2ve/metapath2vec ++ 模型始终一致且明显的优于所有其它基准方法。
- 在预测 venue 类别顶点时,由于训练数据量比 author 类别顶点少得多,因此 metapath2vec/metapath2vec ++ 的优势特别明显。
5.4.1 超参数实验
对metapath2vec ++ 的几个通用参数进行超参数敏感性分析。实验中变化其中的一个超参数,然后固定其它的超参数。
结论:
- 从图 a 和 b 可以看到,参数 w w w和 l l l对于author顶点的分类性能是正相关的,其中 w = 1000 w=1000 w=1000、 l = 100 l=100 l=100左右,author 顶点分类性能提到到峰值附近。 w , l w,l w,l对于venue顶点的分类性能无关;
- 从图 c 和 d 可以看到,embedding 尺寸 d d d和邻域大小 k k k与 venue 顶点分类性能无关。而 k k k对于 author 顶点分类性能至关重要,下降的曲线表明较小的邻域大小对于 author 顶点能够产生更好的 embedding 表示。这和同质图完全不同。在同质图中,邻域大小 通常对顶点分类显示出积极影响,而这里是消极影响。
- 这些通用的超参数在异质网络中表示出和同质网络中不同的效果,这表明对于异质网络表示学习需要采用不同的思路和解决方案。
5.5 顶点聚类
-
论文采用与上述分类任务中使用的相同的八个类别的 author 顶点和 venue 顶点,针对这些顶点的 embedding 进行聚类。实验使用 k-means 聚类算法,并通过归一化的互信息 NMI 来评估聚类效果。所有聚类实验均进行十次,并报告平均性能,结果如下表所示。
结论:
- 总体而言,metapath2vec 和 metapath2vec ++ 优于其它所有方法。
- 从 venue 顶点聚合结果可以看到,大多数方法的NMI 都较高,因此该任务相对容易。而 author 顶点聚类指标都偏低,因此任务更难。
-
NMI 指标:给定随机变量 X , Y X,Y X,Y,则归一化的互信息定义为: NMI ( X ; Y ) = I ( X ; Y ) H ( X ) = H ( X ) − H ( X ∣ Y ) H ( X ) = ∑ x ∑ y p ( x , y ) log p ( x , y ) p ( x ) × p ( y ) − ∑ x p ( x ) log x \operatorname{NMI}(X ; Y)=\frac{I(X ; Y)}{H(X)}=\frac{H(X)-H(X \mid Y)}{H(X)}=\frac{\sum_{x} \sum_{y} p(x, y) \log \frac{p(x, y)}{p(x) \times p(y)}}{-\sum_{x} p(x) \log x} NMI(X;Y)=H(X)I(X;Y)=H(X)H(X)−H(X∣Y)=−∑xp(x)logx∑x∑yp(x,y)logp(x)×p(y)p(x,y)
-
和分类实验的步骤相同,这里研究了聚类任务中 metapath2vec ++ 的参数敏感性,衡量指标为 NMI 。
- 从图 a 和 b 可以看到,author 顶点和 venue 顶点在 l = 100 , w = 800 1000 l=100,w=800~1000 l=100,w=800 1000时可以在效果和计算效率之间取得平衡。
- 从图 c 和 d 可以看到,对于 author 顶点, d d d和 k k k与聚类性能呈负相关;而对于venue 顶点, d d d也与聚类性能负相关,但是 k k k增加时聚类 NMI 先增加后减小。对于 author 顶点和 venue 顶点,当 d = 128 , k = 7 d=128,k=7 d=128,k=7时,生成的 embedding 可以得到较好的聚类结果。
5.6 相识度查找实验
-
作者从 AMiner 数据集选择 16 个不同领域的顶级 CS 会议,然后通过余弦相似度选择这些会议顶点的 top 10 相似度结果。
结论:
- 对于query 顶点 ACL,metapath2vec++ 返回的venue 具有相同的主题 NLP ,如 EMNLP(1st)、NAACL(2nd)、Computational Linguistics(3rd)、CoNLL(4th)、COLING(5th) 等等。其它领域的会议的 query 也有类似的结果。
- 大多数情况下,top3 结果涵盖了和 query 会议声望类似的venue。例如theory理论领域的 STOC 和 FOCS、system系统领域的 OSDI 和 SOSP、architecture 架构领域的HPCA 和 ISCA、security 安全领域的 CCS 和 S&P、human-computer interaction 人机交互领域的 CSCW 和 CHI、NLP 领域的 EMNLP 和 ACL、machine learning 机器学习领域的 ICML 和 NIPS、web 领域的 WSDM 和 WWW、artificial intelligence 人工智能领域的 AAAI 和 UCAI、database 数据库领域的 PVLDB 和 SIGMOD 等等。
-
类似的,我们从 DBIS 数据中选择另外的 5 个 CS 会议,然后通过余弦相似度选择这些会议顶点的 top 10 相似度结果。结论也类似。
-
我们从 DBIS 数据中选择一个会议顶点、一个作者顶点,然后比较不同 embedding 方法找出的 top-5 相似度的结果。结果如下表所示,其中 metapath2vec ++ 能够针对不同类型的 query 顶点获得最佳的 top-5 相似顶点。
5.7 可视化实验
-
我们使用 tensorflow embedding 2 维 PCA 来进一步可视化模型学到的顶点 embedding 。我们从 AMiner 数据集选择 16 个不同领域的顶级 CS 会议,以及对应的顶级作者进行可视化。
- 从图 d 可以看到,metapath2vec++ 能自动组织这两种类型的顶点,并隐式学习它们的内部关系。这种内部关系可以通过连接每对顶点的箭头的方向和距离表示,如 J.Dean --> OSDI,C.D.Manning --> ACL,R.E.Tarjan --> FOCS,M.I.Jordan --> NIPS 等等。这两类顶点位于两个独立的“列”中,很显然图 a 和 b 的 embedding 无法达到同样的效果。
- 从图 c 可以看到,metapath2vec 能够将每对 “作者-会议” pair 对进行紧密的分组,而不是将两种类型的顶点分类两列。如 R.E.Tarjan + FOCS、H.Jensen + SIGGRAPH、H.Ishli + CHI、R.Agrawal + SIGMOD 等等。 常规的 embedding 方法也无法达到这种效果。
- metapath2vec/metapath2vec++ 都可以将来自相似领域的顶点放在一起、不同领域的顶点相距较远。这种分组不仅可以通过会议顶点来反映,还可以通过作者顶点来反映。
-
下图通过 t-SNE 可视化了metapath2vec++ 学到的AMiner 数据集不同领域的顶级 CS 会议,一共48 个会议、16个领域,每个领域 3 个会议。
- 可以看到:来自同一个领域的会议彼此聚在一起,并且不同组之间的间隔比较明显。这进一步验证了 metapath2vec++ 的 embedding 能力。
- 另外,异质 embedding 能够揭示不同领域的顶点之间的相似性。如,右下角的 Core CS 领域的几个簇、右上角的 Big AI 领域的几个簇。
5.8 可扩展性实验
-
metapath2vec/metapah2vec ++ 可以使用和 word2vec/node2vec 中相同的机制来并行化。我们对 AMiner 数据集进行实验,实验在 Quad 12(48) core 2.3 GHz Intel Xeon CPUs E7-4850 上进行。我们实现不同的线程数 {1,2,4,8,16,24,32,40} ,每个线程使用一个 CPU core 。
下面给出了metapath2vec/metapath2vec++ 的加速比。最佳加速比由虚线 y = x y=x y=x表示。我们的这两种方法都可以达到能够接受的亚线性加速比,它们都接近于虚线。
具体而言,在使用 16 个 core 时,它们可以实现 11-12 倍的加速比;使用 40 个 core 时,它们可以实现 24-32 倍加速比。
-
在使用 400 个 core 时,metapath2vec ++ 的学习过程只需要 9 分组即可训练整个 AMS CS 网络的 embedding ,该网络由 900 万以上的作者、3300 多个 venue、300 万篇论文组成。
总体而言,对于具有数百万个顶点的大规模异质网络,metapath2vec/metapath2vec++ 是有效的且 scalable 的。
6、代码复现链接
- https://github.com/search?q=metapath2vec
7、参考资料
- 深度之眼:图神经网络课程
- 华校庄: http://www.huaxiaozhuan.com/
- 知乎:https://zhuanlan.zhihu.com/p/100586855