SL解读

news/2024/11/29 1:50:21/

最近看到汐梦聆海关于SL这个工作的阅读分享,发现自己工作中也有含噪声标签分类的问题(甚至有些场景标签干脆就是置信度不高的伪标签)。其实由于数据量大和标注成本受限,工业界的数据集常常会出现噪声标签,模型对这类标签的拟合会导致学习的异常进行。SL这个工作从数学层面对交叉熵进行改进,提出了一种更加鲁棒的Symmetric Cross Entropy(SCE)损失,可以一定程度上缓解由于noisy label带来的训练问题,该工作也被ICCV2019收录。

简介

如何在有噪声标注的数据集上进行训练是一直受到工业界关注的问题,也产生了很多不错的工作。具体到分类任务上来看,论文作者发现使用交叉熵学习的深度神经网络会去过拟合那些简单类别而在一些困难类别上欠学习。直觉上,交叉熵需要额外的一项来促进困难类别的学习,更重要的是,这一项应该对噪声有容忍能力以避免过拟合噪声标签。受到KL散度的启发,论文提出了一种Symmetric cross entropy Learning(SL,对称交叉熵学习),该方法通过具有噪声鲁棒性的反向交叉熵(RCE)来对称地增强交叉熵。SL方法同时解决存在噪声标签的情况下交叉熵的欠学习和过拟合的问题。作者对SL的进行了理论分析,并在一系列基准数据集上证明了SL优于SOTA方法,而且SL可以方便地集成到现有的方法中以提高模型性能。

  • 论文标题

    Symmetric Cross Entropy for Robust Learning with Noisy Labels

  • 论文地址

    http://arxiv.org/abs/1908.06112

  • 论文源码

    https://github.com/HanxunH/SCELoss-Reproduce

介绍

目前的深度神经网络往往都是上百层有着百万级别的训练参数,这样的模型需要大规模的清晰标注的数据集才能合理训练。然而,时至今日,即使ImageNet这样的高质量数据集也存在不少的误标,这主要是因为标注大规模数据集确实代价昂贵并且容易出错。因此如何在存在噪声标注的情况下训练深度神经网络是一个非常重要的研究课题。

在这篇论文中,作者主要关注计算机视觉中常见的图像分类任务,经过调查发现,交叉熵(Cross Entropy,CE)虽然是分类任务最常用的损失,但是使用CE训练的网络其实存在类别偏置现象:一些容易类别(“easy” class)收敛的速度快于其他的困难类别(“hard” class)。不妨看下图,首先来看图a,即使标签是干净的,使用CE训练的模型在各个类别上的测试准确率依然相去甚远,比如class 1和class 3相差近20%;如图b,在添加噪声后采用CE进行训练,可以看到,这种差距更加明显,如class 6的容易类别已经对噪声过拟合了,像class 3这样的困难类别依然处于欠学习状态(即分类准确率低于标注清晰的情况);而图c中采用了广为人知的Label Smoothing Regularization(LSR),显然,它依然存在欠学习问题。因此,从这些实验结果可以看出,整体准确率的低下源于难类别的准确率较低,这和之前的研究认为的仅仅是过拟合噪声标签这个原因还是有区别的。

在这里插入图片描述

下图是对学习到的embedding进行可视化的结果,图a是干净标注的数据,图b则是加入40%噪声的数据,显然图a情况下各类的边界更加清晰,但是无论是图a还是图b,都存在一些容易类别的边界清晰而一些困难类别的边界模糊。

在这里插入图片描述

受到KL散度的启发,作者在CE基础上添加了一个噪声容忍的项,名为Reverse Cross Entropy(RCE),它和CE组合构成了Symmetric
cross entropy Learning(SL)的基础。SL不仅可以改进困难类别的学习,而且可以增强网络对噪声标签的鲁棒性,它们的改进效果可以从上面的图中最后一张子图看出来。和那些动辄修改网络或者对现有方法改动颇多的方法相比,SL非常容易使用,只需要对现有训练流程轻微改动即可。

SL

交叉熵局限

在具体介绍SL方法之前,首先来回顾一下交叉熵损失。给定一个 K K K类的数据集 D = { ( x , y ) ( i ) } i = 1 n \mathcal{D}=\left\{(x, y)^{(i)}\right\}_{i=1}^{n} D={(x,y)(i)}i=1n,其中 x ∈ X ⊂ R d x \in \mathcal{X} \subset \mathbb{R}^{d} xXRd表明一个样本的输入是 d d d维的,而 y ∈ Y = { 1 , ⋯ , K } y \in \mathcal{Y}=\{1, \cdots, K\} yY={1,,K}是其对应的标签。对每个样本 x x x而言,一个分类器 f ( x ) f(x) f(x)计算其属于各个类别的概率分布,对于某个类别 k k k而言,其概率为 p ( k ∣ x ) = e z k ∑ j = 1 K e z j p(k \mid x)=\frac{e^{z_{k}}}{\sum_{j=1}^{K} e^{z_{j}}} p(kx)=j=1Kezjezk,这里的 z j z_j zj是概率值。不妨记 x x x的GT分布为 q ( k ∣ x ) q(k \mid x) q(kx),显然有 ∑ k = 1 K q ( k ∣ x ) = 1 \sum_{k=1}^{K} q(k \mid x)=1 k=1Kq(kx)=1。如果是单标签的情况,那么必有 q ( y ∣ x ) = 1 q(y \mid x) = 1 q(yx)=1且对所有 k ≠ y k \ne y k=y的情况有 q ( k ∣ x ) = 0 q(k \mid x)=0 q(kx)=0。综上,交叉熵损失定义如下。

ℓ c e = − ∑ k = 1 K q ( k ∣ x ) log ⁡ p ( k ∣ x ) \ell_{c e}=-\sum_{k=1}^{K} q(k \mid \mathbf{x}) \log p(k \mid \mathbf{x}) ce=k=1Kq(kx)logp(kx)

作者这里在Cifar10上随机生成了一些噪声标签(40%),使用一个8层卷积神经网络进行分类,训练总共120轮,选取第10轮、第50轮和第100轮作为前期、中期和后期。 下图所示的为CE训练清晰标注和添加噪声的标注的测试准确率,无论是清晰数据还是噪声数据,不同类别之间存在差异,但是随着训练的进行,清晰数据后期差异较小但是即使在后期,噪声数据的差异依然存在,一些难类别并没有得到充分训练,而一些容易类别已经出现了过拟合现象。因此,得出结论,难类别的欠学习才是网络整体性能下降的原因而不是过拟合噪声标签。

在这里插入图片描述

进一步从学习到的表示的角度来探索CE造成欠学习的原因。由于难类别的表示和其他类别的相似度较高,因此极有困难被预测为其他类别标签,这就是之前聚类图上class 3没有明显聚类的原因。但是,class 3中仍有60%干净的标注,对此进一步研究,下图是class 3对干净数据的预测置信度和分布情况,可以看出,即使是干净的数据,置信度也不是很高,这表示网络其实没有得到充分的训练。

在这里插入图片描述

因此,最终总结得到,CE对于难类别的学习是不够充分的,尤其是存在噪声标签的场景下。

对称交叉熵学习

为了解决上文提到的交叉熵的局限性,作者提出了一种充分学习和噪声鲁棒性之间寻求平衡的方法,称为Symmetric cross entropy Learning,简称SL。

定义

给定两个分布 q q q p p p,交叉熵 H ( q , p ) H(q,p) H(q,p)和KL散度 K L ( q ∣ ∣ p ) KL(q||p) KL(qp)之间的关系如下式, H ( q ) H(q) H(q)表示 q q q的熵, q = q ( k ∣ x ) q=q(k|x) q=q(kx)表示样本 x x x的真实类别分布, p ( k ∣ x ) p(k|x) p(kx)则是预测类别分布。从KL散度的角度来看,优化的目的就是使得 p p p接近 q q q,也就是最小化两者的KL散度 K L ( q ∣ ∣ p ) KL(q||p) KL(qp)

K L ( q ∥ p ) = H ( q , p ) − H ( q ) K L(q \| p)=H(q, p)-H(q) KL(qp)=H(q,p)H(q)

但是,当存在噪声时, q ( k ∣ x ) q(k|x) q(kx)未必代表真实分布,反而 p ( k ∣ x ) p(k|x) p(kx)一定程度上可以反映真实的分布,所以可以考虑另一个方向的KL散度 K L ( p ∣ ∣ q ) KL(p||q) KL(pq),将正反向的KL散度结合从而得到对称KL散度的公式如下所示。

S K L = K L ( q ∥ p ) + K L ( p ∥ q ) S K L=K L(q \| p)+K L(p \| q) SKL=KL(qp)+KL(pq)

将这个思路从KL散度迁移到交叉熵上面,就可以得到对称交叉熵SCE的公式如下所示。

S C E = C E + R C E = H ( q , p ) + H ( p , q ) S C E=C E+R C E=H(q, p)+H(p, q) SCE=CE+RCE=H(q,p)+H(p,q)

这里的 R C E = H ( p , q ) RCE = H(p,q) RCE=H(p,q) H ( q , p ) H(q,p) H(q,p)的反向版本,称为反向交叉熵Reverse Cross Entropy,RCE损失的计算式如下。

ℓ r c e = − ∑ k = 1 K p ( k ∣ x ) log ⁡ q ( k ∣ x ) \ell_{r c e}=-\sum_{k=1}^{K} p(k \mid \mathbf{x}) \log q(k \mid \mathbf{x}) rce=k=1Kp(kx)logq(kx)

因此最终的对称交叉熵损失SCE定义如下。

ℓ s c e = ℓ c e + ℓ r c e \ell_{s c e}=\ell_{c e}+\ell_{r c e} sce=ce+rce

关于RCE的噪声容忍性下文会证明,但是CE项时对噪声非鲁棒的,但是CE对模型收敛又是非常有效的,因此为了获得有效性和鲁棒性,作者设计了两个超参数来解耦学习框架,超参数 α \alpha α用于解决CE的过拟合问题而 β \beta β则探索RCE的鲁棒性,因此,形式上,SL损失如下式所示。在 ℓ r c e \ell_{rce} rce中由于真实分布 q ( k ∣ x ) q(k|x) q(kx)是one-hot编码,因此含有0值,因此定义 l o g 0 = A log 0 = A log0=A,这里的A是一个小于0的常数, β \beta β的设置也和A的值有关。

ℓ s l = α ℓ c e + β ℓ r c e \ell_{s l}=\alpha \ell_{c e}+\beta \ell_{r c e} sl=αce+βrce

理论分析

首先是关于鲁棒性的分析,也就是 ℓ r c e \ell_{rce} rce对噪声是鲁棒的。不妨记样本 x x x的噪声标签为 y ^ \hat{y} y^而真实标签为 y y y,分类器为 f f f且损失函数为 ℓ r c e \ell_{rce} rce。定义 f f f在清晰标签下的风险为 R ( f ) = E x , y ℓ r c e R(f)=\mathbb{E}_{\mathbf{x}, y} \ell_{r c e} R(f)=Ex,yrce,而在噪声率为 η \eta η的标注下的风险为 R η ( f ) = E x , y ^ ℓ r c e R^{\eta}(f)=\mathbb{E}_{\mathbf{x}, \hat{y}} \ell_{r c e} Rη(f)=Ex,y^rce,记 f ∗ f^{*} f f η ∗ f_{\eta}^{*} fη R η ( f ) R^{\eta}(f) Rη(f) R η ( f ) R^{\eta}(f) Rη(f)的全局最小值。如果 f η ∗ f_{\eta}^{*} fη f ∗ f^{*} f在噪声数据下有同样的分类概率,那么称该损失是噪声鲁棒的,也叫noise-tolerant。这个的证明过程感兴趣的可以查看论文的Theorem 1部分,我这里不多赘述了,此外作者下面还继续对SL的梯度进行了推导从而分析了SL的学习过程不同于CE损失,我这里忽略推导过程,给出推导的结果,见下面的式子。

∂ ℓ s l ∂ z j = { ∂ ℓ c e ∂ z j − ( A p j 2 − A p j ) , q j = q y = 1 ∂ ℓ c e ∂ z j + ( − A p j p y ) , q j = 0 \frac{\partial \ell_{s l}}{\partial z_{j}}=\left\{\begin{array}{ll} \frac{\partial \ell_{c e}}{\partial z_{j}}-\left(A p_{j}^{2}-A p_{j}\right), & q_{j}=q_{y}=1 \\ \frac{\partial \ell_{c e}}{\partial z_{j}}+\left(-A p_{j} p_{y}\right), & q_{j}=0 \end{array}\right. zjsl={zjce(Apj2Apj),zjce+(Apjpy),qj=qy=1qj=0

∂ ℓ c e ∂ z j = { p j − 1 ≤ 0 , q j = q y = 1 p j ≥ 0 , q j = 0 \frac{\partial \ell_{c e}}{\partial z_{j}}=\left\{\begin{array}{ll} p_{j}-1 \leq 0, & q_{j}=q_{y}=1 \\ p_{j} \geq 0, & q_{j}=0 \end{array}\right. zjce={pj10,pj0,qj=qy=1qj=0

从上面的式子,学习的过程是使得 p j p_j pj趋近于1,当 p j < 0.5 p_j<0.5 pj<0.5时RCE会促进学习,当 p j > 0.5 p_j>0.5 pj>0.5时,RCE会降低样本的学习速度。当 q j = 0 ( ∂ ℓ c e ∂ z j ≥ 0 ) q_{j}=0\left(\frac{\partial \ell_{c e}}{\partial z_{j}} \geq 0\right) qj=0(zjce0)时,第二项 − A p j p y -A p_{j} p_{y} Apjpy取决于 p j p_j pj p y p_y py p y p_y py越大说明模型越信任自己的预测,同时 − A p j p y -A p_{j} p_{y} Apjpy也越大,其他标签的预测概率的下降速度就越快。当 p y = 0 p_y=0 py=0的时候, − A p j p y -A p_{j} p_{y} Apjpy为0对梯度的大小没有改变,这意味着网络对标注类别没有信息,标签很有可能是错误的。

接着作者还证明了当 A = − 2 A=-2 A=2时,RCE就退化为MAE,也就是说RCE其实是MAE的推广形式,且和GCE不同,的两项是对称的。最后,这里可以附上一个SCE loss的PyTorch实现如下。

class SCELoss(torch.nn.Module):def __init__(self, alpha=0.1, beta=1.0, num_classes=10):super(SCELoss, self).__init__()self.alpha = alphaself.beta = betaself.num_classes = num_classesdef forward(self, pred, labels):# CCEce = F.cross_entropy(pred, labels, ignore_index=-1)device = pred.device# RCEpred = F.softmax(pred, dim=1)pred = torch.clamp(pred, min=1e-7, max=1.0)label_one_hot = F.one_hot(labels, self.num_classes).float().to(device)label_one_hot = torch.clamp(label_one_hot, min=1e-4, max=1.0)rce = (-1 * torch.sum(pred * torch.log(label_one_hot), dim=1))# Lossloss = self.alpha * ce + self.beta * rce.mean()return loss

实验

关于实验配置包括如何引入噪声的,可以查看原论文,这里不展开叙述了。

下图是添加60%噪声后使用CE和SL的逐类测试准确率的区别,可以发现,SL整体性能是大大提高的,更加充分学习了每一个类别,尤其是难类别,这源于SL自适应速度会对难类别更加充分学习。

在这里插入图片描述

通过可视化CE和SL训练后学到的Representations,可以发现,即使面对噪声,SL各个类别之间的分界还是非常分明的,这就是说,SL更加noise-tolerant。

在这里插入图片描述

作者还进行了一些参数分析和消融实验,我这里就不一一展示了,下图是各个数据集上和其他方法的比较,证明了SL的SOTA性能。

在这里插入图片描述

总结

对于标签噪声的问题,作者进行了大量的实验分析,最终得到了和前人不同的结论,噪声标签下分类效果差的原因主要来源于难类别学习不充分而不是过拟合噪声标签。受到KL散度的启发,设计了和CE对称的RCE并组合得到了SL损失,作者理论证明了RCE的噪声容忍能力并实验验证了SL的噪声标签下学习的效果,是很值得关注的一个方法。本文也只是我本人从自身出发对这篇文章进行的解读,想要更详细理解的强烈推荐阅读原论文。最后,如果我的文章对你有所帮助,欢迎一键三连,你的支持是我不懈创作的动力。


http://www.ppmy.cn/news/177953.html

相关文章

罗克韦尔 Rockwell RSLogix 500 Crack

罗克韦尔自动化除了提供自动化基础硬件外&#xff0c;还提供大量的软件工具&#xff0c;并在其产品中包含了最新的Microsoft的32位Windows NT及ActiveXTM技术。这些软件为用户采用开放式的工业标准提供方便。另外借助DDE、ActiveX和ODBC兼容技术等&#xff0c;使现场数据能容易…

SUN StorageTek SL500 TEL:400-888-6656 www.tapedive.com.cn

SUN StorageTek SL500 Modular Library System Sun StorEdge L500磁带库升级&#xff0c;维护&#xff0c;保修&#xff0c;维保&#xff0c;第三方现场服务,件特价销售TE磁带库配L:400-888-6656 www.tapedive.com.cn SUN StorageTek SL500 Modular Library System Sun Stor…

SQL Server链接服务器

SQL Server 中存在可以链接到其他服务器的选项&#xff0c;一般情况下是用来与别的 SQL Server 数据库相连接&#xff0c;但是有时候也可以与一个Microsoft Access数据库 相连接。这样的操作是通过链接服务器节点实现的。 链接服务器节点可以连接到另一个数据库&#xff0c;通…

联想ideapad700-15isk(小新线下版)黑苹果完美驱动附详细安装过程

直接上安装的流程 欢迎大家关注我的个人博客联想ideapad700-15isk我的配置如下前期准备制作安装盘盘符分配设置U盘启动 开始安装添加本地引导安装完成进入设置关于clover 划重点 2020年8月30日更新2021年2月5日更新 欢迎大家关注我的个人博客 点这里进入我的个人小站 联想ide…

rfid连接mysql_SL500 RFID 与数据库接口实现

0 引言 射频识别(RFID)技术是近年来随着无线电技术和大规模集成电路的普及应用而出现的一项先进的自动识别和数据采集技术。它在国内外迅速发展,应用领域也十分广泛。射频识别技术以其特有的优势给各行各业带来了便利。本文以SL500 RFID 读写器和ICODE SLI 射频卡为例,给出了…

联想Y7000P添加内存条以及固态硬盘

过年在家买了一台联想Y7000P&#xff0c;原装是512G的PCIe通道SSD&#xff0c;主板上只剩下一个sata3接口&#xff0c;那么扩展固态盘的时候只能扩展sata接口的SSD了。我购买的配件信息如下&#xff1a; 内存条SATA接口固态硬盘海力士DDR4 2666M 16GB七彩虹 SL500 1TB 原装的…

云莲MK8215_联芸MAS0902固态硬盘开卡教程,量产工具软件下载

Maxiotek联芸MK8215_MAS0902固态硬盘详细图文开卡教程&#xff0c;正好有个英特尔INTEL芯片的MAS0902损坏了&#xff0c;七彩虹SL500固态硬盘开卡图文教程。 1&#xff1a;首先下来量产开卡软件&#xff0c;文末提供。短接进入ROM模式&#xff0c;然后点击按钮“Auto Detect”此…

七彩虹SL500固态硬盘,慧荣SM2258XT主控成功开卡成MLC模式。上教程和软件链接

七彩虹SL500到手后测试&#xff0c;发现使用了MLC/TLC双模式闪存&#xff0c;那么既然是双模式闪存&#xff0c;那么就肯定可以通过开卡&#xff08;或者叫“量产”&#xff09;的方式&#xff0c;重新开通成MLC闪存模式&#xff0c;通过降低容量的方式来保证寿命和性能&#x…