[论文分享] GraphCL:图对比学习的增强方式,如何构造正样本?

本文介绍了GraphCL,一种针对图数据的自监督学习框架,提出四种增强方式并分析其在不同数据集上的适用性。实验表明,GraphCL在各种学习任务中表现出色,同时增强了模型对对抗性攻击的抵抗力。关键贡献在于对数据增强策略的深入理解和实用性评估。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 Graph Contrastive Learning with Augmentations 论文解析

 往期相关推送(持续更新中!):

[ICASSP 2024] CDNMF: 一个可信且高效的社区检测(社区发现,图聚类,Community Detection)方法-CSDN博客

[论文分享] DGI 图对比学习:局部-全局对比,最大化互信息-CSDN博客

Motivation

· 对于图数据集来说,同样存在缺少标签或难以标注的问题,而预训练(自监督学习)是一种可行的解决方案。只是在这一方面的研究比较少。

· 对比学习是一种通过在不同增强视图下最大化特征一致性的自监督学习方法,具有良好的表示能力,在图像表示学习方面取得了显著的成效。而图是一种复杂的离散数据结构,难以直接套用已有的模型。

Contributions

· 首次提出了图结构的四种增强方式。

· 构建了适用于图数据的通用对比学习框架GraphCL,比较了不同增强在不同数据集上的适用性并作了分析。

· GraphCL在半监督学习、无监督表示学习和迁移学习的实验中取得了最先进的性能。此外,它还增强了对抗性攻击的鲁棒性。

Proposed Method

和一般的对比学习类似,分为三部分:augmentation、representation、contrast

· 图增强方式以及需要的先验信息

必要的先验信息:例如丢失部分顶点和边不会影响图的语义。

· 一个基于GNN的编码器(shared)提取图级表示向量

· 对比:正例互信息最大化(分子),负例互信息最小化(分母)

第n个图的NT-Xent:

注:

1、这里的Projection head g(·)一般取MLP,其可以提升模型的性能(ACC)。

在文章A Simple Framework for Contrastive Learning of Visual Representations 中,作者实验验证了该结论。

2、其次,在下游任务中所使用的representation是取Projection head之前的,这是因为经历了Projection head(MLP)之后,representation损失了部分利于下游任务的信息,导致模型准确率下降。

Experiments

· 与当前最先进的模型的性能比较

半监督学习:

无监督学习,下游任务:分类

· 对比学习框架提升了模型的鲁棒性

Conclusions:

· 该文不仅提出了一个图对比学习框架GraphCL,重点还在于其通过实验,系统地分析了数据增强的影响,揭示了增强的基本原理以及指导了增强的选择。

(1)数据增强的必要性

(2)不同增强在不同数据集上的适用性

比如,边缘扰动(一种增强)适用于社交网络数据集,不适于生物、化学分子数据。直观来说,一个生化分子损失某些边后,其性质或类型可能发生巨大改变,这不满足语义鲁棒性的先验条件。相对而言,社交网络的语义对边的变化不敏感。

无论增强强度如何,边缘扰动都会恶化NCI1(biomolecule data)的性能。

· 从论文中也不难看出,要经过大量实验,才能对给定的图数据选出合适的数据增强方式(组合)以及增强强度。而且,某些增强方式会破坏图的语义结构,反而降低下游任务的性能。这时,不妨考虑通过学习的方式自动从数据集中提取出合适的增强方式。

Reference

[0] You Y, Chen T, Sui Y, et al. Graph contrastive learning with augmentations[J]. Advances in neural information processing systems, 2020, 33: 5812-5823.

[1] Li Y, Chen J, Chen C, et al. Contrastive Deep Nonnegative Matrix Factorization for Community Detection[J]. arXiv preprint arXiv:2311.02357, 2023.

[2] Li Y, Hu Y, Fu L, et al. Community-Aware Efficient Graph Contrastive Learning via Personalized Self-Training[J]. arXiv preprint arXiv:2311.11073, 2023.

<think>嗯,用户现在在找关于深度图级别聚类的资料或者实现方法,具体是“deep learning graph level clustering implementation or tutorial”。首先,我需要理解用户的具体需求。图级别聚类可能指的是将整个图结构作为输入,然后将其分到不同的类别中,而不是节点级别的聚类。这可能涉及到图神经网络(GNN)的应用,比如使用图自编码器或者对比学习的方法。 接下来,我应该考虑用户可能的背景。他们可能已经有一定的深度学习基础,但对图聚类不太熟悉,或者在寻找具体的实现教程。用户可能需要从理论到实践的指导,包括算法介绍、代码示例和相关资源。 然后,我需要回忆相关的文献和资源。比如,Deep Graph Clustering(DGC)方法,图自编码器(GAE),对比学习框架如GraphCL,以及一些经典算法如谱聚类的深度学习实现。这些方法通常会在论文或开源库如PyTorch Geometric(PyG)或DGL中找到实现。 还要考虑用户是否需要具体的代码示例。比如,使用PyG实现GAE的步骤,或者如何用DGL构建图聚类模型。此外,用户可能对评估指标如NMI和ARI感兴趣,需要解释这些指标的含义和计算方法。 另外,用户提到的站内引用中有Sibyl系统,这可能与推荐系统相关,但不确定是否直接关联。可能需要忽略不相关的引用,专注于图聚类的内容。 最后,用户可能需要进一步的问题来澄清需求,比如是否需要处理特定类型的数据,或者是否有计算资源限制。但根据问题描述,应直接提供相关资料和实现方法,并生成相关问题供用户参考。</think># 深度图级别聚类实现方法与教程 ## 核心概念与方法 图级别聚类(graph-level clustering)旨在将整个图结构映射到低维空间后进行聚类,与节点级聚类不同,其处理单元是完整的图结构。主流方法可分为三类: 1. **图自编码器方法** 通过编码器$f_\theta: \mathcal{G} \rightarrow \mathbb{R}^d$将图结构编码为低维向量,使用解码器$g_\phi$重构图特征,优化目标为: $$\mathcal{L} = \|X - g_\phi(f_\theta(G))\|^2 + \lambda \cdot \text{KL散度项}$$ 典型实现如Graph Autoencoder (GAE)[^1] 2. **对比学习方法** 通过数据增强生成图视图$G_1,G_2$,利用对比损失提升同类图的特征相似性: $$\mathcal{L} = -\log\frac{\exp(\text{sim}(z_i,z_j)/\tau)}{\sum_{k=1}^{2N} \mathbb{1}_{k\neq i} \exp(\text{sim}(z_i,z_k)/\tau)}$$ 代表框架GraphCL[^2] 3. **联合优化方法** 同步优化特征学习和聚类分配,常用双重优化目标: $$\min_{\theta} \min_{C} \sum_{i=1}^N \|z_i - C\|^2 + \gamma \cdot \mathcal{L}_{\text{recon}}$$ ## 实现步骤(PyTorch Geometric示例) ```python import torch from torch_geometric.nn import GAE, GCNConv class GCNEncoder(torch.nn.Module): def __init__(self, in_channels, out_channels): super().__init__() self.conv1 = GCNConv(in_channels, 2*out_channels) self.conv2 = GCNConv(2*out_channels, out_channels) def forward(self, x, edge_index): x = self.conv1(x, edge_index).relu() return self.conv2(x, edge_index) # 初始化模型 model = GAE(GCNEncoder(in_channels=num_features, out_channels=16)) # 训练循环 optimizer = torch.optim.Adam(model.parameters(), lr=0.01) for epoch in range(100): z = model.encode(data.x, data.edge_index) loss = model.recon_loss(z, data.edge_index) loss.backward() optimizer.step() ``` ## 评估指标 1. 标准化互信息(NMI): $$ \text{NMI} = \frac{2I(Y;\hat{Y})}{H(Y)+H(\hat{Y})} $$ 2. 调整兰德指数(ARI): $$ \text{ARI} = \frac{\sum_{ij} \binom{n_{ij}}{2} - [\sum_i \binom{a_i}{2} \sum_j \binom{b_j}{2}]/\binom{n}{2}}{\frac{1}{2}[\sum_i \binom{a_i}{2} + \sum_j \binom{b_j}{2}] - [\sum_i \binom{a_i}{2} \sum_j \binom{b_j}{2}]/\binom{n}{2}} $$ ## 实用资源 1. **代码库**: - PyTorch Geometric图聚类示例[^3] - DGL图聚类教程 - GitHub项目DeepGraphClustering 2. **数据集**: - TUDataset (包含PROTEINS、IMDB-BINARY等图数据集) - OGB图数据集 3. **论文推荐**: - 《Deep Graph Clustering via Mutual Information Maximization and Mixture Model》(TKDE 2022) - 《Structural Deep Clustering Network》(WWW 2020)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

6lyc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值