浏览量:4318 最近编辑于:null
0x01 Introduction
最近在做数据筛选方面的项目,看了些噪声方面的论文,今天就讲讲之前看到的一篇发表于ICCV2019上的关于Noisy Labels的论文《NLNL: Negative Learning for Noisy Labels》
论文地址:https://arxiv.org/pdf/1908.07387.pdf
这篇论文的核心思想是NL(Negative Learning)也就是利用complementary label(互补标签)对模型进行训练从而提升噪声鲁棒性
0x02 Negative Learning
对于一个图像分类任务,传统的学习策略PL(Positive Learning)利用图像正确的标签:"input image belongs to this label"。但在噪声情况下,PL会提供错误的信息,随着训练的进行会逐渐拟合噪声标签从而降低模型性能。因此,作者提出了NL(Negative Learning):"input image does not belong to this complementary label”。
Complementary label的意思是当前训练图片不属于该标签。举个例子,一张狗的图片,它的正确标签是狗,噪声标签是汽车,而补标签是鸟(这张图片不属于鸟)。虽然补标签不是真正的标签,但确实在前期训练中能为模型提供有用的信息。那么怎么训练呢?
我们先来看一下传统的交叉熵函数:

其中y是真实标签,p是模型输出经过softmax之后的概率预测分布。
再来看看补标签情况下的交叉熵损失函数:

y hat是补标签,对数部分换成了1-p。分析一下当p越接近1的时候,也就是模型预测越接近补标签的时候log项越趋近于0,loss越大。这就达到我们的目的,告诉模型预测成补标签是不对滴!如此一来模型就能接受一定程度的信息,进行一定程度的优化,但这还不够因为补标签没有正确标签所含的信息量大。
0x03 SelNLPL
作者基于上述启发提出了名为"SelNLPL"的训练框架。伪代码如下:

可以看到SelNLPL分为3个步骤:NL---->SelNL--->SelPL. NL对应之前说的利用补便签优化式2。SelNL在NL的基础上加了一个判断,如果样本对应的模型输出p大于1/c这一阈值,则更新,否则不更新参数。SelPL则是传统的PL加上了一个同上的判断,不过阈值是γ。

可以看到经过上述3个步骤,训练集和测试集性能逐渐提高。
0x04 Experiments

作者在噪声情况下做了实验,经过论文提出的pipeline,噪声样本和干净样本逐渐被分开(置信度拉开)。这样,我们在训练后期就可以根据模型输出的置信度判断样本是否为噪声样本。
最后,作者还进一步提出,可以结合目前主流的半监督学习的思想将噪声数据当成Unlabel data进行半监督学习(参考DivideMix https://arxiv.org/pdf/2002.07394.pdf)。