2022-03-04-Label-Noise-Learning

本文探讨了深度学习中噪声标注数据对模型泛化能力的影响,介绍了几种应对策略,包括NAF、AUM、早停和SOP方法,旨在减少噪声标签对模型优化的负面影响,提升模型的鲁棒性。

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

layout comments title categories tags description
post
true
Label Noise Learning
blog
自然语言处理
Label Noise Learning

Label Noise Learning

@(NLP)[噪声, 主动学习]

[TOC]

序言

过参数化在深度学习时代常常被提到,它的神经网络参数个数甚至超过了 training sample 的个数,在实验中也体现出了非常好的效果。但是,一旦training samples中带有一些噪声,整个模型就趋向于过拟合,没有办法很好地泛化到测试集。一般而言,training samples带噪声的方式有两种,一是在 data points上加 Gaussian noise,二是 label noise. 我们这里主要探究第二种。

存在噪声标注数据

诸如数据增强、权重衰减、dropout和批量归一化等流行的正则化技术已经被广泛应用,但是它们本身并不能完全克服在噪声数据上过拟合问题。 1、噪声的类别 (1) instance-independent label noise: 现有大部分算算法都是针对这种类型的带噪数据进行的研究建模的,因为instance-dependent 建模比较复杂。

  • symmetric noise: 一个标签标错为其他类别的标签概率一样
  • asymmetric noise: 一个标签标错为其他类别的标签概率不一样
  • pair noise: 一个标签只会错标为对应的另外一种标签, 标错的是在这些标签对形式存在(a, b) Alt text

(2) instance-dependent label noise 2、困难 (1)深度学习模型因为其高阶的表达方式,更容易受到label noise的影响。

3、要获得一个鲁棒性的模型,方法可以大致分为三类: (1)设计使用好的损失函数 (2)训练方式: Training architectures methods (3)减少错误标注: Label correction methods. 噪声数据比重占比在8.0% ~38.5%范围内。

4、常用概念

Label Transition

Alt text

Alt text

Memorization Effect

### 基于类原型对比学习在多标签和细粒度教育视频分类中的应用 #### 类原型对比学习的核心概念 类原型对比学习是一种通过构建类别级别的代表性向量(即类原型),并利用这些原型之间的关系来进行特征学习的方法。这种方法能够有效捕捉类间差异以及类内一致性,从而提升模型的泛化能力[^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)) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值