论文标题 | Attributed Graph Clustering via Adaptive Graph Convolution
论文来源 | IJCAI 2019
论文链接 | https://arxiv.org/abs/1906.01210
源码链接 | https://github.com/karenlatong/AGC-master

TL;DR

这篇论文针对属性图聚类问题提出了自适应的图卷积方法 AGC,主要想法是运用高阶图卷积来捕获图的全局簇结构特征,并且可以对不同的图来自适应地选择合适的阶数。实验部分在不同的基准网络数据集中验证了 AGC 的效果优于当前的 baseline。

Problem Formulation

给定无向图G=(V,E,X)\mathcal{G}=(\mathcal{V}, \mathcal{E}, X),其中V,E\mathcal{V}, \mathcal{E} 分别表示节点集合{v1,v2,,vn}\left\{v_{1}, v_{2}, \ldots, v_{n}\right\} 和边集合,XX 表示所有节点的特征矩阵X=[x1,x2,,xn]Rn×dX=\left[\boldsymbol{x}_{1}, \boldsymbol{x}_{2}, \cdots, \boldsymbol{x}_{n}\right]^{\top} \in \mathbb{R}^{n \times d}AA 表示邻接矩阵{aij}Rn×n\left\{a_{i j}\right\} \in \mathbb{R}^{n \times n}。属性图聚类的目标是将图G\mathcal{G} 中的节点划分到mm 个不同的簇中C={C1,C2,,Cm}\mathcal{C}=\left\{C_{1}, C_{2}, \cdots, C_{m}\right\}

论文的整体工作就是利用 GCN 在属性图中进行社团检测,貌似解决了之前我在学校想解决但是没有解决的问题,这也是看这篇文章的原因。

PS:哎 看完之后好像还是没有解决 看样子是期待太高了。

Algorithm/Model

Graph Convolution

GCN 的背景知识不再赘述,可以参考另一篇博客 图卷积网络 GCN(三)详解三代图卷积网络理论,本文直接从作者对 GCN 的改进说起。

图卷积的公式可以表达为以下形式:

f=Gf\overline{\boldsymbol{f}}=G \boldsymbol{f}

其中f\boldsymbol{f} 表示图信号,f\overline{\boldsymbol{f}} 表示过滤后的图信号,可以理解为图节点特征矩阵XX 的一列值;GG 表示基于拉普拉斯矩阵的一个线性的图滤波器G=Up(Λ)U1Rn×nG = U p(\Lambda) U^{-1} \in \mathbb{R}^{n \times n},其中值表示归一化的拉普拉斯矩阵特征分解矩阵Ls=UΛU1L_{s}=U \Lambda U^{-1}Λ=diag(λ1,,λn)\Lambda=\operatorname{diag}\left(\lambda_{1}, \cdots, \lambda_{n}\right)U=[u1,,un]U=\left[\boldsymbol{u}_{1}, \cdots, \boldsymbol{u}_{n}\right]p(Λ)=diag(p(λ1),,p(λn))p(\Lambda)=\operatorname{diag}\left(p\left(\lambda_{1}\right), \cdots, p\left(\lambda_{n}\right)\right) 表示傅里叶变换的频率响应函数。所以图信号可以使用拉普拉斯矩阵的特征向量为一组基进行表示。

f=Uz=q=1nzquq\boldsymbol{f}=U \boldsymbol{z}=\sum_{q=1}^{n} z_{q} \boldsymbol{u}_{q}

其中z=[z1,,zn]\boldsymbol{z}=\left[z_{1}, \cdots, z_{n}\right]^{\top} 表示这组基的系数,因此图卷积公式可以重写成

f=Gf=Up(Λ)U1Uz=q=1np(λq)zquq\overline{\boldsymbol{f}}=G \boldsymbol{f}=U p(\Lambda) U^{-1} \cdot U \boldsymbol{z}=\sum_{q=1}^{n} p\left(\lambda_{q}\right) z_{q} \boldsymbol{u}_{\boldsymbol{q}}

为了过滤掉图中的高频信号并保留低频信号,所以频率响应函数p()p(\cdot) 应该是递减且非负的,作者就设计了一种图的低通滤波器,令p(λq)=112λqp\left(\lambda_{q}\right)=1-\frac{1}{2} \lambda_{q},📢 注意:拉普拉斯矩阵的特征值范围为 [0,2] 所以才可以定义这种线性函数,所以图滤波器GG 的形式变化为

G=Up(Λ)U1=U(I12Λ)U1=I12LsG=U p(\Lambda) U^{-1}=U\left(I-\frac{1}{2} \Lambda\right) U^{-1}=I-\frac{1}{2} L_{s}

所以对于图中所有节点特征进行卷积的的计算公式可以表示为

Xˉ=GX=(I12Ls)X\bar{X}=G X = (I-\frac{1}{2} L_{s})X

作者指出论文中提出的滤波器和三代图卷积 GCN 的不同点主要在于:GCN 的一阶近似滤波器G=ILsG=I-L_s,其中p(λq)=1λqp\left(\lambda_{q}\right)=1- \lambda_{q} 不是低通滤波的,因为在(1,2](1,2] 特征值区间频率响应函数是负的!为什导致负数了呢,难道是近似计算太多导致最后结果都不是图谱卷积? 🤔

思考:重新反思下论文中想法与传统 GCN 的不同点:

  • 二代图卷积的思路是使用KK 阶多项式来近似表示频率响应函数gθ(Λ)k=0K1θkΛkg_{\theta}(\Lambda) \approx \sum_{k=0}^{K-1} \theta_{k} \Lambda^{k}.
  • 三代图卷积是直接使用一阶来近似卷积,然后通过训练和堆叠卷积层来达到多阶的效果。
  • 传统的图卷积都是通过训练来学习卷积核参数,而论文中直接自定义了低通图滤波器GG,即图卷积核参数。

综上,那么最直观地导致结果是论文中提出的方法 node embedding 都不需要训练了,直接通过拉普拉斯矩阵进行 Smoothing 就可以得到 node embedding,厉害厉害 👏

k-Order Graph Convolution

剩下的就是如何使用多阶图卷积来捕获图全局的计算方法了。

根据上述的一阶图卷积,那么kk 阶图卷积的计算公式如下

Xˉ=(I12Ls)kX\bar{X}=\left(I-\frac{1}{2} L_{s}\right)^{k} X

对应的图滤波器和频率响应函数为

G=(I12Ls)k=U(I12Λ)kU1G=\left(I-\frac{1}{2} L_{s}\right)^{k}=U\left(I-\frac{1}{2} \Lambda\right)^{k} U^{-1}

p(λq)=(112λq)kp\left(\lambda_{q}\right)=\left(1-\frac{1}{2} \lambda_{q}\right)^{k}

节点特征的kk 阶迭代的计算公式如下所示,

xi(0)=xixi(1)=12(xi(0)+(vi,vj)Eaijdidjxj(0))xi(k)=12(xi(k1)+(vi,vj)Eaijdidjxj(k1))\overline{\boldsymbol{x}}_{i}^{(0)}=\boldsymbol{x}_{i}\\ \overline{\boldsymbol{x}}_{i}^{(1)}=\frac{1}{2}\left(\overline{\boldsymbol{x}}_{i}^{(0)}+\sum_{\left(v_{i}, v_{j}\right) \in \mathcal{E}} \frac{a_{i j}}{\sqrt{d_{i} d_{j}}} \overline{\boldsymbol{x}}_{j}^{(0)}\right) \\ \cdots \\ \overline{\boldsymbol{x}}_{i}^{(k)}=\frac{1}{2}\left(\overline{\boldsymbol{x}}_{i}^{(k-1)}+\sum_{\left(v_{i}, v_{j}\right) \in \mathcal{E}} \frac{a_{i j}}{\sqrt{d_{i} d_{j}}} \overline{\boldsymbol{x}}_{j}^{(k-1)}\right)

那么还剩下个问题,如何选择合适大小的kk 值呢?在下一节就会讲到。

Clustering AGC

至于聚类方法,论文中采用的是谱聚类将过滤后的特征矩阵Xˉ\bar{X} 划分为mm 个簇。

首先通过特征矩阵来计算节点间的距离

K=XˉXˉTK=\bar{X} \bar{X}^{T}

为了使距离矩阵是对称且非负的,因此将矩阵进行对称化

W=12(K+K)W=\frac{1}{2}\left(|K|+\left|K^{\top}\right|\right)

其中|\cdot| 表示将矩阵中的值求绝对值。

根据距离矩阵WW 求解mm 个最大的特征值然后使用 k-means​ 算法获得最终的划分结果。

对于论文中的kk 阶图卷积还有个关键问题: 如何选择的kk 值?,因为kk 值太大会导致 over-smoothing 问题。

首先给出 cora 数据集中不同kk 值的可视化结果,发现k=12k=12 时分类效果较好。

cora t-SNE

为了选择合适的kk ,论文中选用一个聚类性能指标 簇内距离 来判断,主要意义是可以表示不同聚类C\mathcal{C} 的效果。计算公式如下图所示

intra(C)=1CCC1C(C1)vi,vjC,vivjxˉixˉj2\operatorname{intra}(\mathcal{C})=\frac{1}{|\mathcal{C}|} \sum_{C \in \mathcal{C}} \frac{1}{|C|(|C|-1)} \sum_{v_{i}, v_{j} \in C, \atop v_{i} \neq v_{j}}\left\|\bar{x}_{i}-\bar{x}_{j}\right\|_{2}

kk 从 1 进行迭代,论文中找到的是局部最优解,如果intra(C)\operatorname{intra}(\mathcal{C}) 开始增大时就停止迭代,因为好的聚类结果是簇内距离小而簇间距离大。

怎么说呢?这个指标就类似图聚类中模块度 Modularity,根据指标度量聚类效果从而选择最好参数kk

好像有什么不对的地方?就像有个量筒我要往里面倒 100 ml 水,本来是想一次性倒完那么可能误差大一点;那现在我倒很多次,每次倒一下看看是不是到了 100 ml,不够就再加。😔

整体算法步骤可以描述如下

AGC algorithm

Experiments

数据集采用了四个经典属性图网络 Cora,Citeseer,Pubmed,Wiki,实验效果如下所示

experiment1

还展示了不同kk 值对聚类性能的影响。

experiment2

Thoughts

  • 论文中自定义了一种低通滤波图卷积核并通过理论分析其合理性,优势很明显是模型不需要训练,但也存在一些问题。
  • 节点原始特征经过论文定义的图卷积 AGC,节点特征维度并没有任何变化,因此就不太适用于高维度特征图,但是低维度的图可以尝试下。
  • 对于图聚类中簇数量如何选择这个根本问题还是没有解决。

Contact