One2Multi Graph Autoencoder for Multi-view Graph Clustering(有代码)

提出一种新的one2multigraph自编码器框架,用于属性多视图图聚类,能有效捕获多图共享特征并改进聚类结果。采用深度学习技术,联合优化簇标签分配与节点嵌入。

简要概括

这篇文章是针对多视图图聚类,大部分较为传统,但是也有自己创新的想法在里面,下面简要记录一下,方便以后回来看。

摘要(翻译过来的,建议看英文)

多视图图聚类是一种对具有多个视图的图进行划分的方法,这些视图往往提供更全面但更复杂的信息,近年来受到了广泛的关注。虽然在多视图图聚类方面已经做了一些努力并取得了不错的性能,但大多数聚类方法都采用了较浅的模型来处理多视图图内部的复杂关系,这严重限制了多视图图信息的建模能力。本文首次尝试将深度学习技术用于属性多视图图聚类,提出了一种新的任务引导的one2multigraph自编码器聚类框架。one2multigraph图形自动编码器能够通过使用一个信息图形视图和内容数据重构多个图形视图来学习节点嵌入。因此,可以很好地捕获多个图的共享特征表示。此外,提出了一种自训练聚类目标来迭代改进聚类结果。通过将自训练和自编码器重构集成到一个统一的框架中,我们的模型可以联合优化适合图聚类的簇标签分配和嵌入。在多视图数据集上的实验很好地验证了我们模型的有效性。

讲真的,不如直接看英文,因为中文翻译一些地方不对,影响理解,而且会对你的论文写作有影响,深受其害

接下来就简单说了,直接上图

在这里插入图片描述
一个数据对应多个图,就是比如你,李华,小文。你们三个是同学,所以这是一个关系图,同时你和李华是好朋友,这是一个图。你和小文还是表兄弟,这又是一个图。人是你们三个人,但是有三个不同的邻接矩阵A,作者就是先找一个最重要的图,也就是最有代表性的图来用,也就是那个Max modularity,就是比如表兄弟关系最重要,所以直接只用这个图。然后通过一个两层GCN网络获得中间层表达Z,然后就是下面的的学生t分布弄得一个监督约束(PS:挺多无监督论文都用,起一个自监督训练的作用)。然后右边的Decoder就是解码器,但是它并不是直接Z和Z的转置相乘,中间加了一个W,其实想想也是,你不加个W,你想用表兄弟网络构建同伴同学网络,我感觉不可能,对吧。这就完事了,这篇论文比较简单。
对了,补充一下,其实找出那个最重要的图的方法很简单,就是把每一个A和数据X分别输入一个单层GCN网络,得到一个特征编码,然后用k-means聚类,效果最好的,就是最适合的。

损失

在这里插入图片描述
这个就是邻接矩阵A的重建损失
在这里插入图片描述
这个就是自监督损失
总的损失就是把上面两个加起来,如下
在这里插入图片描述

代码链接和论文结果

代码链接
论文链接
在这里插入图片描述

总结

我也是刚入门GNN没多久,大家一起学习。这篇论文有代码。
最后说一下自己的想法:
1.如果一开始不是选一个最好的,而是给不同的A不同的权值,都用上不知道效果会不会好,或者把作者的前找出的结果的前K名都分配权重而不是只用一个,感觉效果多少会好一点,毕竟数据集算是扩充了。或者解码只要求解码出前K个重要的就可以了。
2.不知道对中间层Z做一个自表示,然后对自表示加一些稀疏低秩的约束,然后谱聚类效果会不会好。
3.给中间层Z,再加一个对抗约束,让他服从个一个先验分布会怎么样。
4.如果对于X来说的话,做一些数据扰动,类似于MGAE: Marginalized Graph Autoencoder for Graph Clustering 这篇论文,让X也变化,配着不同的A,会怎么样。

深度学习结构聚类方法在单细胞RNA测序(scRNA-seq)数据中的应用,旨在通过结合自编码器和图神经网络(GNN),提升对复杂生物数据的表征能力和聚类效果。这种方法利用了自编码器的非线性特征提取能力以及图神经网络对数据拓扑结构的建模优势。 ### 深度结构聚类的基本框架 1. **自编码器的作用** 自编码器是一种无监督学习模型,其主要目标是学习输入数据的低维潜在表示,并能够重构原始数据。对于单细胞RNA测序数据,自编码器可以用于降噪、特征提取和维度压缩。这种过程有助于去除技术噪声并保留生物学上有意义的特征[^1]。 2. **图神经网络的作用** 图神经网络被设计用于处理具有图结构的数据,例如单细胞RNA测序数据中细胞之间的相互作用或相似性关系。通过构建一个基于细胞间相似性的邻接矩阵,图神经网络能够捕捉细胞间的高阶依赖关系,从而提供更准确的潜在空间表示[^1]。 3. **联合优化策略** 为了实现深度结构聚类,自编码器与图神经网络通常会进行联合训练。具体而言,自编码器负责生成低维嵌入向量,而图神经网络则利用这些向量进一步细化潜在空间的结构。此外,聚类损失函数(如K-means损失)会被引入到整个模型中,以指导模型学习适合聚类的表示形式。这一联合优化策略能够确保最终的潜在空间既保留了数据的主要特征,又具备良好的可分性[^1]。 4. **模型的输出与聚类结果** 在训练完成后,模型的潜在空间表示可以直接作为聚类算法(如K-means)的输入。由于该潜在空间经过了自编码器和图神经网络的联合优化,因此它能够显著提高聚类的准确性与鲁棒性。实验表明,这类方法在多种单细胞RNA测序数据集上均表现出优越的性能。 ### 具体实现步骤 虽然具体的代码实现可能因研究需求而异,但以下是一个简化的伪代码示例,展示了如何结合自编码器和图神经网络来实现深度结构聚类: ```python import torch import torch.nn as nn from torch_geometric.nn import GCNConv class AutoEncoder(nn.Module): def __init__(self, input_dim, latent_dim): super(AutoEncoder, self).__init__() # 编码器部分 self.encoder = nn.Sequential( nn.Linear(input_dim, 512), nn.ReLU(), nn.Linear(512, latent_dim) ) # 解码器部分 self.decoder = nn.Sequential( nn.Linear(latent_dim, 512), nn.ReLU(), nn.Linear(512, input_dim) ) def forward(self, x): latent = self.encoder(x) reconstructed = self.decoder(latent) return latent, reconstructed class GNNModel(nn.Module): def __init__(self, latent_dim): super(GNNModel, self).__init__() self.gnn_layer = GCNConv(latent_dim, latent_dim) def forward(self, latent, edge_index): updated_latent = self.gnn_layer(latent, edge_index) return updated_latent # 假设输入数据为X,邻接矩阵为edge_index input_dim = X.shape[1] latent_dim = 64 autoencoder = AutoEncoder(input_dim, latent_dim) gnn_model = GNNModel(latent_dim) # 前向传播 latent_representation, reconstructed = autoencoder(X) updated_latent = gnn_model(latent_representation, edge_index) # 后续可以加入聚类损失函数进行联合优化 ``` ### 相关问题 1. 如何构建单细胞RNA测序数据的图结构? 2. 自编码器和图神经网络联合训练时需要注意哪些关键点? 3. 如何评估深度结构聚类方法在单细胞RNA测序数据上的性能? 4. 是否有开源实现可供参考?如果有,能否推荐一些资源?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值