题目:metapath2vec: Scalable Representation Learning for Heterogeneous Networks
作者:Yuxiao Dong, Nitesh V. Chawla and Ananthram Swami
来源:KDD 2017
源码:https://ericdongyx.github.io/metapath2vec/m2v.html
当前的许多网络表示学习方法主要是针对同质网络的。本文提出一种的专门针对异质图的网络表示学习方法,能够同时捕捉不同类型节点之间的语义和结构联系。metapath2vec使用meta-path-based随机游走构建节点的异质邻居,然后使用一个异质skip-gram训练模型,建模结构上和语义上相近的节点。metapath2vec++进一步提出一种异质负采样方法,准确高效地预测一个节点的异质邻居。
核心问题
定义一个异质网络 G = ( V , E , T ) G=(V, E, T) G=(V,E,T),其中每个节点和边的类型由映射函数定义 ϕ ( v ) : V → T V \phi(v) : V \rightarrow T_{V} ϕ(v):V→TV , φ ( e ) : E → T E \varphi(e) : E \rightarrow T_{E} φ(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 (不只一种类型)。
对于异质图 G = ( V , E , T ) G=(V, E, T) G=(V,E,T), ∣ T V ∣ > 1 |T_V|>1 ∣TV∣>1 ,metapath2vec通过skip-gram模型学习网络表示。给定一节点 v v v,最大化其异质上下文 N t ( v ) N_t(v) Nt(v), t ∈ T V t\in T_V t∈TV(节点 v v v的 t t h t^{th} tth类型邻居节点)的概率:
(2) 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} | v ; \theta\right){\tag 2} argθmaxv∈V∑t∈TV∑ct∈Nt(v)∑logp(ct∣v;θ)(2)
条件概率定义为softmax函数
p ( c t ∣ v ; θ ) = e X c l ⋅ X v ∑ u ∈ V e X u ⋅ X v p\left(c_{t} | v ; \theta\right)=\frac{e^{X_{c_{l}} \cdot X_{v}}}{\sum_{u \in V} e^{X_{u} \cdot X_{v}}} p(ct∣v;θ)=∑u∈VeXu⋅XveXcl⋅Xv
X v X_v Xv是节点 v v v的embedding向量。
softmax分母的计算需要遍历所有节点,根据word2vec的负采样优化,上式改写为
log ( X c i ⋅ X v ) + ∑ m = 1 M E u m ∼ P ( u ) log σ ( − X u m ⋅ X v ) \log \left(X_{c_{i}} \cdot X_{v}\right)+\sum_{m=1}^{M} \mathbb{E}_{u^{m} \sim P(u)} \log \sigma\left(-X_{u^{m}} \cdot X_{v}\right) log(Xci⋅Xv)+m=1∑MEum∼P(u)logσ(−Xum⋅Xv)
模型在构建 P ( u ) P(u) P(u) 分布时,忽略节点的类别信息,采样负样本。
与deepwalk类似,metapath2vec也是通过随机游走的方式保留网络结构。但是在异质网络中,决定游走下一步的条件概率 p ( v i + 1 ∣ v i ) p\left(v^{i+1} | v^{i}\right) p(vi+1∣vi)不能像deepwalk那样,直接在节点 v i v_i vi 的所有邻居上做标准化(Normalized Probability)。如果这样做忽略了节点的类型信息。
PathSim论文[1] 指出
heterogeneous random walks are biased to highly visible types of nodes—those with a dominant number of paths—and concentrated nodes—those with a governing percentage of paths pointing to a small set of nodes .
给定一个异质网络 G ( V , E , T ) G(V,E,T) G(V,E,T)和meta-path P = V 1 ⟶ R 1 V 2 ⟶ R 2 ⋯ V t ⟶ R t V t + 1 ⋯ ⟶ R l − 1 V l \mathcal{P} = V_{1} \stackrel{R_{1}}{\longrightarrow} V_{2} \stackrel{R_{2}}{\longrightarrow} \cdots V_{t} \stackrel{R_{t}}{\longrightarrow} V_{t+1} \cdots \stackrel{R_{l-1}}{\longrightarrow} V_{l} P=V1⟶R1V2⟶R2⋯Vt⟶RtVt+1⋯⟶Rl−1Vl
其中节点类型 V 1 V_1 V1 和 V l V_l Vl之间的关系表示为 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。那么第i步的转移概率为
(3) p ( v i + 1 ∣ v t i , P ) = { 1 ∣ N t + 1 ( v t i ) ∣ ( 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} | v_{t}^{i}, \mathcal{P}\right)=\left\{\begin{array}{cc}{\frac{1}{\left|N_{t+1}\left(v_{t}^{i}\right)\right|}} & {\left(v^{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.{\tag{3}} p(vi+1∣vti,P)=⎩⎪⎨⎪⎧∣Nt+1(vti)∣100(vi+1,vti)∈E,ϕ(vi+1)=t+1(vi+1,vti)∈E,ϕ(vi+1)̸=t+1(vi+1,vti)∈/E(3)
其中 v t i ∈ V t v_{t}^{i} \in V_{t} vti∈Vt, N t + 1 ( v t i ) N_{t+1}\left(v_{t}^{i}\right) Nt+1(vti)表示节点 v t i v_t^i vti的邻居中属于 V t + 1 V_{t+1} Vt+1类型的节点集合。也就是说,游走是在预先设定的meta-path P的条件上。通常meta-path一般用在对称的路径上,第一个节点类型与最后一个节点类型相同。例如 OAPVPAO
p ( v i + 1 ∣ v t i ) = p ( v i + 1 ∣ v 1 i ) , if t = l p\left(v^{i+1} | v_{t}^{i}\right)=p\left(v^{i+1} | v_{1}^{i}\right), \text { if } t=l p(vi+1∣vti)=p(vi+1∣v1i), if t=l
下面是metapah的举例:
metapath2vec在计算softmax时,忽略了节点类型信息。换句话说,在采集负样本时,没有考虑样本是否与正样本属于同一个节点类型。因而本文提出,异质的负采样 (Heterogeneous negative sampling)。也就说条件概率 p ( c t ∣ v ; θ ) p\left(c_{t} | v ; \theta\right) p(ct∣v;θ)在特定的节点类型 t t t 上做标准化。
(5) p ( c t ∣ v ; θ ) = e X c t ⋅ X v ∑ u t ∈ V t e X u t ⋅ X v p\left(c_{t} | v ; \theta\right)=\frac{e^{X_{c_{t}} \cdot X_{v}}}{\sum_{u_{t} \in V_{t}} e^{X_{u_{t}} \cdot X_{v}}}{\tag 5} p(ct∣v;θ)=∑ut∈VteXut⋅XveXct⋅Xv(5)
这就为skip-gram最后一层输出层中的 每个类型都指定了一个多项分布。deepwalk中输出多项分布的维度等于网络中节点的数目,而metapath2vec++中类型t的节点输出的多项分布维度等于类型t节点的数量。
二者的比较见下图:
采样分布也是针对特定类型节点进行采样 P t ( ⋅ ) P_t(\cdot) Pt(⋅),目标函数为:
(6) O ( X ) = log σ ( X c t ⋅ X v ) + ∑ m = 1 M E u t m ∼ P t ( u t ) [ log σ ( − X u t m ⋅ X v ) ] O(\mathrm{X})=\log \sigma\left(X_{c_{t}} \cdot X_{v}\right)+\sum_{m=1}^{M} \mathrm{E}_{u_{t}^{m} \sim P_{t}\left(u_{t}\right)}\left[\log \sigma\left(-X_{u_{t}^{m}} \cdot X_{v}\right){\tag {6}}\right] O(X)=logσ(Xct⋅Xv)+m=1∑MEutm∼Pt(ut)[logσ(−Xutm⋅Xv)](6)
参数更新式子
∂ O ( X ) ∂ X u t m = ( σ ( X u t m ⋅ X v − I c t [ u t m ] ) ) X v ∂ O ( X ) ∂ X v = ∑ m = 0 M ( σ ( X u t m ⋅ X v − I c t [ u t m ] ) ) X u t m \begin{array}{l}{\frac{\partial O(\mathrm{X})}{\partial X_{u_{t}^{m}}}=\left(\sigma\left(X_{u_{t}^{m}} \cdot X_{v}-\mathbb{I}_{c_{t}}\left[u_{t}^{m}\right]\right)\right) X_{v}} \\ {\frac{\partial O(\mathrm{X})}{\partial X_{v}}=\sum_{m=0}^{M}\left(\sigma\left(X_{u_{t}^{m}} \cdot X_{v}-\mathbb{I}_{c_{t}}\left[u_{t}^{m}\right]\right)\right) X_{u_{t}^{m}}}\end{array} ∂Xutm∂O(X)=(σ(Xutm⋅Xv−Ict[utm]))Xv∂Xv∂O(X)=∑m=0M(σ(Xutm⋅Xv−Ict[utm]))Xutm
I c t [ u t m ] \mathbb{I}_{c_{t}}\left[u_{t}^{m}\right] Ict[utm]是一个指示函数,表明 u t m u_t^m utm 是否是上下文节点 c t c_t ct 。当 m = 0 , u t 0 = c t m=0, u_{t}^{0}=c_{t} m=0,ut0=ct。
metapath++算法整体流程
metapath2vec定义了随机游走时必须符合预设的meta-path(eq3),并且提出了相应的skip-gram训练模型(eq5)以及负采样方法(eq6)。该模型能够有效地得到不同类型节点之间结构和语义上的联系。