CommunityGAN Community Detection with Generative Adversarial Nets

CommunityGAN Community Detection with Generative Adversarial Nets

这篇文章主要的目标是在建模一个关于图节点的表征。在这个表征中,希望能够把节点的社区性质表达出来。

这样的话,社区的区分之间就可以有重叠。

Introduction

社区检测问题:识别和分析共享高度相似属性或函数的顶点组

传统的问题假设是一个点只属于一个社区。如果把这个限制放开,重叠的社区检测问题是有很大研究价值的。

现在关于图的一些问题(比如说链接预测、推荐、节点分类等)是通过对节点进行表征,即先对整个图进行建模,之后的第二个模型再进行进一步的预测。

然而,由于社区的密集重叠,这种嵌入在重叠的社区检测问题中的应用仍然存在许多局限性。

Generally, the useful information of vertex embedding vectors is the relevant distance of these vectors, while the specific value in vertex embedding vectors has no meanings.一般来说,顶点嵌入向量的有用信息是这些向量的相关距离,而顶点嵌入向量中的特定值没有意义。(比如说node2vec,LINE等等)

如果要给一些顶点特定的向量值,我们可能要考虑用一些其他的方法(比如说逻辑回归等等)。关于检测社区,一般考虑一些邻近算法,NN、k-NN。我们试图在一个统一的框架中同时进行社区检测和网络嵌入,并且去解决社区重叠的问题(解决密集的重叠问题to solve the dense overlapping problem)。

1558151909997

关注motif,也就是图的结构(比如说环)

Thus in this paper, unlike most previous works considering relationship between only two vertices (the relationship between a center vertex and one of the other vertices in a window), we try to generate and discriminate motifs.在本文中,不像以往的大多数工作只考虑两个顶点之间的关系(一个中心顶点和窗口中的另一个顶点之间的关系),我们试图生成和区分motifs。

RELATEDWORK

Community Detection

多种不同角度的社区检测算法:

  • One direction is to design some measure of the quality of a community like modularity, and community structure can be uncovered by optimizing such measures.一个方向是设计一些度量社区质量的方法,比如模块化,通过优化这些度量方法可以发现社区结构。

  • Another direction is to adopt the generative models to describe the generation of the graphs, and the communities can be inferred by fitting graphs to such models.另一个方向是采用生成模型来描述图的生成,通过拟合图来推断群落。

  • Moreover, some models focus on the graph adjacency matrix and output the relationship between vertices and communities by adopting matrix factorization algorithms on the graph adjacency matrix.此外,一些模型侧重于图的邻接矩阵,通过对图的邻接矩阵采用矩阵因子分解算法,输出顶点与社区之间的关系。

  • These models often consider the dense community overlapping problem and detect overlapping communities.这些模型经常考虑密集的社区重叠问题,并检测出重叠的社区。

    However, the performance of these methods are restricted by performing pair reconstruction with bi-linear models.然而,由于采用双线性模型进行对重建,限制了这些方法的性能。

Graph representation learning图表示学习

对于一般图的表征学习:

  • DeepWalk:shows the random walk in a graph is similar to the text sequence in natural language.显示图中的随机游走类似于自然语言中的文本序列。
  • Node2vec:extends the idea of DeepWalk by proposing a biased random walk algorithm, which provides more flexibility when generating the sampled vertex sequence.进一步扩展了深度步的思想,提出了一种有偏随机步算法,在生成采样顶点序列时提供了更大的灵活性。
  • LINE:learns the vertex representation preserving both the first and second order proximities.首先学习保留一阶近似和二阶近似的顶点表示。
  • GraRep:applies different loss functions defined on graphs to capture different k-order proximities and the global structural properties of the graph.应用图上定义的不同损失函数来捕捉图的不同k阶近似性和全局结构特性。
  • GraphGAN:proposes a unified adversarial learning framework, which naturally captures structural information from graphs to learn the graph representation.提出了一种统一的对抗性学习框架,它可以自然地从图中获取结构信息来学习图的表示形式。
  • ANE:utilizes GAN as a regularizer for learning stable and robust feature extractor.利用GAN作为正则化器来学习稳定鲁棒的特征提取器。

For community detection tasks, we have to adopt other clustering algorithms on vertex embeddings, which cannot handle the dense community overlapping problem.如果用表征来解决社区检测问题,得采用其他基于顶点嵌入的聚类算法,但是这样无法处理密集的社区重叠问题。

CommunityGAN可以直接将顶点的成员关系输出到社区。

Unified framework for graph representation learning and community detection图表示学习和社区检测的统一框架

最初的想法是从矩阵、张量分解开始的。但是,这样没办法处理大规模数据。

EMPIRICAL OBSERVATION经验观察

通过分析一些真实的网络来得到一些信息。

数据:在线社交网络(online social network),协作网络(collaboration network),产品网络(product network)

Empirical Observations经验观测值

两个关键问题

  • How do the communities contribute to the generation of motifs?社区如何为图结构的产生做出贡献?
  • What is the change in motif generation with communities overlapping?随着群落的重叠,图结构产生的变化是什么?

第一个问题

How do the communities contribute to the generation of motifs?社区如何为图结构的产生做出贡献?

研究方法:

  • randomly select one community.随机选择一个社区。

  • sample 2/3/4 vertices from this community and judge whether they could compose a motif or not.从这个群落中选取2/3/4个顶点作为样本,判断它们是否可以构成一个motif。

    • 为什么是只选取2/3/4个顶点呢?

      we mostly focus on a particular kind of motifs (clique), we only demonstrate the occurrence probability of 2/3/4-vertex cliques.我们主要关注一种特殊的结构(群),我们只证明2/3/4顶点群的出现概率。

      数据表明,一个群落中顶点群的平均出现概率远高于从整个网络中随机选取的顶点群。the average occurrence probabilities of cliques for vertices in one community are much higher than that for vertices randomly selected from the whole network.

      1558175087728

      (表2:从所有顶点或从一个社区采样的顶点的团出现的概率。R:从所有顶点。C:来自一个社区。)

  • 重复很多次,得到在一个社区中某一个motif发生的概率

第二个问题

What is the change in motif generation with communities overlapping?随着群落的重叠,图结构产生的变化是什么?

有些人的研究2-clique概率和社区重叠之间的关系,表明:两个顶点共有的社区越多,它们成为2-clique的概率就越高。

我们进一步探究3-clique和4-clique:the probability curve increases in the overall trend as the number of shared communities increases.随着共享社区数量的增加,总体趋势的概率曲线呈上升趋势。(在下图中有直观的感受)

1558175440443

Such observation accords with the base assumption of AGM framework that vertices residing in communities’ overlaps are more densely connected to each other than the vertices in a single community.这种观察符合AGM框架的基本假设,即居住在社区重叠部分的顶点之间的联系比单个社区中的顶点更为紧密。

METHODOLOGY方法论

(前方数学预警!!!)

CommunityGAN Framework

本篇论文我们只关心cliques这种结构。we only focus on a particular kind of motifs: cliques

根据上面的定义, M ( v c ) M(v_c) M(vc)可以被视为从 p t r u e ( m ∣ v c ) p_{true}(m|v_c) ptrue(mvc)中的一组观察到的结构。

生成器G和判别器D在做一个minimax游戏,目标函数:
min ⁡ θ G max ⁡ θ D V ( G , D ) = ∑ c = 1 V ( E m ∼ p t r u e ( ⋅ ∣ v c ) [ log ⁡ D ( m ; θ D ) ] + E s ∼ G ( s ∣ v c ; θ G ) [ log ⁡ ( 1 − D ( s ; θ D ) ) ] ) \min_{\theta_G}\max_{\theta_D}V(G,D)=\sum_{c=1}^V(E_{m∼p_{true}(\cdot|v_c)}[\log D(m;\theta_D)]+E_{s∼G(s|v_c;\theta_G)[\log(1-D(s;\theta_D))]}) θGminθDmaxV(G,D)=c=1V(Emptrue(vc)[logD(m;θD)]+EsG(svc;θG)[log(1D(s;θD))])
CommunityGAN的框架:

1558177236986

判别器D:从 p t r u e ( ⋅ ∣ v c ) p_{true}(\cdot|v_c) ptrue(vc)中采正样例,从 G ( ⋅ ∣ v c ; θ G ) G(\cdot|v_c;\theta_G) G(vc;θG)中采负样例

CommunityGAN Optimization

∇ θ D V ( G , D ) = ∑ c = 1 V ( E m ∼ p t r u e ( ⋅ ∣ v c ) [ ∇ θ D log ⁡ D ( m ; θ D ) ] + E s ∼ G ( s ∣ v c ; θ G ) [ ∇ θ D log ⁡ ( 1 − D ( s ; θ D ) ) ] ) ∇_{θ_D}V(G,D)=\sum_{c=1}^V(E_{m∼p_{true}(·|vc)}[∇_{\theta_D}\log D(m;\theta_D)]+E_{s∼G(s|v_c;\theta_G)}[∇_{\theta_D}\log(1-D(s;\theta_D))]) θDV(G,D)=c=1V(Emptrue(vc)[θDlogD(m;θD)]+EsG(svc;θG)[θDlog(1D(s;θD))])

s是离散的:
∇ θ D V ( G , D ) = ∇ θ D ∑ c = 1 V E s ∼ G ( ⋅ ∣ v c ) [ log ⁡ ( 1 − D ( s ) ) ] = ∑ c = 1 V E s ∼ G ( ⋅ ∣ v c ) [ ∇ θ D log ⁡ G ( s ∣ v c ) log ⁡ ( 1 − D ( s ) ) ] ) ∇_{θ_D}V(G,D)=∇_{θ_D}\sum_{c=1}^VE_{s∼G(·|v_c)}[\log(1-D(s))]=\sum^V_{c=1}E_{s∼G(\cdot|v_c)}[∇_{\theta_D}\log G(s|v_c)\log(1-D(s))]) θDV(G,D)=θDc=1VEsG(vc)[log(1D(s))]=c=1VEsG(vc)[θDlogG(svc)log(1D(s))])
(上面这个式子是怎么变的没有看懂……)

A Naive Implementation of D and G

最简单的想法就是直接上各种函数(sigmod,softmax)

For the discriminator D, intuitively we can define it as the multiplication of the sigmoid function of the inner product of every two vertices in the input vertex subset s.对于判别器D,我们可以直观地将其定义为输入顶点子集s中每两个顶点的内积的sigmoid函数的乘积。
D ( s ) = ∏ ( u , v ) ∈ s , u ̸ = v σ ( d u T ⋅ d v ) D(s)=\prod_{(u,v)\in s,u\not=v}\sigma(d_u^T\cdot d_v) D(s)=(u,v)s,u̸=vσ(duTdv)
其中 d u , d v ∈ R k d_u,d_v\in\R^k du,dvRk是在判别器中节点 u u u v v v的k维向量表示。用 θ D \theta_D θD来表示判别器对于顶点所生成的空间。

对于生成器G:

to generate a vertex subset s covering vertex vc , we can regard the subset as a sequence of vertices为了生成一个覆盖顶点vc的顶点子集s,我们可以把这个子集看作一个顶点序列: ( v s 1 , v s 2 , . . . , v s m ) (v_{s_1},v_{s_2},...,v_{s_m}) (vs1,vs2,...,vsm) v s 1 = v c v_{s_1}=v_c vs1=vc。G的定义如下:
G ( s ∣ v c ) = G v ( v s 2 ∣ v s 1 ) G v ( v s 3 ∣ v s 1 , v s 2 ) . . . G v ( v s m ∣ v s 1 , . . . , v s m − 1 ) G(s|v_c)=G_v(v_{s_2}|v_{s_1})G_v(v_{s_3}|v_{s_1},v_{s_2})...G_v(v_{s_m}|v_{s_1},...,v_{s_{m-1}}) G(svc)=Gv(vs2vs1)Gv(v

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值