• 论文解读(CGC)《CGC: Contrastive Graph Clustering for Community Detection and Tracking》


    论文信息

    论文标题:CGC: Contrastive Graph Clustering for Community Detection and Tracking
    论文作者:Namyong Park, Ryan Rossi, Eunyee Koh, Iftikhar Ahamath Burhanuddin, Sungchul Kim, Fan Du, Nesreen Ahmed, Christos Faloutsos
    论文来源:2022, WWW
    论文地址:download 
    论文代码:download

    1 介绍

      本文核心创新点:基于时间演化的聚类算法。2.2

      创新点如下:

      • 网络训练过程中的多层的表示矩阵可以视为多个视图 2.1.1    2.1.3
      • 基于时间的表示交互 2.2.2
      • 高阶结构(三角结构)的应用 2.1.1

      和其他方法对比:

         

    2 Method

    2.1 CGC: Contrastive Graph Clustering

    2.1.1 Multi-Level Contrastive Learning Objective

    Signal: Input Node Features

      对于节点 uu,将其输入特征 fufu 作为正样本,随机选择另一个节点 vv,将其输入特征 fvfv 作为负样本;然后将这些正负样本与节点嵌入 huhu 进行对比。

      对于节点 uu ,设 SFu={fiu}ri=0 是包含一个正样本 (i=0)r 个负样本(1ir)(输入特征)的集合,其中 表示采样。由于输入特征和节点嵌入可以有不同的维数,所以引入参数  WFRd×d 过渡,这里定义一个基于节点特征的对比损失LF

        LF=nu=1logexp((huWFf0u)/τ)rv=0exp((huWFfvu)/τ)(3)

    Signal: Network Homophily

      设 N(u) 表示节点 u 的邻居, NΔ(u) 既是节点 u 的邻居也与节点 u 在相同的三角结构(高阶结构);因此,NΔ(u)N(u)

      从 N(u) 中选择节点 u 的一个正样本,选中 NΔ(u) 中的邻居的概率为 δ/|NΔ(u)|,其他邻居的概率为 (1δ)/|N(u)NΔ(u)|,其中 δ0 决定了 NΔ(u) 中节点的权重,最后从H=E(G, F) 中提取该正样本的节点嵌入 h0u

      为构造负样本,设计了一个破坏函数 C(G,F)。具体来说,定义 C() 通过对 F 进行行变换(row-wise shuffling)返回损坏的节点特征 矩阵˜F ,同时保留图 G 结构,即 C(G,F)=(G,˜F),可以看作是在保持图结构的同时在图上随机迁移节点。然后将GNN编码器应用于 G˜F ,得到负节点嵌入 ˜HRn×d,并随机选择 r 个负样本及其嵌入。

      设 SHu={hiu}ri=0 为包含节点 u 的一个正样本(i=0)和 r1ir)个负样本嵌入的集合。在CGC中,基于同质性的对比损失 LH 被定义为:

        LH=nu=1logexp(huh0u/τ)rv=0exp(huhvu/τ)(4)

    Signal: Hierarchical Community Structure

      设 K={k}L=1 为聚类数集合,CRk×d 为第 个聚类质心矩阵。给定嵌入矩阵 H 和簇质心矩阵 {C}L=1。节点 u 的正样本为节点 u 最相近的 L 个簇质心。而其负样本是从第 个其他 k1 聚类质心中随机选择的。

      设 SCu,={ciu,}ri=0 为包含节点 u 的一个正样本(i=0)和 r 个负样本(1ir)(即质心)嵌入在 k 质心中选择的节点𝑢。CGC定义了一个基于社区的分层对比损失 LC 为:

        LC=nu=1(1LL=1logexp(huc0u,/τ)rv=0exp(hucvu,/τ))(5)

    Multi-Level Contrastive Learning Objective

      多层次的对比性学习目标。上述损失项在多个层次上捕获社区结构上的信号,即单个节点特征(LF)、相邻节点 (LH) 和分层结构的社区 (LC)。CGC联合优化

        L=λFLF+λHLH+λCLC(6)

      其中,λFλHλC  是损失项的权重。

    2.1.2 Encoder Architecture

      作为我们的节点编码器 E,我们使用一个带有平均聚合器的 GNN:

        hlv=ReLU(WGMEAN({hl1v}{hl1uuN(v)}))(7)

    2.1.3 Algorithm

      算法如下:

       

      其中:

      • Π 代表着聚类算法 ,如 kmeans;  
      • {Φ} 代表着聚类分配矩阵;  

    2.2 CGC for Temporal Graph Clustering

      小结导读:后面 2.2.3 会用。

      给定时间图流 ( temporal graph stream)G={Gτ1,,Gτi1} (其中 Gτi 是其中的一个图快照 ),学习到的节点嵌入矩阵  Hi1 和聚类分配矩阵  Φi1 基于直到 i1 之前的图快照( snapshot)。Hi1 和  Φi1 用于反应 Gτi 中的新信息。

      为方便,这里记 Gi:j 表示 ij 的图快照集合,即 {Gτi,,Gτj},其中 Gi:j=(V,Ei:j)Ei:j=jo=iEτo

      下面将描述如何扩展 CGC 用于时间图聚类。

    2.2.1 Temporal Contrastive Learning Objective

      学习表示时,表示一般都是平稳变化。因此,在一个时间跨度范围内观察到的节点的边提供了相似或相关的时间视图。

      给定时间戳 j 和节点 u ,我们将时间戳 j1 时的嵌入 hu,j1 作为其正样本。

      为获得负样本,使用 2.1.1节中使用的破坏函数,得损坏节点特征矩阵 ˜F,使用 E(Gi:j1,˜F) 并视节点 u 对应的嵌入作为负样本(这里的 u 其实不是节点 u ,只是位置对应其他节点 v)。打乱多次特征矩阵 ˜F ,重复上述过程,便可以得到多组负样本。【个人觉得完全有点多此一举,反正都是负样本还不如直接随机选取 r 个样本】

      设 STu,j={hiu,j1}ri=0 包含节点  u 的一个正样本(i=0)和 r 个负样本(1ir)。CGC定义了一个在时间 j 的对比损失 LT

        LT=nu=1logexp(hu,jh0u,j1/τ)rv=0exp(hu,jhvu,j1/τ)(8)

      请注意,Eq.8 与第 2.1.1 节中讨论的目标相结合,其权重为λT,将损失 L 增加为

        L=λFLF+λHLH+λCLC+λTLT(9)

    2.2.2 Encoder Architecture

      对 GNN 编码器进行扩展:使得节点给予最近与该节点交互的邻居更多权重,所以需要根据邻居最近交互的时间来调整邻居权重。

      设 t(u,v) 表示节点 uv 之间边的时间戳,并设 tmaxv=maxuN(v){t(u,v)},即节点 v 与其邻居交互时的最新时间戳。ψ[0,1] 表示时间衰减因子,我们将时间衰减应用于邻域 u 的嵌入 hu 如下:

        td(hu)=ψtmaxvt(u,v)hu(10)

      然后对于具有时间感知能力的邻域聚合,将 Eq.7 中的 hu 替换为其时间衰减版本 td(hu)

    2.2.3 Graph Stream Segmentation

      合并之前的快照生成新快照是基于前后的相似性假设,然而在训练时网络可能产生突变,导致新的快照在某种程度上和之前并不一致,所以需要检测这些变化。

      设 Gseg ={Gτi,,Gτj}ij (i<j) 之间的图流段(graph stream segment) 。给定一个快照 Gτj+1 ,如果 Gτj+1Gseg  相似,我们使用 Gτj+1 扩展当前段 Gseg  ;如果不相似,将启动一个只由 Gτj+1 组成的新的图流段。【该问题为流式图分割 问题】

      解决这个问题的想法是比较出现在 Gseg Gτj+1 两者中的节点嵌入。

      这一步的 GNN 编码器已经基于 Gseg  训练好了,但并没有在 Gτj+1 训练。如果 Gseg  和 Gτj+1 相似,他们对应的表示也相似。那么接下来分析 Gτj+1Gseg.  不相似的情况。

      设 V 表示同时出现在 Gseg Gτj+1 之中的节点集合,设 Hseg V,Hj+1VR|V|×d 分别表示 V 基于 Gseg Gτj+1 的表示。这里定义距离度量函数 d(,)(cosine distance),HsegVHj+1V 之间的距离 Dist(,) 定义为:

        Dist(HsegV,Ht+1V)=MEAN{d((HsegV)i,(Ht+1V)i)iV}(11)

      如果距离超过了一个阈值,则对流进行分段。

      CGC Framework:

      

      GraphStreamSegmentation 算法如下:

      

    2.2.4 Putting Things Together

      CGC在一个增量的端到端框架(Alg. 2).当一个新的图形快照到达时,CGC使用 Alg. 3 (line 3) 自适应地确定一个要从中查找簇的图形快照序列,并使用 Alg. 1 (line 4) 更新聚类结果和节点嵌入。

    3 Experiments

    数据集:基本数据集

      

    数据集:图流

      

    基线实验

      

      

    消融实验

      

     


     

     

    相关论文

    聚类算法 [20, 36, 37, 63–65, 67]

    深度图聚类算法 [6, 40, 48, 57, 61]

    两阶段的 DGC 模型:[28, 57] 

    基于图自编码器的聚类算法:[28]

    基于联合优化框架的聚类算法:[6, 48, 61]


    __EOF__

  • 本文作者: Blair
  • 本文链接: https://www.cnblogs.com/BlairGrowing/p/16175961.html
  • 关于博主: 评论和私信会在第一时间回复。或者直接私信我。
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
  • 声援博主: 如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。
  • 相关阅读:
    基于Qt5的计算器设计
    一篇弄懂二分算法
    Yolov8模型训练报错:torch.cuda.OutOfMemoryError
    【Python简明教程二十二】迭代器
    两个对象比较内部数据的变化,并返回对应key数组
    【经验总结】将markdown文档转换为word(swagger导出word)
    【技术积累】Linux中的命令行【理论篇】【二】
    Scrum敏捷开发如何实施
    单目标追踪——【评测工具】Ubuntu20.04的Python版本的VOT评测工具
    学习笔记-TP5反序列化利用
  • 原文地址:https://www.cnblogs.com/BlairGrowing/p/16175961.html