论文阅读《Symmetric Cross Entropy for Robust Learning with Noisy Labels》

本文介绍了ICCV19论文中针对噪声标签问题,通过结合Symmetric Cross Entropy (SL)损失,改进了传统交叉熵在处理易类和硬类上的不足。SL利用KL散度的对称性,使得模型对噪声标签更稳健,实验证明其性能优于经典损失。关键概念包括易类、硬类、Reverse Cross Entropy (RCE) 和SLloss的计算。

论文链接:https://arxiv.org/abs/1908.06112

ICCV19的一篇文章,跟Nosiy Label相关。noisy label指的是质量再高的数据集中,难免也会存在一些错误的标注,而这些错误标注会对DNN的训练带来影响。在本文中,作者揭示了传统用作分类的交叉熵CE损失函数的弊端:即在一些easy class会对nosiy label过拟合,同时一些hard class学习的也不够充分。

因此作者根据KL散度的非对称性,提出了一种Symmetric cross entropy Learning(SL)的方法,使传统的CE和Reverse Cross Entropy(RCE)损失函数相结合。RCE是一种noise robust的损失函数,形式上与CE对称。实验证明这种SL的方法performance优于其他经典的loss。

CE的问题

在这里插入图片描述
easy class就是上图中cluster相对独立的class,由于学习的比较好,feature分得相对较开。而hard class就是不同类别feature杂糅在一起的class,学习的不够充分。可以看到CE-clean效果还可以,但存在一些hard class;而一旦存在noisy label,CE的feature分布立刻就拉垮了,很多class杂糅到了一起,导致performance下降;使用SL方法,即使有40%的noisy label,特征分得依然很开,而且杂糅到一起的hard class也不是很明显。

所以上述的两个问题就是CE的缺点:(1)hard class处理不好;(2)遇到noisy label表现下降很多。

Symmetric Cross Entropy Loss

作者受KL散度启发,KL散度衡量的是两个distribution之间的差异:
在这里插入图片描述
q表示GT,p表示预测值,这里可以把类别看作是一个distribution。由于KL散度是非对称的,所以 K L ( q ∣ ∣ p ) KL(q||p) KL(qp)表示的是让p不断向q靠近而计算的penalty。但是如果q属于noisy label,就无法表示正确的class分布了,而此时p一定程度上可以表示正确的class分布。所以这里考虑KL散度的反方向 K L ( p ∣ ∣ q ) KL(p||q) KL(pq)。因此将两个方向的KL散度计算式相结合:
在这里插入图片描述
同样的,可以将KL散度的计算公式推广到交叉熵损失函数上面:
在这里插入图片描述
而这里Reverse Cross Entropy(RCE)损失函数可以定义为:
在这里插入图片描述
所以总的SCE loss的计算式如下:
在这里插入图片描述
这里RCE损失是noisy tolerant的,而CE损失对noisy label敏感,但是他对于模型的收敛有着推动作用。于是这两个loss之间要按照一定的比例做加权,得到SL loss:
在这里插入图片描述
在公式5中的 l o g q logq logq可能会是 l o g 0 log0 log0,这种情况下令 l o g 0 = A log0=A log0=A,A通常是一个小于0的值。

Theoretical Analysis

x x x表示数据集, y y y表示clean label, y ^ \hat{y} y^表示noisy label;

clean label的风险定义为 R ( f ) = E x , y l r c e R(f)=E_{x,y}l_{rce} R(f)=Ex,ylrce,noise rate为 η \eta η的风险为 R η ( f ) = E x , y ^ l r c e R^{\eta}(f)=E_{x,\hat{y}}l_{rce} Rη(f)=Ex,y^lrce;

f ∗ f^{*} f f η ∗ f^{*}_{\eta} fη R ( f ) R(f) R(f) R η ( f ) R^{\eta}(f) Rη(f) 的全局最小值。

有了这些条件,可以开始证明了:

证明部分脑洞略大,不复杂,懒得写了,参考该文章

Experiment

在这里插入图片描述
引入SL以后,使模型变得noisy tolerant,对于easy class收敛更快,对于hard class收敛更优。

在这里插入图片描述
在这里插入图片描述

总结

对于noisy label问题,作者分析了传统分类损失CE的缺点,并受KL散度的启发,引入了一个和CE对称的RCE Loss。RCE经实验和理论论证,属于一个noisy tolerant的loss,将其与收敛能力更强的CE相结合,就是本文应对noisy label的策略。私认为noisy label这个方向虽然小众,但是在工业界应该会有不错的前景。

对称交叉熵损失函数(Symmetric Cross Entropy Loss)是传统交叉熵损失函数的一种扩展形式,旨在提升模型在处理噪声标签或类别不平衡问题时的鲁棒性和性能。交叉熵损失函数广泛用于分类任务中,尤其是在深度学习模型中,但其在面对噪声数据或类别分布不均时可能会表现不佳。为了解此类问题,研究者提出了对称交叉熵损失,其核心思想是对预测概率和真实标签之间的差异进行对称化建模。 对称交叉熵损失函数通常由两个部分组成:原始的交叉熵损失和其对称版本。具体来说,对称交叉熵损失可以表示为: $$ L_{sym} = L(p, q) + L(q, p) $$ 其中 $ L(p, q) $ 是标准的交叉熵损失,$ p $ 表示真实分布,$ q $ 表示模型预测的分布;而 $ L(q, p) $ 是其对称形式,即将预测分布与真实分布的角色互换[^2]。 对称交叉熵损失函数的一个显著优势在于它能够缓解标签噪声问题。在训练过程中,如果数据集中存在错误标签,标准交叉熵损失可能会导致模型过拟合这些噪声标签。而通过对损失函数进行对称化设计,可以增强模型对噪声的鲁棒性,从而提升泛化能力。此外,对称交叉熵损失还被应用于不平衡数据的学习任务中,例如医学图像分割等领域,通过引入对称性约束,模型能够更有效地学习少数类特征[^3]。 在实现上,对称交叉熵损失函数可以很容易地集成到现有的深度学习框架中,如PyTorch和TensorFlow。例如,在PyTorch中,可以通过组合`nn.CrossEntropyLoss()`和自定义的对称项来实现该损失函数。以下是一个简单的实现示例: ```python import torch import torch.nn as nn class SymmetricCrossEntropyLoss(nn.Module): def __init__(self, alpha=1.0): super(SymmetricCrossEntropyLoss, self).__init__() self.alpha = alpha self.cross_entropy = nn.CrossEntropyLoss() self.log_softmax = nn.LogSoftmax(dim=1) self.softmax = nn.Softmax(dim=1) def forward(self, logits, targets): ce_loss = self.cross_entropy(logits, targets) log_probs = self.log_softmax(logits) probs = self.softmax(logits) targets_one_hot = torch.zeros_like(logits).scatter_(1, targets.unsqueeze(1), 1) symmetric_loss = -torch.mean(torch.sum(targets_one_hot * log_probs, dim=1)) total_loss = ce_loss + self.alpha * symmetric_loss return total_loss ``` 上述代码中,`alpha` 是控制对称损失权重的超参数,可以根据具体任务进行调整。通过联合优化标准交叉熵损失和对称交叉熵损失,模型可以在面对噪声标签或类别不平衡问题时获得更好的性能表现。 对称交叉熵损失函数的应用领域包括但不限于图像分类、医学图像分割、自然语言处理中的文本分类等。尤其在数据质量不高或类别分布不均衡的场景下,该损失函数展现出更强的适应性和稳定性。 ---
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值