Graph Embedding
目前提到图算法一般指:
-
经典数据结构与算法层面的:最小生成树(Prim,Kruskal,…),最短路(Dijkstra,Floyed,…),拓扑排序,关键路径等
-
概率图模型,将条件概率表达为图结构,并进一步挖掘,典型的有条件随机场等
-
图神经网络,主要包括Graph Embedding(基于随机游走)和Graph CNN(基于邻居汇聚)两部分。
Graph Embedding 的中心思想就是找到一种映射函数,该函数将网络中的每个节点转换为低维度的潜在表示。得到的表达向量可以用来进行下游任务,如节点分类,链接预测,可视化或重构原始图等。
DeepWalk、LINE、Node2vec、Struc2vec和SDNE是Graph Embeding的几种常见类型。不同的graph embedding方法的一个主要区别是对图中顶点之间的相似度的定义不同。
1、DeepWalk
1)介绍
DeepWalk的思想类似word2vec,使用图中节点与节点的共现关系来学习节点的向量表示。
DeepWalk通过从每个结点出发n_walks次,每一步都采取均匀采样的方式选择当前结点的邻接结点作为下一步的结点随机游走。当游走的路径长度达到walk_length后,停止一次游走。这样就生成了一个个游走的序列,每个序列都称为一个walk。每个walk都被当成Word2Vec中的一个句子,而每个结点都是Word2Vec中的一个词。之后的算法几乎和Word2Vec的skip gram版本完全一样。
RandomWalk是一种可重复访问已访问节点的深度优先遍历算法。给定当前访问起始节点,从其邻居中随机采样节点作为下一个访问节点,重复此过程,直到访问序列长度满足预设条件。获取足够数量的节点访问序列后,使用skip gram model 进行向量学习。
2)算法过程
Network/graph ——random walk——得到节点序列—— 放到skip-gram模型中——output:representation
2、LINE
1)介绍
LINE也是一种基于邻域相似假设的方法,只不过与DeepWalk使用DFS构造邻域不同的是,LINE可以看作是一种使用BFS构造邻域的算法。此外,LINE还可以应用在带权图中(DeepWalk仅能用于无权图)。
LINE在图上定义了两种相似度:一阶相似度与二阶相似度。
一阶相似度:用于描述图中成对顶点之间的局部相似度。形式化描述为若 u , v \bf u,v u,v之间存在直连边,则边权 w u v w_{\bf uv} wuv即为两个顶点的相似度;若不存在直连边,则一阶相似度为0。如上图中的6、7两个结点就拥有很高的一阶相似度。
二阶相似度:所比较的是两个结点邻居的相似程度。若 u , v \bf u,v u,v之间拥有相同的邻居,他们也更加的相似;若不存在相同的邻居顶点,则2阶相似度为0。例如下图中的5、6两点拥有很高的二阶相似度。用一句俗话来概括就是“我朋友的朋友也可能是我的朋友”
2)优化目标
一阶相似度
一阶相似度只能用于无向图当中。
对于每一条无向边
(
i
,
j
)
(i,j)
(i,j),定义经验分布(两个结点实际的一阶相似度):
p
1
^
(
v
i
,
v
j
)
=
w
i
j
W
,
W
=
∑
(
i
,
j
)
∈
E
w
i
j
\hat{p_1}(v_i,v_j)=\frac{w_{ij}}{W},W=\sum_{(i,j)\in E} w_{ij}
p1^(vi,vj)=Wwij,W=(i,j)∈E∑wij
定义顶点
v
i
v_i
vi和
v
j
v_j
vj之间的联合概率(两个结点embedding之间的相似度):
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(-\overrightarrow{u}^T_i \cdot \overrightarrow{u}_j)}
p1(vi,vj)=1+exp(−uiT⋅uj)1
优化目标为最小化:
O
1
=
d
(
p
^
1
(
⋅
,
⋅
)
,
p
1
(
⋅
,
⋅
)
)
O_1=d(\hat{p}_1(\cdot,\cdot),p_1(\cdot,\cdot))
O1=d(p^1(⋅,⋅),p1(⋅,⋅))
d
(
⋅
,
⋅
)
d(\cdot,\cdot)
d(⋅,⋅)是两个分布的距离,常用的衡量两个概率分布差异的指标为KL散度:
D
K
L
(
p
^
1
∣
∣
p
1
)
=
∑
(
i
,
j
)
∈
E
p
^
1
(
v
i
,
v
j
)
log
(
p
^
1
(
v
i
,
v
j
)
p
1
(
v
i
,
v
j
)
)
=
⋯
=
∑
(
i
,
j
)
∈
E
p
^
1
(
v
i
,
v
j
)
log
p
^
1
(
v
i
,
v
j
)
−
∑
(
i
,
j
)
∈
E
p
^
1
(
v
i
,
v
j
)
log
p
1
(
v
i
,
v
j
)
\begin{aligned} D_{KL}(\hat{p}_1||p_1)&= \sum_{(i,j)\in E}\hat{p}_1(v_i,v_j) \log(\frac{\hat{p}_1(v_i,v_j)}{p_1(v_i,v_j)})\\ &=\cdots \\ &=\sum_{(i,j)\in E}\hat{p}_1(v_i,v_j)\log{\hat{p}_1(v_i,v_j)}-\sum_{(i,j)\in E}\hat{p}_1(v_i,v_j)\log{p_1(v_i,v_j)} \end{aligned}
DKL(p^1∣∣p1)=(i,j)∈E∑p^1(vi,vj)log(p1(vi,vj)p^1(vi,vj))=⋯=(i,j)∈E∑p^1(vi,vj)logp^1(vi,vj)−(i,j)∈E∑p^1(vi,vj)logp1(vi,vj)
∑
(
i
,
j
)
∈
E
p
^
1
(
v
i
,
v
j
)
log
p
^
1
(
v
i
,
v
j
)
\sum_{(i,j)\in E}\hat{p}_1(v_i,v_j)\log{\hat{p}_1(v_i,v_j)}
∑(i,j)∈Ep^1(vi,vj)logp^1(vi,vj)已知,为常数项,求最小值时可忽视,有:
O
1
=
−
∑
(
i
,
j
)
∈
E
w
i
j
log
p
1
(
⋅
,
⋅
)
O_1=-\sum_{(i,j)\in E}w_{ij}\log{p_1(\cdot,\cdot)}
O1=−(i,j)∈E∑wijlogp1(⋅,⋅)
二阶相似度
这里对于每个顶点 i i i维护两个embedding向量,一个是该顶点本身的表示向量 u → i \overrightarrow{u}_i ui,一个是该点作为其他顶点的上下文顶点时的表示向量 u → i ′ \overrightarrow{u}^\prime_i ui′。
对于有向边
(
i
,
j
)
(i,j)
(i,j),定义给定顶点
v
i
v_i
vi条件下,经验分布定义(两个结点实际的二阶相似度):
p
2
^
(
v
j
∣
v
i
)
=
w
i
j
d
i
\hat{p_2}(v_j|v_i)=\frac{w_{ij}}{d_i}
p2^(vj∣vi)=diwij
其中,
w
(
i
j
)
w_(ij)
w(ij)是边
(
i
,
j
)
(i,j)
(i,j)的边权
,
,
,
d
i
d_i
di是顶点
v
i
v_i
vi的出度,对于带权图,
d
i
=
∑
k
∈
N
(
i
)
W
i
k
d_i=\sum_{k\in N(i)} W_{ik}
di=∑k∈N(i)Wik
产生上下文(邻居)顶点
v
j
v_j
vj的概率(两个结点embedding的相似度):
p
2
(
v
j
∣
v
i
)
=
e
x
p
(
u
→
j
′
T
⋅
u
→
i
)
∑
k
=
1
∣
V
∣
e
x
p
(
u
→
k
′
T
⋅
u
→
i
)
p_2(v_j|v_i)=\frac{exp(\overrightarrow{u}^{\prime T}_j \cdot \overrightarrow{u}_i)}{\sum^{|V|}_{k=1} exp(\overrightarrow{u}^{\prime T}_k \cdot \overrightarrow{u}_i)}
p2(vj∣vi)=∑k=1∣V∣exp(uk′T⋅ui)exp(uj′T⋅ui)
其中,
∣
V
∣
|V|
∣V∣为上下文顶点的个数。
优化目标为最小化:
O
2
=
∑
i
∈
V
λ
i
d
(
p
^
2
(
⋅
∣
v
i
)
,
p
2
(
⋅
∣
v
i
)
)
O_2=\sum_{i\in V}\lambda_i d(\hat{p}_2(\cdot|v_i),p_2(\cdot|v_i))
O2=i∈V∑λid(p^2(⋅∣vi),p2(⋅∣vi))
其中,
λ
i
\lambda_i
λi为控制节点重要性的因子,可以通过顶点的度数或者PageRank等方法估计得到。
使用KL散度并设
λ
i
=
d
i
\lambda_i=d_i
λi=di,忽略常数项,有:
O
2
=
−
∑
(
i
,
j
)
∈
E
w
i
j
log
p
1
(
v
j
∣
v
i
)
O_2=-\sum_{(i,j)\in E}w_{ij}\log{p_1(v_j|v_i)}
O2=−(i,j)∈E∑wijlogp1(vj∣vi)
最终要获得同时包含有一阶相似度和二阶相似度的embedding,只需要将通过一阶相似度获得的embedding与通过二阶相似度获得的embedding拼接即可。
3、Node2vec
1)介绍
前面介绍过基于DFS邻域的DeepWalk和基于BFS邻域的LINE。
node2vec是一种综合考虑DFS邻域和BFS邻域的graph embedding方法。简单来说,可以看作是deepwalk的一种扩展,是结合了DFS和BFS随机游走的deepwalk。
2)优化目标
设 f ( u ) f(u) f(u)是将顶点 u u u映射为embedding向量的映射函数,对于图中每个顶点 u u u,定义 N S ( U ) N_S(U) NS(U)为通过采样策略 S S S采样出的顶点 u u u近邻顶点集合。
node2vec优化的目标是给定每个顶点条件下,令其近邻顶点(如何定义近邻顶点很重要)出现的概率最大。即:
m
a
x
f
∑
u
∈
V
log
P
r
(
N
S
(
u
)
∣
f
(
u
)
)
\underset{f}{max}\quad \sum_{u\in V} \log{Pr(N_S(u)|f(u))}
fmaxu∈V∑logPr(NS(u)∣f(u))
为了将上述最优化问题可解,文章提出两个假设:
-
条件独立性假设
假设给定源顶点下,其近邻顶点出现的概率与近邻集合中其余顶点无关。
P r ( N S ( u ) ∣ f ( u ) ) = ∏ n i ∈ N S ( u ) P r ( n i ∣ f ( u ) ) Pr(N_S(u)|f(u))=\prod_{n_i\in N_S(u)}Pr(n_i|f(u)) Pr(NS(u)∣f(u))=ni∈NS(u)∏Pr(ni∣f(u))
-
特征空间对称性假设
这里是说一个顶点作为源顶点和作为近邻顶点的时候共享同一套embedding向量。(对比LINE中的2阶相似度,一个顶点作为源点和近邻点的时候是拥有不同的embedding向量的)
在这个假设下,上述条件概率公式可表示为:
P r ( n i ∣ f ( u ) ) = e x p ( f ( n i ) ⋅ f ( u ) ) ∑ v ∈ V e x p ( ( f ( v ) ⋅ f ( u ) ) ) Pr(n_i|f(u))=\frac{exp(f(n_i)\cdot f(u))}{\sum_{v\in V}exp((f(v)\cdot f(u)))} Pr(ni∣f(u))=∑v∈Vexp((f(v)⋅f(u)))exp(f(ni)⋅f(u))
根据以上两个假设条件,最终的目标函数表示为:
m
a
x
f
∑
u
∈
V
[
−
∣
N
S
(
u
)
∣
log
Z
u
+
∑
n
i
∈
N
S
(
u
)
f
(
n
i
)
⋅
f
(
u
)
]
\underset{f}{max}\quad \sum_{u\in V}\bigg[-|N_S(u)|\log{Z_u}+\sum_{n_i\in N_S(u)}f(n_i)\cdot f(u)\bigg]
fmaxu∈V∑[−∣NS(u)∣logZu+ni∈NS(u)∑f(ni)⋅f(u)]
其中,
Z
u
=
∑
v
∈
V
e
x
p
(
f
(
n
i
)
⋅
f
(
u
)
)
Z_u=\sum_{v\in V}{exp(f(n_i)\cdot f(u))}
Zu=∑v∈Vexp(f(ni)⋅f(u))。由于归一化因子
Z
u
Z_u
Zu的计算代价高,所以采用负采样技术优化。
3)顶点序列采样策略
node2vec引入两个超参数
p
p
p 和
q
q
q来控制随机游走的策略,假设现在游走序列从
t
t
t走到
v
v
v,这时候需要算出三个系数,分别作为控制下一步走向方向的偏置
α
\alpha
α
α
p
q
(
t
,
x
)
=
{
1
p
i
f
d
t
x
=
0
1
i
f
d
t
x
=
1
1
q
i
f
d
t
x
=
2
\alpha_{pq(t,x)} = \begin{cases} \frac{1}{p} & if \quad d_{tx}=0 \\ 1 & if \quad d_{tx}=1 \\ \frac{1}{q} & if \quad d_{tx}=2 \\ \end{cases}
αpq(t,x)=⎩⎪⎨⎪⎧p11q1ifdtx=0ifdtx=1ifdtx=2
其中,
d
t
x
d_{tx}
dtx代表
t
t
t结点到下一步结点
x
x
x的最短路,最多为2。
-
当 d t x = 0 d_{tx}=0 dtx=0时,表示下一步游走是回到上一步的结点;
-
当 d t x = 1 d_{tx}=1 dtx=1时,表示下一步游走跳向 t t t的另外一个邻居结点;
-
当 d t x = 2 d_{tx}=2 dtx=2时,表示下一步游走向更远的结点移动。
下面讨论超参数 p p p和 q q q 对游走策略的影响。
-
对于 p p p
参数 p p p控制重复访问刚刚访问过的顶点的概率。 注意到 p p p仅作用于 d t x = 0 d_{tx}=0 dtx=0的情况,而 d t x = 0 d_{tx}=0 dtx=0表示顶点 x x x就是访问当前顶点 v v v之前刚刚访问过的顶点。 那么若 p p p 较高,则访问刚刚访问过的顶点的概率会变低,反之变高。
-
对于 q q q
参数 q q q控制的是游走向更远方向的概率,也就是激进探索系数。如果 q q q较大,那么游走策略则更偏向于广度优先策略,若 1 1 1较小,则偏向于深度优先策略。
下面的图描述的是当从 t t t访问到 v v v时,决定下一个访问顶点时每个顶点对应的 α \alpha α。
给定当前顶点
v
v
v,给定当前顶点
x
x
x 的概率为:
P
(
c
i
=
x
∣
c
i
−
1
=
v
)
=
{
π
v
x
Z
i
f
(
v
,
x
)
∈
E
0
i
f
o
t
h
e
r
w
i
s
e
P(c_i=x|c_{i-1}=v) = \begin{cases} \frac{\pi_{vx}}{Z} & if \quad (v,x)\in E \\ 0 & if \quad otherwise \\ \end{cases}
P(ci=x∣ci−1=v)={Zπvx0if(v,x)∈Eifotherwise
π
v
x
\pi_{vx}
πvx是顶点
v
v
v和顶点
x
x
x之间的未归一化转移概率,
π
v
x
=
α
p
q
(
t
,
x
)
⋅
w
v
x
\pi_{vx}=\alpha_{pq}(t,x)\cdot w_{vx}
πvx=αpq(t,x)⋅wvx,
w
v
x
w_{vx}
wvx是顶点
v
v
v和顶点
x
x
x之间的权重,
Z
Z
Z是归一化常数。
4、Struc2vec
1)介绍
Struc2Vec是从空间结构相似性的角度定义顶点相似度的。
根据下图,如果在基于近邻相似的模型中,顶点 u u u和顶点 v v v是不相似的,第一他们不直接相连,第二他们不共享任何邻居顶点。
而在struc2vec的假设中,顶点 u u u和顶点 v v v是具有空间结构相似的。他们的度数分别为5和4,分别连接3个和2个三角形结构,通过2个顶点 ( d , e ; x , w ) (d,e;x,w) (d,e;x,w)和网络的其他部分相连。
直观来看,具有相同度数的顶点是结构相似的,若各自邻接顶点仍然具有相同度数,那么他们的相似度就更高。
2)距离定义
令 R k ( u ) R_k(u) Rk(u)表示到顶点 u u u距离为 k k k的顶点集合,则 R 1 ( u ) R_1(u) R1(u)表示是 u u u的直接相连近邻集合。
令 s ( S ) s(S) s(S)表示顶点集合 S S S的有序度序列。
通过比较两个顶点之间距离为k的环路上的有序度序列可以推出一种层次化衡量结构相似度的方法。
令
f
k
(
u
,
v
)
f_k(u,v)
fk(u,v)表示顶点
u
u
u和
v
v
v之间距离为
k
k
k(这里的距离
k
k
k实际上是指距离小于等于
k
k
k的节点集合)的环路上的结构距离(注意是距离,不是相似度)。
f
k
(
u
,
v
)
=
f
k
−
1
(
u
,
v
)
+
g
(
s
(
R
k
(
u
)
)
,
s
(
R
k
(
v
)
)
)
,
k
≥
0
a
n
d
∣
R
k
(
u
)
∣
,
∣
R
k
(
v
)
∣
>
0
f_k(u,v)=f_{k-1}(u,v)+g(s(R_k(u)),s(R_k(v))),\\ k\geq 0 \quad and \quad |R_k(u)|,|R_k(v)| >0
fk(u,v)=fk−1(u,v)+g(s(Rk(u)),s(Rk(v))),k≥0and∣Rk(u)∣,∣Rk(v)∣>0
其中
g
(
D
1
,
D
2
)
≥
0
g(D_1,D_2)\geq 0
g(D1,D2)≥0是衡量有序度序列
D
1
D_1
D1和
D
2
D_2
D2的距离的函数,并且
f
−
1
=
0
f_{-1}=0
f−1=0
由于 s ( R k ( u ) ) s(R_k(u)) s(Rk(u))和 s ( R k ( v ) ) s(R_k(v)) s(Rk(v))的长度不同,并且可能含有重复元素。所以文章采用了**Dynamic Time Warping(DTW)**来衡量两个有序度序列。
基于DTW,定义元素之间的距离函数: d ( a , b ) = m a x ( a , b ) m i n ( a , b ) − 1 d(a,b)=\frac{max(a,b)}{min(a,b)}-1 d(a,b)=min(a,b)max(a,b)−1
这个距离函数实际上惩罚了当两个顶点的度数都比较小的时候两者的差异。举例来说 a = 1 , b = 2 a=1,b=2 a=1,b=2情况下的距离为1, a = 101 , b = 102 a=101,b=102 a=101,b=102 情况下的距离差异为0.0099。
3)构建多层带权重图
根据上一节的距离定义,对于每一个 k k k 我们都可以计算出两个顶点之间的一个距离,现在要做的是通过上一节得到的顶点之间的有序度序列距离来构建一个层次化的带权图(用于后续的随机游走)。
我们定义在某一层k中两个顶点的边权为: w k ( u , v ) = e − f k ( u , v ) , k = 0 , ⋯ , k ∗ w_k(u,v)=e^{-f_k(u,v)},k=0,\cdots ,k^* wk(u,v)=e−fk(u,v),k=0,⋯,k∗
这样定义的边权都是小于1的,当且仅当距离为0的是时候,边权为1。
通过有向边将属于不同层次的同一顶点连接起来,具体来说,对每个顶点,都会和其对应的上层顶点还有下层顶点相连。边权定义为:
w ( u k , u k + 1 ) = log ( Γ k ( u ) + e ) , k = 0 , ⋯ , k ∗ − 1 w(u_k,u_{k+1})=\log(\Gamma_k(u)+e),k=0,\cdots, k^*-1 w(uk,uk+1)=log(Γk(u)+e),k=0,⋯,k∗−1
w ( u k , u k − 1 ) = 1 w(u_k,u_{k-1})=1 w(uk,uk−1)=1
其中 Γ k ( u ) \Gamma_k(u) Γk(u)是第 k k k层与 u u u相连的边的边权大于平均边权的边的数量。
Γ k ( u ) = ∑ v ∈ V 1 ( w k ( u , v ) > w ‾ k ) \Gamma_k(u)=\sum_{v\in V}1\quad(w_k(u,v)>\overline{w}_k) Γk(u)=∑v∈V1(wk(u,v)>wk), w ‾ k \overline{w}_k wk 就是第 k k k层所有边权的平均值。
4)采样获取顶点序列
使用有偏随机游走在构造出的图 中进行顶点序列采样。 每次采样时,首先决定是在当前层游走,还是切换到上下层的层游走。
1.本层游走
若决定在当前层游走,设当前处于第
k
k
k层,则从顶点
u
u
u到顶点
v
v
v的概率为:
p
k
(
u
,
v
)
=
e
−
f
k
(
u
,
v
)
Z
k
(
u
)
p_k(u,v)=\frac{e^{-f_k(u,v)}}{Z_k(u)}
pk(u,v)=Zk(u)e−fk(u,v)
其中
Z
K
(
u
)
=
∑
v
∈
V
,
v
≠
u
e
−
f
k
(
u
,
v
)
Z_K(u)=\sum_{v\in V,v\not= u}e^{-f_k(u,v)}
ZK(u)=∑v∈V,v=ue−fk(u,v) 是第
k
k
k层中关于顶点
u
u
u的归一化因子。
通过在图 M M M中进行随机游走,每次采样的顶点更倾向于选择与当前顶点结构相似的顶点。因此,采样生成的上下文顶点很可能是结构相似的顶点,这与顶点在图中的位置无关。
2.上下游切换
若决定切换不同的层,则以如下的概率选择 k + 1 k+1 k+1层或 k − 1 k-1 k−1层,
p k ( u k , u k + 1 ) = w ( u k , u k + 1 ) w ( u k , u k + 1 ) + w ( u k , u k − 1 ) p_k(u_k,u_{k+1})=\frac{w(u_k,u_{k+1})}{w(u_k,u_{k+1})+w(u_k,u_{k-1})} pk(uk,uk+1)=w(uk,uk+1)+w(uk,uk−1)w(uk,uk+1)
p k ( u k , u k − 1 ) = 1 − p k ( u k , u k + 1 ) p_k(u_k,u_{k-1})=1-p_k(u_k,u_{k+1}) pk(uk,uk−1)=1−pk(uk,uk+1)
5)使用skip-gram生成embedding
Struc2vec适用于节点分类中,其结构标识比邻居标识更重要时,采用Struc2vec效果好。
5、SDNE
1)理论
SDNE(Structural Deep Network Embedding )是和node2vec并列的工作,均发表在2016年的KDD会议中。可以看作是基于LINE的扩展,同时也是第一个将深度学习应用于网络表示学习中的方法。
之前的Deepwalk,LINE,node2vec,struc2vec都使用了浅层的结构, 浅层模型往往不能捕获高度非线性的网络结构。即产生了SDNE方法, 使用多个非线性层来捕获node的embedding。
SDNE使用一个自动编码器结构来同时优化1阶和2阶相似度(LINE是分别优化的)。简单来说,一阶相似度衡量的是相邻的两个顶点对之间相似性。二阶相似度衡量的是,两个顶点他们的邻居集合的相似程度。
2)优化目标
二阶相似度优化
L 2 n d = ∑ i = 1 n ∣ ∣ x ^ i − x i ∣ ∣ 2 2 L_{2nd}=\sum^n_{i=1}||\hat{x}_i-x_i||^2_2 L2nd=i=1∑n∣∣x^i−xi∣∣22
这里我们使用图的邻接矩阵 S S S进行输入,SDNE直接使用一个深度自编码器,学习网络邻接矩阵的编码与重构。对于第 i i i个顶点,有 x i = s i x_i=s_i xi=si,每一个 s i s_i si所以这样的重构过程能够使得结构相似的顶点具有相似的embedding表示向量。
文章给出的一个方法是使用带权损失函数,对于非零元素具有更高的惩罚系数。 修正后的损失函数为:
L
2
n
d
=
∑
i
=
1
n
∣
∣
(
x
^
i
−
x
i
)
⊙
b
i
∣
∣
2
2
=
∣
∣
(
X
^
i
−
X
i
)
⊙
B
∣
∣
2
2
L_{2nd}=\sum^n_{i=1}||(\hat{x}_i-x_i)\odot {\bf b_i}||^2_2=||(\hat{X}_i-X_i)\odot {\bf B}||^2_2
L2nd=i=1∑n∣∣(x^i−xi)⊙bi∣∣22=∣∣(X^i−Xi)⊙B∣∣22
其中,
⊙
\odot
⊙为逐元素积,
b
i
=
{
b
i
,
j
}
j
=
1
n
{\bf b_i}=\lbrace{b_{i,j}}\rbrace ^n_{j=1}
bi={bi,j}j=1n,若
s
i
,
j
=
0
s_{i,j}=0
si,j=0,则
b
i
,
j
=
1
b_{i,j}=1
bi,j=1,否则
b
i
,
j
=
β
>
1
b_{i,j}=\beta>1
bi,j=β>1
一阶相似度优化
针对一阶相似度的损失函数,其实很直接,因为我们最终是将自编码器的隐层当作最终的节点Embedding。
对于一阶相似度,损失函数定义如下:
L
1
s
t
=
∑
i
,
j
=
1
n
s
i
,
j
∣
∣
y
i
(
K
)
−
y
j
(
K
)
∣
∣
2
2
=
∑
i
,
j
=
1
n
s
i
,
j
∣
∣
y
i
−
y
j
∣
∣
2
2
L_{1st}=\sum^n_{i,j=1}s_{i,j}||{\bf y_i}^{(K)}-{\bf y_j}^{(K)}||^2_2=\sum^n_{i,j=1}s_{i,j}||{\bf y_i}-{\bf y_j}||^2_2
L1st=i,j=1∑nsi,j∣∣yi(K)−yj(K)∣∣22=i,j=1∑nsi,j∣∣yi−yj∣∣22
L
1
s
t
L_{1st}
L1st还可以表示为:
L
1
s
t
=
∑
i
,
j
=
1
n
s
i
,
j
∣
∣
y
i
−
y
j
∣
∣
2
2
=
2
t
r
(
Y
T
L
Y
)
L_{1st}=\sum^n_{i,j=1}s_{i,j}||{\bf y_i}-{\bf y_j}||^2_2=2tr(Y^TLY)
L1st=i,j=1∑nsi,j∣∣yi−yj∣∣22=2tr(YTLY)
其中
L
L
L是图对应的拉普拉斯矩阵,
L
=
D
−
S
L=D-S
L=D−S,
D
D
D是图中顶点的度矩阵,
S
S
S是邻接矩阵,
D
i
,
i
=
∑
j
s
i
,
j
D_{i,i}=\underset{j}{\sum}s_{i,j}
Di,i=j∑si,j
整体优化目标
联合优化的损失函数为 :
L
m
i
x
=
L
2
r
d
+
α
L
1
s
t
+
ν
L
r
e
g
L_{mix}=L_{2rd}+\alpha L_{1st}+\nu L_{reg}
Lmix=L2rd+αL1st+νLreg
L
r
e
g
L_{reg}
Lreg是正则化项,
α
\alpha
α为控制一阶损失的参数,
ν
\nu
ν为控制1阶损失的参数。
L
r
e
g
=
1
2
∑
k
=
1
k
(
∣
∣
W
(
k
)
∣
∣
F
2
+
∣
∣
W
^
(
k
)
∣
∣
F
2
)
L_{reg}=\frac{1}{2}\sum^k_{k=1}(||W^{(k)}||^2_F+||\hat{W}^{(k)}||^2_F)
Lreg=21k=1∑k(∣∣W(k)∣∣F2+∣∣W^(k)∣∣F2)
总结
Graph Embedding:
- DeepWalk:采用随机游走,形成序列,采用skip-gram方式生成节点embedding。
- node2vec:不同的随机游走策略,形成序列,类似skip-gram方式生成节点embedding。
- LINE:捕获节点的一阶和二阶相似度,分别求解,再将一阶二阶拼接在一起,作为节点的embedding
- struc2vec:对图的结构信息进行捕获,在其结构重要性大于邻居重要性时,有较好的效果。
- SDNE:采用了多个非线性层的方式捕获一阶二阶的相似性。
Graph Embedding——(1)DeepWalk理论
Graph Embedding——(2)LINE理论
Graph Embedding——(3)Node2vec理论
Graph Embedding——(4)Struc2vec理论
Graph Embedding——(5)SDNE理论