One2Multi Graph Autoencoder for Multi-view Graph Clustering

One2Multi:属性多视图图聚类的图自编码器框架

 One2Multi Graph Autoencoder for Multi-view Graph Clustering | Proceedings of The Web Conference 2020 (acm.org)

目录

Abstract

1 Introduction

2 Model

2.1 Overview

2.2 One2Multi Graph Convolutional Autoencoder

Informative graph convolutional encoder

Multi-view graph decoder

Reconstruction loss

2.3 Self-training Clustering

2.4 Optimization

3 代码注释


Abstract

多视图图聚类受到关注,它寻求用,可以提供更全面但更复杂信息的多个视图,对图进行划分。虽然一些方法在多视图聚类方面取得了不错的成功,但大多采用shallow model处理多视图图内部的复杂关系,会限制多视图图信息建模能力。

作者首次尝试将深度学习技术应用于属性多视图图聚类,提出了一种新的任务导向的One2Multi图自编码器聚类框架。One2Multi图自编码器能够通过使用一个信息图视图和内容数据来重建多个图视图学习节点嵌入。因此,可以很好地捕获多个图的共享特征表示。在此基础上,提出了自训练聚类目标,迭代改进聚类结果。通过将自训练和自编码器重构整合到一个统一的框架中,模型可以共同优化适合图聚类的聚类标签分配和嵌入。

1 Introduction

大多数图聚类方法只关注处理一个图,但现实中图形数据很复杂。因此要使用多视图图而不是单视图图,来更好表示实的图数据,其中每个图视图代表节点之间的一种关系。以学术网络为例,一个图视图可以表示共同作者关系,另一个图视图可以表示共同会议关系,作者还可以与代表性关键字相关联,作为其属性。这种复杂图通常被称为属性多视图图,它以互补和综合的方式对交互系统进行建模,具有更准确的图聚类潜力。

属性多视图图聚类可以被分为两类:(1)基于图分析的方法。其目的是最大化不同视图之间的相互一致性,从而将图划分为组。(2)图嵌入。利用图嵌入技术从多视图图数据中学习节点的表示,随后使用k-means等传统聚类方法。

但这些方法都被认为是浅层模型,对揭示复杂图数据中的深层关系的能力有限。此外,上述方法对节点属性信息关注较少。

近年来,GNN作为一种深度非线性表示学习框架,在节点分类和聚类等图分析任务上显示出了强大的性能。然而,大多数gnn是针对单视图图开发的。此外,也有一些作品将GNN扩展到多视图设置,但它们是在半监督场景下设计的,用于分类任务。将CNN用于属性多视图图聚类会遇到挑战:(1)简单的融合方法建立多个模型,开发多个编码器和解码器,每个编码器和解码器对应于每个视图。然而,由于引入了不同视图中包含的噪声,这种简单的方法并不有效。更重要的是,multi2multi模型只能单独提取每个视图表示,而共享表示可能对任务更重要。从所有观点中学习也很耗时。(2)如何使GNN学习到的嵌入更适合聚类任务?节点嵌入和聚类通常是两个独立的任务。节点嵌入的目的是重建原始图,因此学习到的节点嵌入不一定适用于节点聚类。因此,需要以统一的方式优化节点嵌入和聚类。

观察真实的多视图图数据,可以发现:(1)虽然多视图信息从不同方面反映了节点关系,但它们应该具有一些共同的节点特征。(2)在许多场景中,通常存在一个最具信息量的视图比其他视图产生更好的聚类效果。

本文提出了一种新的One2Multi图自编码器框架,用于属性多视图图聚类。该模型的基本思想是从信息量最大的图视图和内容数据中提取共享表示,然后利用共享表示重构所有视图。根据这一思路,我们设计了一种新型的One2Multi图形自编码器,它由一个编码器和多个解码器组成。具体来说,它利用多视图图结构和节点内容来学习节点表示,通过一个多层图卷积网络(GCN)编码器从最具信息量的视图中学习节点表示,多个图解码器重构所有视图。进一步,设计了自训练聚类目标,使当前聚类分布趋近于更适合聚类任务的目标分布。通过联合优化重构损失和聚类损失,该模型可以同时优化节点嵌入和聚类,并在统一的框架内相互改进。

贡献总结如下:

(1)第一次将图深度学习用到多视图图聚类;

(2)提出了一种新的One2Multi自编码器框架,用于属性多视图图聚类,One2Multi 图自编码器提供了一个有效的深度框架来集成多视图图结构和内容信息。此外,该框架还对多视图图嵌入学习和图聚类进行了相互促进的优化。

2 Model

2.1 Overview

该模型主要由两部分组成:One2Multi图自编码器和自训练图聚类。One2Multi图自编码器由一个信息图编码器和多视图图解码器组成。采用启发式度量模块化方法,选择信息量最大的视图作为图编码器的输入,将图结构和节点内容编码为节点表示。

然后设计了一个多视图图解码器来解码表示,以重建所有视图。由于One2Multi图自编码器的精致设计,它不仅学习了共享表示,而且吸收了不同视图的结构特征。使用由学习嵌入本身生成的软标签来监督编码器参数和聚类中心的学习。对多视图图的嵌入和聚类在统一的框架中进行优化,从而得到一个信息丰富的编码器,使其表示更适合聚类任务。

2.2 One2Multi Graph Convolutional Autoencoder

为了在统一框架中表示多视图图结构A(1)、···、A(M)和节点内容X,作者开发了一种新的One2Multi图自编码器(O2MA)架构,其中所有视图共享一个图卷积编码器,从一个信息图视图和内容数据中提取共享表示,并设计了一个多解码器,从共享表示中重构多视图图数据。

Informative graph convolutional encoder

由于不同的图视图是在同一组节点之间通过不同方面表示关系,并且所有图视图共享内容信息,因此视图之间存在共享信息。此外,在许多场景中,通常存在一个最具信息量的视图来有最好聚类性能。因此,信息视图和其他视图之间的共享信息可以从信息量最大的图视图和内容数据中提取出来,然后用于重构所有的图视图。

基于上述假设,以信息量最大的图视图A∗∈{A(1),···,A(M)}和节点内容信息X作为输入,重构所有图视图。使用启发式度量——模块化,来选择信息量最大的视图。首先将每个单视图图邻接矩阵和内容信息分别馈送到GCN层中学习节点嵌入,然后对学习到的嵌入执行k-means来获得它们的聚类指标。基于聚类指标和邻接矩阵,计算每个图视图的模块化得分,并选择得分最高的图视图作为信息量最大的图视图。因为模块化提供了评估聚类结构的客观度量。

信息图编码器是两层的GCN,初始的节点嵌入是节点的属性:

Multi-view graph decoder

为了监督编码器提取所有视图的共享表示,提出了一种多视图图解码器,从表征Z,重构出多视图数据\hat A_{1},...,\hat A_{M}解码器由M个特定于视图的解码器组成

深度学习结构聚类方法在单细胞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. 是否有开源实现可供参考?如果有,能否推荐一些资源?
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值