图神经网络聚类综述


摘要:

图聚类的目的是将图中的节点划分为几个不同的簇,这是一项基本但具有挑战性的任务。得益于深度学习强大的表示能力,深度图聚类方法近年来取得了巨大的成功。但相应的调查论文相对匮乏,对这一领域做一个总结迫在眉睫。从这个动机出发,我们对深度图聚类进行了全面的调查。首先,我们介绍了公式化的定义,评价和发展在这一领域。其次,基于四个不同的标准,包括图类型,网络架构,学习范式,和聚类方法的深度图聚类方法的分类。第三,我们仔细分析了现有的方法,通过广泛的实验,总结了挑战和机遇,从五个方面,包括图数据的质量,稳定性,可扩展性,区分能力,和未知的聚类数。此外,还介绍了深度图聚类方法在计算机视觉、自然语言处理、推荐系统、社会网络分析、生物信息学和医学等六个领域的应用。


深度图聚类:
在这里插入图片描述


1. 介绍


这篇文章从四个角度对现有作品进行分类:图类型、网络结构、学习范式和聚类方法。更具体地,输入图形类型可以被分类为四个不同的类别:纯结构图、属性图、异构图和动态图。我们分析了每种图类型的特点,并介绍了相应的处理方法。此外,对于网络架构,现有的深度图聚类方法分为多层感知器(MLP)方法、基于图神经网络(GNN)方法 和 混合方法。学习范式分为重构范式、对抗范式、对比范式和混合范式。

在这里插入图片描述


2.深度图聚类发展

大多数早期的方法是基于重构和对抗学习范式。而近年来,对比深度图聚类方法成为主流。根据学习范式将方法大致分为四类。蓝色、红色、黄色和绿色框表示重构方法、对抗方法、对比方法和其他方法

在这里插入图片描述


3. 学习范式以及神经网络聚类方法

各类图神经网络聚类方法对比:

在这里插入图片描述

在这里插入图片描述

3.1 图类型

纯结构图GS、属性图GA、异构图GH和动态图GD的演示。纯结构图仅包含节点之间的连通边。此外,属性图中的每个节点都附加属性。在异构图中,节点类型和边类型是多种的。而动态图的节点和边会随着时间的推移而发生变化

在这里插入图片描述

3.2 学习范式

3.2.1 重构方法

在这里插入图片描述
重构方法的核心思想是迫使网络对图中的特征进行编码,然后从学习到的嵌入中恢复(部分)编码器解码器的图信息。因此,重构方法关注图中的数据内信息,并采用节点属性和图结构作为自我监督信号。重建深度图聚类方法的一般流程如图所示,首先,通过设计的编码器将输入图的节点编码成节点嵌入Z。随后,利用代理任务,如属性重构或链接重构,解码器旨在从学习的嵌入Z恢复图信息。最终,在潜在空间中,聚类方法C将节点分组到不同的聚类中。重构方法的核心设计是编码器结构、解码器结构和重构目标函数。

3.2.2 对抗式方法

在这里插入图片描述
对抗深度图聚类方法旨在通过在生成器和鉴别器之间创建零和博弈来提高特征的质量。具体来说,鉴别器被训练为识别学习到的特征是否来自真实的数据分布,而生成器旨在生成混淆的嵌入以欺骗鉴别器。在这些设置中,生成和区分操作提供了有效的自我监督信号,引导网络学习高质量的嵌入。

3.2.3 对比式方法

在这里插入图片描述
对比深度图聚类方法的关键思想是通过将正样本拉在一起而将负样本推开来提高特征的区分度。因此,对比方法关注数据间的信息,并通过样本之间有意义的关系来构建自我监督信号。对对比方法中的主要技术包括图数据扩充、连体编码器设计、正负样本对构造、负采样、反作用学习损失函数等。


3.3 图神经网络聚类方法

在这里插入图片描述
神经网络聚类方法中的聚类分布对齐损失
在第一步中,以自监督方式训练图形编码器F。然后,聚类方法获得初始聚类分布Q。在第二步中,模型锐化聚类分布Q并获得锐化分布P,其表示具有更高置信度的聚类分布。通过KL散度损失函数将原始分布和锐化分布对齐,对模型进行微调


在这里插入图片描述
神经聚类方法中的聚类伪标记技术
在第一步中,通过自监督预文本任务训练编码器F以获得区分性节点嵌入Z。然后对学习的节点嵌入执行聚类方法C。在第二步中,选择高置信度样本作为伪标签。这些伪标签用作监督信号以进一步微调编码器F

3.4 参考链接

A Survey of Deep Graph Clustering: Taxonomy, Challenge, Application, and Open Resource
https://github.com/yueliu1999/Awesome-Deep-Graph-Clustering

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于神经网络聚类分析可以通过以下步骤实现: 1.准备数据集,将数据集表示为形结构,其中每个节点表示数据点,每个边表示节点之间的关系。 2.使用卷积神经网络(GCN)对进行嵌入,将每个节点表示为低维向量。 3.使用聚类算法(如k-means)对节点嵌入进行聚类,将相似的节点分组在一起。 4.评估聚类结果,可以使用内部评估指标(如轮廓系数)或外部评估指标(如NMI)来评估聚类结果的质量。 以下是一个基于神经网络聚类分析的Python代码示例: ```python import torch import torch.nn.functional as F from torch_geometric.nn import GCNConv from sklearn.cluster import KMeans # 定义卷积神经网络模型 class GCN(torch.nn.Module): def __init__(self, num_features, hidden_size, num_classes): super(GCN, self).__init__() self.conv1 = GCNConv(num_features, hidden_size) self.conv2 = GCNConv(hidden_size, num_classes) def forward(self, x, edge_index): x = F.relu(self.conv1(x, edge_index)) x = self.conv2(x, edge_index) return x # 准备数据集 x = torch.randn(100, 16) # 100个数据点,每个点有16个特征 edge_index = torch.randint(0, 100, (2, 200)) # 随机生成200条边 y = KMeans(n_clusters=5).fit_predict(x) # 生成5个聚类 # 创建模型并训练 model = GCN(num_features=16, hidden_size=32, num_classes=5) optimizer = torch.optim.Adam(model.parameters(), lr=0.01) for epoch in range(100): logits = model(x, edge_index) loss = F.cross_entropy(logits, y) optimizer.zero_grad() loss.backward() optimizer.step() # 对节点嵌入进行聚类 with torch.no_grad(): z = model(x, edge_index).argmax(dim=1).numpy() clusters = KMeans(n_clusters=5).fit_predict(z.reshape(-1, 1)) # 评估聚类结果 from sklearn.metrics import silhouette_score score = silhouette_score(x, clusters) print("Silhouette score:", score) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值