图上的机器学习系列-聊聊SDNE

前言


本篇继续我们的Graph Embedding之旅途。今天要聊的是SDNE(Structural Deep Network Embedding)。结合的论文为《Structural Deep Network Embedding》,这是2016年发表的一篇论文,与node2vec在同一年问世。总体上来,SDNE更像LINE,而不像Deepwalk。有了LINE的基础后,理解这篇文章会较快。

----广告时间,欢迎关注本人微信公众号

图上的机器学习系列-聊聊SDNE

 

算法原理


让我们还是带着问题来理解该方法。
怎么刻画节点之间的相似性?
在图上,一阶相似度就是两点之间的边权重,二阶相似度的定义如下:

图上的机器学习系列-聊聊SDNE

发现没有,与LINE一模一样!所以做事情可以先站在前人的肩膀上去发挥,只有有所创新,就能出价值。

从节点到向量,怎么生成?
先回忆一下LINE,它是分别通过最优化求解一阶、二阶相似度的损失函数,得到了两个向量表示,然后简单地把两个向量拼接到了一起作为节点最终的向量表示。SDNE在这一步上有所改进,它定义一个损失函数如下所示:
图上的机器学习系列-聊聊SDNE

这里同时包括了一阶、二阶损失函数,然后最优化求解该函数就可以得到向量表达。伪代码如下:

图上的机器学习系列-聊聊SDNE

吐嘈一下,原论文中虽然放出了这个图作为其架构图,但我个人认为这个图画得非常差,信息传达极其有限,只是一个简单的示意图,完全体现不出算法的核心原理与推导过程。

图上的机器学习系列-聊聊SDNE


小结


SDNE也是一种图嵌入的方法,它与LINE具有相同的一阶、二阶相似度。不同的是,它使用了深度自编码器方法来捕获二阶相似度。然后又用一个损失函数同时包括了一阶相似度损失、二阶相似度损失,最后最优化求解得到向量表示。

参考资料


1. 提出SDNE的论文《Structural Deep Network Embedding》
2. 提出LINE的论文《LINE: Large-scale Information Network Embedding