SDNE
前一篇整理了3种常用的图嵌入方法,DeepWalk,LINE和Node2vec。Structural Deep Network Embeddings(结构深层网络嵌入,SDNE)的不同之处在于,它并不是基于随机游走的思想,在实践中比较稳定。
主要思路如上图,会将节点向量 si 作为模型的输入,通过自编码器对这个向量进行降维压缩 zi,然后再重建特征。其损失函数定义为:
O 2 = ∑ ∣ ∣ s i ′ − s i ∣ ∣ 2 2 O_2=\sum ||s_i'-s_i||^2_2 O2=∑∣∣si′−si∣∣22
因为输入的是邻接矩阵,所以这样的重构能够使得结构相似的顶点具有相似的embedding表示向量。所以实际上通过重建学习到的是二阶相似度。
但是与LINE相似,SDNE也想保留一阶和二阶相似度,而且是想要同时优化,以同时捕获局部成对相似性和节点邻域结构的相似性。对于一阶相似度的计算,将架构变成如上图,由左右两个自编码器组成。一阶相似度的目标是计算节点间的相似性,那么可以利用起中间的嵌入得到的隐层向量z,然后计算左侧嵌入和右侧嵌z入间的距离。并可以用拉普拉斯矩阵优化一下计算:
O 1 = ∑ ∣ ∣ z 1 − z 2 ∣ ∣ 2 2 = = 2 t r ( Z T L Z ) O_1=\sum ||z_1-z_2||^2_2==2tr(Z^TLZ) O1=∑∣∣z1−z2∣∣