本文是对《A Unified Framework for Community Detection and Network Representation Learning》一文的浅显翻译与理解,如有侵权即刻删除。
朋友们,我们在github创建了一个图学习笔记库,总结了相关文章的论文、代码和我个人的中文笔记,能够帮助大家更加便捷地找到对应论文,欢迎star~
Chinese-Reading-Notes-of-Graph-Learning
更多相关文章,请移步:文献阅读总结:网络表示学习/图学习
文章目录
Title
《A Unified Framework for Community Detection and Network Representation Learning》
——TKDE2018
Author: 涂存超
总结
文章认为当前的表示学习算法往往关注节点的局部信息,而忽视了网络中基于主题社区的全局信息,因而提出了CNRL算法。该算法是在DeepWalk和node2vec的基础上,增加了社区发现的优化目标,为每个节点分配一或多个可叠加的社区,从而学习得到具有社区属性的节点表征。其结构如下:
1 定义
2 DeepWalk
DeepWalk是网络表示学习领域非常经典的算法,在网络中进行随机游走得到节点序列,并用skip-gram模型从序列中学习节点的向量表征。
具体内容可参考:文献阅读(九)KDD2014-DeepWalk:online learning of social representations
在此,每个节点v都有两个向量形式,即作为中心节点时的表征vi,和作为上下文节点时的表征v’。
3 社区增强
文章认为,在网络中存在着多个社区,不同的社区对应不同主题,并提出了如下的假设:
基于上述假设,文章将社区检测附加在原有算法上,以增强其生成的节点表征的效果。
3.1 社区分配
算法为每个节点序列s中的节点v分配一个里算的社区标签,可计算社区c的条件概率有:
其中,联合概率Pr(c,v,c)可以形式化如下:
其中,Pr(v|c)表示节点v属于社区c的概率,Pr(c|s)表示序列s和社区c的密切程度,则有:
即,序列s中的节点v属于社区c的概率,与两个因素有关,一是在没有序列s时,节点c属于社区v的概率;二是序列s与社区c的密切程度。文章用两种方式来计算Pr(c|v,s)。
3.1.1 基于统计的分配
依照主题模型Latent Dirichlet Allocation (LDA)中吉布斯采样的参数估计方法,有:
3.1.2 基于表示的分配
算法还可以通过节点表征来计算各个概率,有:
其中c为社区c对应的表征向量,s为序列s对应的表征向量,可以通过序列中所有节点求平均得到。
在此,文章指出,通过表征的方式来计算Pr(v|c)会极大影响模型的效果,因此在实际应用中,只通过表征来计算Pr(c|s),而通过统计来计算Pr(v|c)。
3.2 表示学习
3.2.1 损失函数
将DeepWalk和社区增强两部分进行结合,可以得到最终的损失函数如下:
前一部分为DeepWalk原始的损失函数,后一部分有:
3.2.2 最终节点表征
通过社区增量,可以计算得到包含社区信息的节点表征v_c,与节点的原始表征v直接拼接,就得到了节点最终的表征(如最终表征维度若为128,则训练时对两个表征都去64维再拼接)。
其中,对节点的社区表征有: