4.1Deep Dual Contrastive Learning for Multi-View Subspace Clustering 基于深双对比学习的多视图子空间聚类(翻译)

作者:Xincan Lina,b, Jie Liana,b, Zhihao Wua,b, Jielong Lua,b, Shiping Wanga,b,∗
aCollege of Computer and Data Science, Fuzhou University, Fuzhou 350116, China
bKey Laboratory of Intelligent Metro, Fujian Province University, Fuzhou 350108, China

引用:Lin X, Lian J, Wu Z, et al. Deep Dual Contrastive Learning for Multi-View Subspace Clustering[J]. Available at SSRN 4706044.

摘要

        多视图子空间聚类(MVSC)旨在利用所有视图的一致性和互补性来学习一致的共享自表示,许多MVSC算法试图直接从原始特征中获得最优表示。然而,它们可能会忽略原始特征空间中的噪声或冗余信息,导致学习次优自表示和较差的性能。为了解决这一限制,一个直观的想法是引入深度神经网络来消除噪声和冗余,从而产生潜在的嵌入空间。然而,现有的深度MVSC方法只关注嵌入或自表达来探索互补信息,这阻碍了子空间学习。在本文中,我们提出了一个深入的多视图对偶对比子空间聚类框架,以有效地利用互补性来学习潜在的自我表征。具体而言,构造多视图编码器以消除原始特征的噪声和冗余,并捕获低维子空间嵌入,从中学习自表示。此外,对潜在子空间嵌入和自表达进行了两种不同的具体融合方法,以学习共享的自表示,并提出了双重对比约束,以充分利用视图之间的互补性。进行了大量的实验来验证所提出的方法的有效性。

一、引言

       在信号处理中,从不同资源或不同形式捕获的数据被称为多视图数据。例如,图像的纹理或边缘等特征被提取为多个视图,同一新闻的不同报道也可以被视为新闻的不同特征。随着多视图学习的兴起,最近出现了大量的多视图数据[1,2,3,4]。作为一种无监督的范式,多视图聚类得到了极大的关注[5],其目的是利用多视图的一致性和互补性来学习一致性表示,以提高聚类性能。根据方法论的类型,多视图聚类算法通常可分为三种形式:多视图谱聚类[6,7,8],多视图子空间聚类[9,10,11],非负矩阵分解多视图聚类[12,13,14]。

        此外,还提出了其他几项工作,以从原始特征有效地执行子空间聚类[15,16,17]。然而,原始特征空间通常包含噪声和冗余,并且这些直接从这种特征空间挖掘自表达信息的方法往往会学习次优的自表示,这导致性能下降。

       因此,已经提出了大量的研究来推导用于最优自表示学习的有效的低维特征空间。[18]没有使用原始特征,而是追求全面的潜在嵌入来探索互补信息,促进了在这些学习嵌入空间中的一致自表示学习。类似地,[19]提出构建潜在一致表示,并引入HSIC来捕捉视图之间的高阶和非线性关系。[20] 同时进行特征投影和自表示,挖掘共享信息和特定信息,利用低维特征进行重构。此外,[21]在一个统一的框架中联合学习了隐式嵌入空间、鲁棒相似性矩阵和精确的聚类指标矩阵。然而,这些方法在处理以非线性数据关系为特征的复杂特征时表现不佳。

       幸运的是,由于其强大的表示提取能力,深度学习被引入到MVSC方法中来探索非线性信息。例如,[18]使用深度神经网络来推广所提出的发现非线性数据关系的方法。[22]提出了一种深度多视图子空间聚类网络,将全局和局部结构与自我表达层相结合,[23]甚至利用数据亲和关系来指导嵌入学习过程。此外,[24]将信息瓶颈扩展到深子空间聚类,旨在学习最小的充分表示。由于对比学习能够捕捉判别表示,[25]获得了节点的平滑表示,并通过采用图对比正则化。[26]提出了两个关于高级特征和语义标签的对比目标,以探索共同的语义。尽管深度MVSC方法取得了很好的性能,但它们仍然可能获得不完整的自我表征,这是由于仅考虑自我表达水平或嵌入水平的相互信息融合造成的。

        为了解决上述局限性,我们提出了一种深度多视图对偶对比聚类网络。这种方法试图联合学习子空间嵌入和自表示,并通过最大化互信息来利用互补信息。具体而言,构建多视图自动编码器以消除噪声和冗余,同时获得有效的嵌入,并构建自表达层以探索视图特定的自表示。此外,引入了两个不同的融合层,以提取共享的一致的自我嵌入和自表示。为了充分利用不同观点之间的互补性,我们提出了在自我嵌入和自我表达两个层面上的双对比学习。

### 基于类原型对比学习在多标签和细粒度教育视频分类中的应用 #### 类原型对比学习的核心概念 类原型对比学习是一种通过构建类别级别的代表性向量(即类原型),并利用这些原型之间的关系来进行特征学习的方法。这种方法能够有效捕捉类间差异以及类内一致性,从而提升模型的泛化能力[^1]。 具体而言,在多标签场景下,每个类别的原型可以通过该类别下的所有样本嵌入向量计算得到。通常采用均值池化的方式生成类原型 \( C_k \),其中 \( k \) 表示第 \( k \) 个类别: \[ C_k = \frac{1}{N_k} \sum_{i=1}^{N_k} f(x_i), \] 这里 \( N_k \) 是属于类别 \( k \) 的样本数量,\( f(x_i) \) 则是输入样本 \( x_i \) 经过编码器提取后的特征向量[^2]。 #### 对比损失函数的设计 为了实现更有效的特征表示学习对比学习框架引入了一种特殊的损失函数——InfoNCE Loss (Information Noise Contrastive Estimation)。这种损失函数旨在最大化正样本对之间的相似性,同时最小化负样本对之间的相似性。对于给定查询样本 \( q \),其对应的正样本集合记作 \( P(q) \),而负样本集合则为 \( N(q) \),那么 InfoNCE Loss 可定义如下: \[ L_{contrastive}(q) = -\log \left( \frac{\exp(\text{sim}(q, p)/\tau)}{\sum_{n \in N(q)} \exp(\text{sim}(q,n)/\tau)+\sum_{p' \in P(q)} \exp(\text{sim}(q,p')/\tau)} \right). \] 这里的 \( \text{sim}() \) 函数通常是余弦相似度或者欧氏距离,参数 \( \tau \) 称为温度超参,控制分布的锐利程度。 #### 多标签与细粒度教育视频分类的应用挑战 当应用于多标签和细粒度教育视频分类时,主要面临以下几个方面的挑战: - **标签不平衡**:某些细粒度类别可能拥有远少于其他类别的标注数据,这会使得训练过程中难以形成可靠的类原型。 - **语义重叠**:不同类别之间可能存在较高的语义关联性,增加了区分难度。 - **时间依赖特性**:相比于静态图片,动态视频还包含了帧间的时间序列信息,这对建模提出了更高要求。 针对上述问题,可以考虑以下改进措施: 1. 引入自适应权重机制调整各类别的重要性; 2. 设计专门的模块捕获跨帧间的长期依赖关系,比如使用 LSTM 或 Transformer 结构; 3. 融合外部知识源辅助优化决策边界。 #### 实验验证与效果分析 实验表明,在多个公开基准数据集上,基于类原型对比学习的方法显著优于传统监督方法以及其他无监督预训练方案。特别是在低资源环境下,由于充分利用了有限样例内部的信息结构,性能优势更加明显。 ```python import torch.nn.functional as F def info_nce_loss(query_embeddings, positive_embeddings, negative_embeddings, temperature=0.5): """ Compute the contrastive loss using InfoNCE formulation. Args: query_embeddings (Tensor): Query embeddings of shape [batch_size, embedding_dim]. positive_embeddings (Tensor): Positive sample embeddings of same shape. negative_embeddings (Tensor): Negative samples with shape [num_negatives * batch_size, embedding_dim]. temperature (float): Temperature parameter controlling sharpness. Returns: Tensor: Scalar value representing computed loss. """ # Normalize all vectors to unit length queries_norm = F.normalize(query_embeddings, dim=-1) positives_norm = F.normalize(positive_embeddings, dim=-1) negatives_norm = F.normalize(negative_embeddings, dim=-1) logits_pos = torch.sum(queries_norm * positives_norm, dim=-1).unsqueeze(-1) / temperature logits_neg = torch.matmul(queries_norm.unsqueeze(1), negatives_norm.T.permute(0, 2, 1)) / temperature full_logits = torch.cat([logits_pos, logits_neg], dim=-1) labels = torch.zeros(full_logits.shape[:2]).to(logits_pos.device).long() return F.cross_entropy(full_logits.view(-1, full_logits.size(-1)), labels.view(-1)) ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值