本文是对《Learning Community Embedding with Community Detection and Node Embedding on Graphs》一文的浅显翻译与理解,如有侵权即刻删除。
朋友们,我们在github创建了一个图学习笔记库,总结了相关文章的论文、代码和我个人的中文笔记,能够帮助大家更加便捷地找到对应论文,欢迎star~
Chinese-Reading-Notes-of-Graph-Learning
更多相关文章,请移步:
文献阅读总结:网络表示学习/图学习
Title
《Learning Community Embedding with Community Detection and Node Embedding on Graphs》
——CIKM2017
Author: Sandro Cavallari
总结
文章以DeepWalk为基础学习节点嵌入,并在之基础上进行社区检测优化的ComE算法。具体地,文章提出了优化的闭环:节点嵌入提高社区检测能力,社区检测生成有效的社区嵌入,社区嵌入近而优化节点嵌入。
1 定义
文章所用网络即没有额外信息的基础网络,对任意一个节点,对应有自身嵌入,同时还有其所属的社区分布z_i。
对每个社区,文章都学习对应的社区嵌入。而算法最终的输出为:节点嵌入、节点对应社区的关系、社区嵌入。
文章中出现的各项变量、参数如下:
2 优化
文章将损失函数分为三部分进行优化,在此为逻辑顺畅,略微打乱顺序进行介绍。值得注意的是,文章是在DeepWalk的基础上进行的扩展,因此节点嵌入是通过DeepWalk学习的,只是后续的优化方法不同。
2.1 优化一(一阶相似度)
对单个节点而言,其一阶相似度即与其发生直接交互的邻居,此处的优化目标即两个交互的节点,应当具有相似的嵌入,这种相似性可以用节点嵌入在二维空间的投影距离来判断,即:
2.2 优化二(二阶相似度)
文章认为,每个节点有着两个嵌入:自身嵌入(计算自身一阶相似度时)和对其他节点的环境嵌入(其他节点计算自身相似度时)。在此,文章引入负采样,使得发生交互的节点间嵌入相似。应当注意的是,针对一个源节点计算自身相似度,使用的是自身嵌入,而当源节点成为了其他源节点的邻居节点时,其嵌入就应当使用环境嵌入。
2.3 优化三(高阶相似度)
此部分,文章引入了对社区的检测和嵌入生成。具体地,文章认为节点嵌入是从一个关于社区的多元高斯分布中生成的,因此在优化的时候,应当使得(生成节点嵌入的)分布生成节点嵌入的概率尽可能大(因为在此处节点嵌入已经生成了,所以是一种倒推式的优化):
其中p(z_i=k)是节点v_i属于社区k的概率,而后者即多元高斯分布:
最终,为形成上文所述的闭环,该部分的优化目标为:
2.4 最终损失函数
在优化过程中,文章提出了一个约束diag大于0,即对任意节点,其必然要有一个社区能够对应。
3 推导
在优化上述损失函数的过程中,文章采用了固定一部分,优化另一部分的方法。即先固定节点的自身嵌入和环境嵌入,来优化式8中的后三个参数。其次在后三个参数优化完成后,再返回优化节点嵌入。这样一方面可以快速收敛,另一方面能够防止互相优化导致无法结束优化过程的情况。
3.1 优化参数
首先固定节点的两个嵌入,优化后续三个参数有:
在此,文章使用了期望最大化的方法来完成优化,通过这种方法,三个参数能够迭代地沿上述公式进行更新。
3.2 优化节点嵌入
在参数优化完成后,固定这些参数,近而优化节点嵌入。由于直接优化导致计算量过大,计算嵌入的梯度较为不便,因此文章选择最小化损失函数的上界来代替:
文章指出,替换过后的损失函数能够达到更好的效果。接下来,就是使用随机梯度下降(SGD)进行梯度的计算和更新: