承接上文 graph embedding第一篇——deepwalk and line 本篇主要介绍Node2vec与SDNE,下一篇主要介绍各个大厂是怎么应用graph embedding的。
参考
graph embedding
深度学习中不得不学的Graph Embedding方法
Embedding从入门到专家必读的十篇论文
DNN论文分享 - Item2vec
从KDD 2018最佳论文看Airbnb实时搜索排序中的Embedding技巧
Negative-Sampling Word-Embedding Method
推荐系统遇上深度学习(四十四)-Airbnb实时搜索排序中的Embedding技巧
理论优美的深度信念网络,Hinton老爷子北大最新演讲
Node2Vec
node2vec: Scalable Feature Learning for Networks
node2vec code
Deepwalk,line 的目标为:尽可能在低维空间中保留原始空间中的邻域关系。不同的采样策略将导致不同的邻域关系,因此能够学到不同的顶点表达。这也是deepwalk,line这类工作的主要缺点:不能为采样过程提供灵活性。
比如对于下图:
- u u u和 s 1 s_1 s1是相似的,因为他们属于同一个社区(根据deepwalk,line同样可以得到)
- u u u和 s 6 s_6 s6是相似的,虽然他们不属于同一个社区,但是它们属于⽹络的同⼀种特殊连接模式。
因此,node2vec的方法就是想用一种灵活地算法采样到上述两种可能,从而使得顶点的representation具有更强的特征表达。我们来看两种极端的采样策略:
可以看出,BFS和DFS不同的采样策略能够帮助我们在上文中描述的两种规则之间选择,node2vec提供了一种能够采样策略,使得我们可以平滑的在BFS和DFS之间选择。
同样的,采用随机游走的方式采样,对于顶点
c
i
c_i
ci的采样策略为:
对于其中
π
v
x
\pi_{vx}
πvx的定义为:
即
x
x
x的取值范围是有限的,只能选择
t
t
t本身,其一阶邻域与其二阶邻域。
- return parameter p:控制重新访问上一步已访问节点的概率。如果 p > m a x ( 1 , q ) p>max(1,q) p>max(1,q)则接下来访问的顶点不大可能是上一步已经访问过的顶点;反之,一个较小的值会使得访问上一步已经访问过顶点的概率大幅增加。
- in-out paramter q: 控制探索方向是向内搜索还是向外搜索。如果 q > 1 q>1 q>1那么倾向于向内搜索,类似BFS;反之倾向向外搜索,类似DFS。
其算法如下:
SDNE
Structural Deep Network Embedding
node2vec是想要通过一种灵活地采样方式从而保留网络的全局信息和局部信息,而SDNE是想要通过一阶邻近度和二阶邻近度 保留其网络结构;与LINE不同的是,LINE(1st)与LINE(2nd)不是共同训练的,在无监督学习中甚至没法将二者结合起来,SDNE提出一种保留一阶邻近度和二阶邻近度的方法,因此得到的embedding不仅具有网络的局部结构,更有网络的全局结构。
问题描述:
图
G
=
(
V
,
E
)
G=(V,E)
G=(V,E),
V
V
V是所有顶点的集合,
E
E
E是所有边的集合,对于顶点对
(
v
i
,
v
j
)
(v_i,v_j)
(vi,vj)的权重为
s
i
,
j
s_{i,j}
si,j。
- 一阶邻近度,可以用其权重来刻画,比如 s i , j s_{i,j} si,j,表示顶点对 ( v i , v j ) (v_i,v_j) (vi,vj)的一阶邻近度。
- 二阶邻近度刻画的是一对顶点的邻居之间的相似度(如果他们的共同邻居越多,则他们越相似):
因此,经上述分析,我们知道SDNE通过邻接矩阵 S S S刻画一阶邻域和二阶邻域。SDNE采用深度自编码器学习二阶邻域的结果;采用监督方法学习一阶邻近度的结果;并将二者联合训练。
其网络架构如下:
一阶邻近度:
一阶邻近度用于保证网络的局部结构,上式迫使当
s
i
,
j
s_{i,j}
si,j越大时,其低维空间的距离越近。
二阶邻近度:
采用深度自编码器的方式:
但是,
S
S
S通常来说比较稀疏,如果直接按照eq(2)的方式去训练,自编码器会偏向于重建零元素。因此,我们在为非零元素设计一个比较大的误差:
将二者结合在一起,得到最终的目标函数: