SL解读
Posted 周先森爱吃素
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SL解读相关的知识,希望对你有一定的参考价值。
最近看到汐梦聆海关于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} x∈X⊂Rd表明一个样本的输入是 d d d维的,而 y ∈ Y = { 1 , ⋯ , K } y \\in \\mathcal{Y}=\\{1, \\cdots, K\\} y∈Y={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(k∣x)=∑j=1Kezjezk,这里的 z j z_j zj是概率值。不妨记 x x x的GT分布为 q ( k ∣ x ) q(k \\mid x) q(k∣x),显然有 ∑ k = 1 K q ( k ∣ x ) = 1 \\sum_{k=1}^{K} q(k \\mid x)=1 ∑k=1Kq(k∣x)=1。如果是单标签的情况,那么必有 q ( y ∣ x ) = 1 q(y \\mid x) = 1 q(y∣x)=1且对所有 k ≠ y k \\ne y k=y的情况有 q ( k ∣ x ) = 0 q(k \\mid x)=0 q(k∣x)=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=1∑Kq(k∣x)logp(k∣x)
作者这里在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(q∣∣p)之间的关系如下式, H ( q ) H(q) H(q)表示 q q q的熵, q = q ( k ∣ x ) q=q(k|x) q=q(k∣x)表示样本 x x x的真实类别分布, p ( k ∣ x ) p(k|x) p(k∣x)则是预测类别分布。从KL散度的角度来看,优化的目的就是使得 p p p接近 q q q,也就是最小化两者的KL散度 K L ( q ∣ ∣ p ) KL(q||p) KL(q∣∣p)。
K L ( q ∥ p ) = H ( q , p ) − H ( q ) K L(q \\| p)=H(q, p)-H(q) KL(q∥p)=H(q,p)−H(q)
但是,当存在噪声时, q ( k ∣ x ) q(k|x) q(k∣x)未必代表真实分布,反而 p ( k ∣ x ) p(k|x) p(k∣x)一定程度上可以反映真实的分布,所以可以考虑另一个方向的KL散度 K L ( p ∣ ∣ q ) KL(p||q) KL(p∣∣q),将正反向的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(q∥p)+KL(p∥q)
将这个思路从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=1∑Kp(k∣x)logq(k∣x)
因此最终的对称交叉熵损失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对模型收敛又是非常有效的,因此为了获得有效性和鲁棒性,作者设计了两个超参数来解耦学习框架,超参数