文章链接:https://arxiv.org/pdf/1909.12201.pdf
源码链接:https://github.com/shchur/overlapping-community-detection
TL;DR
近年来 GNN 在图相关任务中取得了重大成果但在社团检测领域应用较少。目前基于深度学习的社团检测模型都只处理了非重叠的社团检测问题,而现实中的社团都是重叠的。因此本文中提出一个可以检测重叠社团的 GNN 模型。
Model / Algorithm
问题定义
对于一个无向无权图G, 可以用二值邻接矩阵A∈{0,1}N×N 进行表示,其中包含N 个节点V={1,…,N},M 条边E={(u,v)∈V×V:Auv=1}。每个节点具有D 维属性X∈RN×D。
重叠社团检测的任务是将图中的每个节点划分到C 个社团中。这种分配的过程可以使用非负隶属矩阵表示:F∈R≥0N×C,其中Fuc 表示节点u 在社团c 中的隶属度。特殊情况下矩阵F∈{0,1}N×C,有些节点可能不属于社团,有些节点可能属于多个社团。
对于社团检测问题,如果假定基于社团的图生成模型为p(G∣F),社团检测任务就是从给定的图G 中推断出隶属关系矩阵F。
NOCD Model
本文中提出的 NOCD (Neural Overlapping Community Detection)模型主要想法是结合 GNN 和 Bernoulli-Poisson 概率模型。
Bernoulli-Poisson 模型
伯努利-泊松模型是一个重叠社团的图生成模型。对于给定的隶属关系矩阵F∈R≥0N×C,可以得到邻接矩阵Auv 采样为:
Auv∼Bernoulli(1−exp(−FuFvT))
其中,行向量Fu 表示节点u 的社团隶属关系。从上式可以看出节点u 和节点v 之间属于相同社团的数量越多说明两节点之间存在边的概率越高。
模型定义
论文中将节点隶属矩阵F 直接作为模型的输出来生成:
F:=GNNθ(A,X)
实验中论文直接使用了两层 GCN,计算方式如下:
F:=GCNθ(A,X)=ReLU(A^ReLU(A^XW(1))W(2))
其中A^=D~−1/2A~D~−1/2,A~=A+IN,D~ii=∑jA~ij是度矩阵。
模型的输出层增加了非线性单元 ReLU 来保证输出是非负的。
对于伯努利-泊松模型的负对数似然函数为:
−logp(A∣F)=−(u,v)∈E∑log(1−exp(−FuFvT))+(u,v)∈/E∑FuFvT
由于现实中的图是非常稀疏的,因此上式中的第二项对于损失函数的贡献较大。可以通过不平衡分类的方法来消除这两项的不平衡:
L(F)=−E(u,v)∼PE[log(1−exp(−FuFvT))]+E(u,v)∼PN[FuFvT]
其中PE 和PN 分别表示边存在或者不存在的均匀分布。
其它论文中的方法通常是直接优化隶属矩阵F , 本文中直接通过最小化对数似然函数的值来调整神经网络的参数:
θ⋆=θargminL(GNNθ(A,X))
Experiments
实验中采用标准的 Facebook 数据集和作者自己提供的四个数据集:Chemistry、Computer Science、Engineering 和 Medicine。
对于生成的隶属矩阵,作者采用隶属阈值ρ=0.5 来判定是否属于某社团。对于评价指标,文中仅使用了重叠的 NMI 值来对比不同模型的结果。NOCD-G 表示以邻接矩阵A 作为节点属性输入,NOCD-X 表示以原节点属性值作为输入。
联系作者