论文信息:Tian, Fei, et al. “Learning Deep Representations for Graph Clustering.” AAAI. 2014.
来自微软亚洲研究院,这是最早将深度学习应用于图聚类问题(graph clustering)的文章。论文的思路非常简单,首先将自编码器(autoencoder)应用到图结构中进行特征提取,然后使用 k-means 聚类。这种思路的 motivation 源于谱聚类(spectral clustering)。
由于自编码器的计算复杂度 O(n) (指训练好之后的前向传播过程) 要远低于谱聚类中的特征分解 O(n3) ,因此这个方法计算复杂度低于谱聚类。其次,当加入稀疏性限制之后,自编码网络可以转化为稀疏自编码,而稀疏谱聚类却无法直接实现。
个人感觉作者提出的这两个优点都颇为牵强。关于第一个优点,抛开模型的训练时间去谈预测时间有点耍流氓了,更何况文中使用的还是深层的栈式自编码网络(SAE);其次,拿稀疏性去要求谱聚类,这是以己之长比人之短,稀疏性只是为了避免自编码网络自身的缺陷而提出的改进策略,对图聚类的结果并没有实质的提升效果,作者也只是说这能 “improve the efficiency of the data processing”。
模型的核心结构是以稀疏自编码网络为基本单元构建的栈式自编码网络。给定一个 n 个节点的图 G ,其相似度矩阵(或邻接矩阵) S , 可以将 S 看成是由 n 个实例组成的训练集,每个实例即为矩阵的一行。将规则化了的训练集 D−1S 作为模型的输入,模型的输出即为提出的特征,将这些特征作为k-means的输入,得到最终结果。
step1
得到graph的 n×n 的邻接矩阵S和度矩阵Dstep2
将 D′S 作为SAE的输入,实际上是graph有n个node,作为n个sample的训练集输入到 SAE中,每个sample的feature的维度是n表示该点与其他各点的连接情况。step3
训练SAE,文中采用的是稀疏自编码的栈式形式。(自编码器一般都采用lbfgs的最优化策略来bp,效率和效果较好)step4
取栈底的AE的hidden层的vector作为node embedding的结果step5
将embedding结果作为k-means的输入,进行graph cluster,最后用 NMI 来评价cluster的结果优点:
1. 速度快,相比于谱聚类(涉及了EVD)
2. 对于稀疏图而言,SAE有更好的表达效果
3. SAE更易于扩展成更deep的structure
缺点:
1. 需要遍历所有的node,存储所有node的邻接点信息,对于big graph 可能在效率上不怎么work
2. 只是考虑了1-hop的信息,embedding的效果可能不够好
(参考自BVL的博客:http://blog.csdn.net/bvl10101111/article/details/54292016 )
算法复杂度: O(ncd) (不包括k-means的复杂度)
d : 隐藏层最大节点数
c : 节点平均度 (没有理解是咋来的…)
cd 可以认为是常数
自编码器的时间复杂度:
假设自编码器三层节点数分别为 n1,n2,n3 . 要要得到隐藏层激活值,需要进行一次矩阵乘法(实际上是 n1 向量与 n1×n2 矩阵相乘), 需要进行 n1×n2 次运算,由于输入层 n1 和输出层节点数 n2 均为固定值,那么它的前向传播时间复杂度为 O(n2)
论文信息:Yang, Liang, et al. “Modularity Based Community Detection with Deep Learning.” IJCAI. 2016.
这篇文章与上一篇文章的思路非常类似,依然是使用自编码网络进行特征提取,然后k-means聚类。只不过将其中的拉普拉斯矩阵替换为模块度矩阵(modularity matrix)。此外,模型还扩展到了半监督学习,利用已知邻接节点是否同属一个社团的信息(community menbership constraints)来提升社团发现的结果。
模块度由Newman在2006年提出,后来他自己证明了模块度的最优化等价于是在做谱聚类。
模块度 Q 由社团内部的连边与随机情况下的连边数目的差异来定义。考虑含有两个社团的网络,则:
hi 为社团成员指示向量:
kikj2m 是在连边随机分布情况下节点 i 和 j 之间的期望连边数目
模块度矩阵定义为 B=[bij]∈Rn×n ,其中 bij=aij−kikj2m 。模块度可写成:
对于 Q 的最优化是NP-hard的,对其进行近似。将 hi 放松到可以取任意实数值,并限制 hTh=n ,即可通过瑞利商(Rayleigh Quotient)定理求得最优解。
对于 k>2 的情况,社团成员指示向量变为矩阵 H=[hij]∈Rn×k ,此时:
问题的解即为模块度矩阵的的最大k个特征向量。
细节请参考论文:Newman, Mark EJ. “Finding community structure in networks using the eigenvectors of matrices.” Physical review E 74.3 (2006): 036104.
除使用的矩阵不同之外,其它各方面与上一篇文章大同小异,这篇文章不再强调稀疏性,转而强调神经网络的非线性表达能力(nonlinear representation power),例如节点之间的关系(如距离)可能不一定是线性的。
作者在多个人工合成数据集和社交网络数据集上与多个社团发现算法(SP,EO,FUA,MABA,FN,FEC,Infomap)进行了对比。结果表明,在人工合成数据集GN上,DNR优于所有其它对比算法;在LFR人工数据集上,DNR整体优于其他对比算法,在社团混合系数较低时,Infomap对于小社团的检测有轻微优势。在社交网络数据集上,使用L2范数及交叉熵的DNR模型优于其它所有对比算法。
由于使用了模块度,因此很明显DNR模型的结果是要优于GraphEncoder的。