首页 > 其他分享 >Delving into Sample Loss Curve to Embrace Noisy and Imbalanced Data

Delving into Sample Loss Curve to Embrace Noisy and Imbalanced Data

时间:2024-04-04 18:44:06浏览次数:24  
标签:Loss partial tra into Curve meta mathcal Theta omega

这篇论文:

  1. 提出了prob-and-allocate训练策略,在prob阶段获得样本损失,在allocate阶段分配样本权重。
  2. 以[2]的meta-weight-net为Baseline,取名为CurveNet,进行部分改动。

另外,这篇论文提供的源码结构混乱,复现难度较大。主要的工作也是基于meta-weight-net,创新的内容有限。但是,这篇文章在Introduction对long-tailed data + noisy labels问题的描述非常清晰。

Introduction

Background

分别单独处理long-tailed data和noisy labels的数据偏置时,re-weighting策略是常见且有效的办法:通过loss值分配相应的权重。但如果两类偏置同时出现,re-weighting效果就不佳了。

具体来说,对于包含noisy labels的训练数据,noisy labels的样本往往具有较大的训练损失,因此加权函数应该将大损失映射到小样本权重,以减轻标签噪声的影响。

对于类别不平衡的训练数据,尾类样本通常会因训练不足而遭受较大损失,因此加权函数应该为这些硬正样本分配较大的权重,使网络更加强调尾类以提高整体性能表现。

tailed类loss大,但从noisy labels角度看是噪声标签,需要小权重;从imbalance角度看,需要大权重。

处理两类偏置的关键问题:区分尾部类别的干净样本和标签损坏的样本。

Motivation

观察Figure 1右图。噪声样本的损失在训练开始时保持稳定,而干净样本的损失在开始时急剧上升,然后迅速下降。因此,训练损失曲线实际上包括了有价值的信息,并且可以提供有用的先验来区分尾类的干净样本和噪声样本。

虽然文中提出的CurveNet与meta-weight-net参数更新方法几乎一致,但meta-weight-net论文中,meta-weight-net的输入(也就是loss)随着训练而变化,无法代表样本的整体训练状态。

此外,meta-weight-net只能处理单一的数据偏置,两类偏置一起的情况原文中并未对其测试。而改进的CurveNet可以同时处理两类偏置。

Method

Meta-weight-net部分

在Method一节中,meta-weight-net的部分内容占了几乎半页。。。称之为“Revisiting Meta-Weight-Net”。

  • meta-weight-net基于MLP提出了分类网络\(\mathcal{F}\),其中参数记为\(\omega\)。
  • 带偏置的training-data: \(\mathcal{D}^{tra}=\{x_{i}^{tra},y_{i}^{tra}\}_{i=1}^{N}\),无偏置的meta-data: \(\mathcal{D}^{meta}=\{x_{i}^{meta},y_{i}^{met\hat{a}}\}_{i=1}^{M}\),N,M表示样本数,\(N\gg M\), \(X, Y\)分别表示数据和标签。

meta-data作为无偏置数据来自验证集,有点像Zero-shot的Transductive设置。这种设置我到现在还是觉得莫名其妙。

对于传统的训练,分类器的参数训练通过最小化损失:

\[\omega^*=\arg\min_\omega\mathcal{L}(Y^{tra},\mathcal{F}(X^{tra}|\omega)),\tag{1} \]

\(\mathcal{F}\)一般是卷积神经网络。接下来为了简化,我们令\(\mathcal{L}_{tra}=\mathcal{L}(Y^{tra},\mathcal{F}(X^{tra}|\omega))\)。然而,数据存在偏置时,公式1可能不能很好地优化参数。这时需要采用re-weighting策略,对损失施加权重\(\mathcal{G}(\mathcal{L}_{tra}|\Theta)\),\(\mathcal{G}\)是输出权重的网络,\(\Theta\)为该网络参数。此时,公式1变为:

\[\omega^*=\arg\min_\omega\mathcal{G}(\mathcal{L}_{tra}|\Theta)\mathcal{L}_{tra}.\tag{2} \]

具体来说\(\mathcal{G}\)为一个仅含1个隐藏层的MLP,含100个神经元节点,以Sigmoid为激活函数,输出区间为[0,1]。通过元学习进行参数优化:

\[\Theta^*=\underset{\Theta}{\operatorname*{\arg\min}}\mathcal{L}(Y^{meta},\mathcal{F}(X^{met\boldsymbol{a}}|\omega^*(\mathcal{G}(\Theta)))).\tag{3} \]

总觉得这里和元学习没啥关系。

式3的损失函数用\(\mathcal{L}_{meta}\)表示。由于两种参数\(\omega, \Theta\)都需要更新,所以需要分开更新,更新一种参数时令另一种参数为已知量。

  1. 先更新\(\omega\),这里的\(\omega\)作为临时更新参数,t为当前epoch:

\[\hat{\omega}^t=\omega^t-\alpha\bigtriangledown_{\omega}\mathcal{G}(\mathcal{L}_{tra}^t|\Theta^t)\circ\mathcal{L}_{tra}^t|_{\omega^t},\tag{4} \]

  1. 临时更新的\(\omega\)用来更新\(\Theta\),更新完就可以丢弃:

\[\Theta^{t+1}=\Theta^t-\beta\bigtriangledown_{\Theta}\mathcal{L}_{meta}^t(\hat{\omega}^t(\Theta^t))|_{\Theta^t}.\tag{5} \]

  1. 再用更新后的\(\Theta\)更新真正的\(\omega\):

\[\omega^{t+1}=\omega^t-\alpha\bigtriangledown_{\omega}\mathcal{G}(\mathcal{L}_{tra}^t|\Theta^{t+1})\circ\mathcal{L}_{tra}^t|_{\omega^t}.\tag{6} \]

以上都是作者照搬了meta-weight-net的内容,作者总结了meta-weight-net的缺陷:

  1. meta-weight-net采用当前损失值作为输入,该损失值在整个训练过程中发生巨大变化,并且无法代表样本的状态。
  2. 损失值在每个epoch都不同,并且在训练过程中变得越来越小,这不利于(用于分类的)网络收敛。
  3. 当噪声和tail class 样本呢同时存在时,权重可能很大也可能很小,导致分类器的性能不理想。

作者以此为motivation,提出了prob-and-allocate训练策略,不再随着权重赋值,而是先统一收集损失,在分配权重。

CurNet

把第i个样本,T个epoch内的损失收集起来:\(L_i=[l_{i,0},l_{i,1},\cdots,l_{i,T}]\),由于初始参数随机产生,可以移除前S个损失,结果变为:\(L_i=[l_{i,S},l_{i,S+1},\cdots,l_{i,T}]\)。

对于同一类,计算loss的均值:

\[\mu_{k,t}=\frac{\sum_j^N\mathbb{1}(k,y_j)l_{j,t}}{\sum_j^N\mathbb{1}(k,y_j)},\tag{7} \]

接下来,对每个类的样本,减去类内的均值:

\[\bar{l}_{i,t}=l_{i,t}-\mu_{y_i,t}.\tag{8} \]

这里\(k(1\le k\le K)\)表示class,\(\mathbb{1}\)表示Dirac delta函数,输入的两个变量相等时输出1,否则输出0。

归一化损失向量可以表示为 I,然后依次馈送到全连接层,每个层都耦合到 ReLU 激活层。 P为最后一个全连接层的输出神经元数量,这里通过实验设置为64。

作为进一步促进噪声识别的一种方法,我们采用类标签嵌入方法将类信息丰富到损失曲线特征中。这种嵌入方法在自然语言处理领域常用(Cao et al. 2021),这里的嵌入矩阵可以表示为:\(Y^{K\times P}=[Y_{1},\cdots,Y_{K}].\)。再把I 和 Y连接并输入到MLP中。

优化的时候忽略几层

为了加速\(\Theta\)优化,根据FaMUS (Xu et al. 2021)\(\triangledown_\Theta\mathcal{L}_{meta}^t|_{\Theta^t}\)重写为:

\[\bigtriangledown_\Theta\mathcal{L}_{meta}^t|_{\Theta^t} =\frac{\partial\mathcal{L}_{meta}^t}{\partial\hat{\omega}^t}\bullet\frac{\partial\hat{\omega}^t}{\partial\mathcal{G}(\Theta^t)}\bullet\frac{\partial\mathcal{G}(\Theta^t)}{\partial\Theta^t} \propto\sum_i^Z\frac{\partial\mathcal{L}_{meta}^t}{\partial\hat{\omega}_i^t}\bullet\frac{\partial\hat{\omega}_i^t}{\partial\mathcal{G}(\Theta^t)}\bullet\frac{\partial\mathcal{G}(\Theta^t)}{\partial\Theta^t}, \tag{9}\]

Z表示分类器的层数。然后冻结SL层,再更新\(\Theta\),此时式9变为:

\[\bigtriangledown_\Theta\mathcal{L}_{meta}^t|_{\Theta^l}\propto\sum_{i=SL}^Z\frac{\partial\mathcal{L}_{meta}^t}{\partial\hat{\omega}_i^t}\bullet\frac{\partial\hat{\omega}_i^t}{\partial\mathcal{G}(\Theta^t)}\bullet\frac{\partial\mathcal{G}(\Theta^t)}{\partial\Theta^t} \tag{10} \]

这种做法感觉没什么用,作者的消融实验也证实了这一点,此外,作者的没有比较整体的训练时间,因此这个消融实验的结果说服力欠佳。
alt text

改变了输入的式4和式6

\[\hat{\omega}^t=\omega^t-\alpha\bigtriangledown_{\omega}\mathcal{G}([I,Y^{tra}]|\Theta^t)\circ\mathcal{L}_{tra}^t|_{\omega^t}\tag{11} \]

\[\omega^{t+1}=\omega^t-\bigtriangledown_{\omega}\alpha\mathcal{G}([I,Y^{tra}]|\Theta^{t+1})\circ\mathcal{L}_{tra}^t|_{\omega^t.}\tag{12} \]

整体的训练框架如下:

当学习率改变时,不同类别样本的损失值曲线存在显着差异。因此,在探测阶段采用循环学习率(Smith 2017)来训练分类器\(\mathcal{F}(\omega)\),O2U-Net 也采用了这种方法(Huang et al. 2019)。此外,当分类器的学习率降低时,认为CurveNet已经优化得很好,不再更新CurveNet的参数以加快训练速度。

Experiments

实验部分没有什么亮点,作者主要与Baseline meta-weight-net进行对比。作者放了一张不同类的参数权重与epoch的关系:

可观察到:

  1. clear样本权重大于noisy样本;
  2. 尾部类的权重显著大于头部类

这种结果确实是理想的情况,证明了损失曲线有着有效信息。但观察尾部类的3张图,它们的权重还是靠的有点近,不确定作者的方法在尾部类的精度上如何。

参考文献

  1. Jiang, Shenwang, et al. "Delving into sample loss curve to embrace noisy and imbalanced data." Proceedings of the AAAI Conference on Artificial Intelligence. Vol. 36. No. 6. 2022.
  2. Shu, Jun, et al. "Meta-weight-net: Learning an explicit mapping for sample weighting." Advances in neural information processing systems 32 (2019).

标签:Loss,partial,tra,into,Curve,meta,mathcal,Theta,omega
From: https://www.cnblogs.com/zh-jp/p/18114479

相关文章

  • BSL: Understanding and Improving Softmax Loss for Recommendation
    目录概符号说明SoftmaxlossBilateralSoftmaxloss(BSL)代码WuJ.,ChenJ.,WuJ.,ShiW.,ZhangJ.andWangX.BSL:UnderstandingandImprovingSoftmaxLossforRecommendation.ICDE,2024.概作者'发现'在协同过滤中,Softmaxloss会比BCE/BPR损失效果好很多,......
  • Cannot deserialize the current JSON array (e.g. [1,2,3]) into type ‘model’ bec
    错误:CannotdeserializethecurrentJSONarray(e.g.[1,2,3])intotype‘model’becausethetyperequiresaJSONobject(e.g.{“name”:“value”})todeserializecorrectly.TofixthiserroreitherchangetheJSONtoaJSONobject 原因:json或xml字符串中......
  • 【BlossomRPC】如何自定义一个RPC协议?
    文章目录如何设计一个RPC协议?RPC项目配置中心项目网关项目如何设计一个RPC协议?在上面的需求描述中我们知道,RPC非常重要的一环,就是自己制定符合自己需求的通信协议,这里,我简单的列出了我的协议。publicclassRpcHeaderimplementsSerializable{//publicst......
  • 【BlossomRPC】手把手教你写一个RPC协议
    文章目录新的开始什么是RPC?设计一个RPC需要些什么?新的开始经常会遇到一些项目,看着看着就发现看不懂文档了,也就是会出现一些跳过讲解的文章,使得自己很难了解某种中间件的开发全貌,所以想着自己先设计一个比较简易的RPC框架,在实现所有功能的前提下,向公司内部的技术分享......
  • train_transforms,Normalize,CrossEntropyLoss,optimizer,前向传播进行特征提取,反向传播优
    目录train_transforms:变换Normalize(mean=127.5,std=127.5) :缩放到[-1,1]......
  • Learning Imbalanced Datasets with Label-Distribution-Aware Margin Loss
    省去冗长的数学证明,直接看文章的贡献:提出了新的Loss函数以及延迟re-weighting的trick。并在多个数据集,包括情感分类、图像分类进行实验。Motivation&Methods:LDAM(Label-Distribution-AwareMargie)Losstailclasses的信息基本上较少,而且部署的模型通常很大,因此对tailclasse......
  • Loss Function: MSELoss, CrossEntropyLoss
    ......
  • Lecture 11 Geometry 2 (Curves and Surfaces)
    Lecture11Geometry2(CurvesandSurfaces)Curves曲线BézierCurves贝塞尔曲线用一系列控制点定义摸一个曲线,这些控制点会定义曲线满足的一些性质图中通过三个控制点,可以定义曲线起始点和结束点一定在\(p_0\)和\(p_3\)上,并且起始的切线和结束的切线一定都是\(p_0p_1\)......
  • 【CenterFusion】损失函数Loss初始化_get_losses()函数以及计算过程forward()函数-Cen
    损失函数Loss初始化_get_losses函数以及计算过程forward函数1.损失函数初始化前序运行逻辑2.损失函数初始化2.1loss函数初始化——Trainer类中的_get_losses()函数2.2model_with_loss的初始化3.loss计算过程前序运行逻辑4.loss计算过程4.1loss计算函数调用关系4.......
  • Efficient Learned Lossless JPEG Recompression
    目录简介创新点模型设置CCCMcompressedcheckerboardcontextmodelPPCMpipelineparallelcontextmodelShiftContext实验设置结果简介本文是GuoLina以及HeDailan商汤团队关于重压缩的第二篇论文,这次该团队将注意力放到了加速解码上。创新点提出Multi-LevelParallelC......