2020-01-07 10:14:57

作者 | L7

编译 | JocelynWang

使用ImageNet、CIFAR、MNIST 或 IMDB 这些数据集时,你是不是会潜意识中假设,这些数据集中的类标签都是正确的?

然而,你可能不知道:ImageNet数据集中至少有十万个标签是存在问题的。

尽管大量的研究都在使用ImageNet,但却没有发现数据集存在如此多的标签错误。原因在于,想从海量数据中寻找并描述标签错误很难;即使有相关的方法,应用范围也极其有限。

如何去识别标签错误,并表征标签噪声,是一项重要的、但却鲜少研究的工作。

在这篇文章中,我将讨论一种新兴的基本框架,它可用于识别标签错误、表征标签噪声,并使用称作置信学习(Confident Learning ,CL)的噪声标签进行学习。

这个框架可以识别 ImageNet 和 CIFAR 中的许多标签问题,并通过在干净的数据集上进行训练来提高标准 ResNet 的性能。

该框架作为 cleanlab Python 包进行了开源,相关链接为(Github 地址为):

https://github.com/cgnorthcutt/cleanlab

与深度学习框架 PyTorch相类似,CLEANLAB 是一种带有误差标签的机器学习和深度学习的框架。更多关于CLEANLAB的信息可在如下CLEANLAB的文档链接中查看:

https://l7.curtisnorthcutt.com/cleanlab-python-package

使用 cleanlab 加上 confidentlearning-reproduce repo 就可以重现 CL 论文中的结果。

https://github.com/cgnorthcutt/confidentlearning-reproduce

图为2012 ILSVRC ImageNet训练集中使用信心学习确定的前32个标签问题。其中红色方框表示标签误差,绿色方框表示本体问题,蓝色方框表示多标签图像。

上图显示了在2012 ILSVRC ImageNet训练集中使用置信学习发现的前32个标签问题。为便于解释,我们将把使用 CL 在 ImageNet 中发现的标签问题分为以下三类:

  • 多标签图像(蓝色):图像中有多个标签;

  • 本体论问题(绿色):包括“是”(比如:将浴缸标记为桶)或 “有”(比如:示波器标记为CRT屏幕)两种关系,在这些情况下,数据集应该包含其中一类;

  • 标签错误(红色):当数据集别的类的标签比给定的类标签更适合于某个示例时,就会显示标签错误

使用置信学习,我们可以在任何适当模型的任何数据集中发现标签错误。以下是常见的数据集中另外三个真实存在的示例:

Amazon Reviews、MNIST和QuickDraw数据集中当前存在的标签错误示例,由面向不同数据形式和模型的置信学习确定。

一、什么是置信学习?

置信学习(CL)已经成为监督学习和弱监督的一个子领域,可应用于以下几点:

  • 描述噪声标签

  • 寻找标签误差

  • 采用噪声标签学习

  • 寻找本体论问题

CL 基于噪声数据剪枝的原理(与修复标签错误或修改损失函数相反),以计数的方式对噪声进行评估,并对示例进行排序以进行置信训练(而不是通过精确的概率加权)。

在这里,我们在 Angluin 和 Laird 分类噪声的假设基础上,将 CL 泛化到直接估计噪声标签(给定的)和无损标签(未知的)之间的联合分布。

有噪声的(给定的)标签和未损坏的(未知的)标签之间的置信联合分布和估计联合分布的置信学习过程和样本。y~表示观察到的有噪声标签,y*表示潜在的无损标签。

从上图可以看出,CL 需要两个输入:

  • 样本外预测概率(矩阵大小:#类的#样本数)。

  • 噪声标签(矢量长度:样本数量)。

出于弱监督目的,CL包括三个步骤:

1、估计有噪声的(给定的)标签和潜在的(未知)无损标签的联合分布,以充分描述类别条件下的标签噪声。

2、查找并修剪带有标签错误的噪声样本。

3、在去除标签错误的样本后进行训练,根据估计的潜在先验对样本重新加权。

二、置信学习的好处

与大多数机器学习方法不同,置信学习不需要超参数。我们使用交叉验证来获得样本外的预测概率。置信学习还有很多其他的好处,它有以下几点优势:

  • 可直接估计噪声与真实标签的联合分布

  • 适用于多类别的数据集

  • 查找标签错误(错误按最有可能到最不可能的顺序排列)

  • 无需迭代(在ImageNet中查找训练集的标签错误需要3分钟)

  • 具有理论合理性(在真实条件下可以准确地找到标签错误和一致的联合分布估算)

  • 不需要做随机均匀的标签噪声的假设(在实践中通常不现实)

  • 只需要预测概率和噪声标签(可以使用任何模型)

  • 无需任何真实(保证无损)的标签

  • 可以自然扩展到多标签数据集

  • 可用于描述、查找和学习标签错误,CLEANLAB Python包是免费且开源的。

三、置信学习的原则

CL建立在处理噪声标签文献制定的原则之上:

1、通过修剪来搜索错误的标签,例如:遵循Natarajan等(2013);van Rooyen等(2015);帕特里尼等(2017)的工作示例,通过损失重加权来进行软剪枝,以避免迭代重标记的收敛陷阱。相关工作链接依次如下:

https://papers.nips.cc/paper/5073-learning-with-noisy-labels.pdf

https://arxiv.org/abs/1505.07634

https://arxiv.org/abs/1609.03683

2、对干净的数据进行训练统计,避免由于不完全预测概率的情况下重新加权损失(Natarajan et al.,2017)而导致的学习模型权重的错误传播,并泛化到一些开创性的工作上,如Forman (2005, 2008); Lipton et al. (2018)),相关工作链接依次如下:

http://www.jmlr.org/papers/volume18/15-226/15-226.pdf

https://dl.acm.org/citation.cfm?id=1403849

https://arxiv.org/abs/1802.03916

3、根据PageRank(Page et al.,1997)著名的鲁棒性研究成果(http://ilpubs.stanford.edu:8090/422/1/1999-66.pdf)和MentorNet (Jiang et al.,2018)的课程学习理念(https://arxiv.org/abs/1712.05055),对训练期间使用的样本进行排序,以允许使用不规范概率或SVM决策边界距离进行学习。

四、置信学习中的理论发现

更多关于CL算法、理论和证明的内容,请参阅我们的原论文。在本文中,我主要总结一下论文中的主要观点。

原论文链接:https://arxiv.org/abs/1911.00068

从理论上看,我们给出了CL(定理2:一般的逐例鲁棒性)准确发现标签误差并一致地估计出噪声与真实标签联合分布的现实条件。在我们设定的条件中,允许每个样本和每个类的预测概率存在误差。

五、置信学习是如何实现的?

为了解CL是如何工作的,让我们假设现在有一个包含狗、狐狸和牛的图像的数据集。CL通过估计噪声标签和真实标签的联合分布(下图右侧的Q矩阵)来进行工作。

左图:置信计数示例。这是一个不正常的联合估计。右图:拥有三类数据集的噪声标签和真实标签的联合分布示例。

我们来继续看这个示例,CL统计了 100 个标记为狗的图像,这些图像很可能属于类别狗,如上图左侧的C矩阵所示;同样的,CL还统计了 56 个很可能属于类别狗但标记为狐狸的图像和 32 幅很可能属于类别狗但标记为牛的图像。

对上述数学原理的过程好奇的人来说,该计数过程可以采取以下形式进行理解:

我们也鼓励通过阅读我们的原论文来理解符号的含义,这里面的中心思想可以理解成:当一个样本的预测概率大于每个类的阈值时,我们有信心将该样本记为实际上属于该阈值的类别。每个类别的阈值是该类中所有样本的平均预测概率。这种阈值形式将PU学习( Elkan & amp; Noto,2008,http://cseweb.ucsd.edu/~elkan/posonly.pdf)中众所周知的鲁棒性结果,泛化到多类别的弱监督。

使用标签噪声的联合分布查找标签问题:

从上图右侧的矩阵中,估计标签问题:

1、将联合分布矩阵乘以样本数。假设我们的数据集中有100个样本。所以,在上图中(右边的Q矩阵)有10个标记为狗但实际上是狐狸的图像。

2、将上述10张实际上很可能属于类别狐狸但标记为狗的图片标记为存在标签错误。

3、对矩阵中所有非对角项重复此操作。

注:这里简化了原论文中使用的方法,但抓住了本质。

六、置信学习的实践应用

在高噪声标签的情况下,CL相对于其他方法提高了超出10%的学习水平;在高噪声以及高稀疏的情况下,CL相对于其他方法提高了超出30%的学习水平。

上表显示了 CL 与最新的通过噪声标签的多类别学习方法 CIFAR-10 的比较。在高稀疏(见下一段)和 40% 和 70% 的标签噪声下,CL 的表现比谷歌开发的表现最好的 MentorNet,Co-Teaching 和 Facebook 研究团队开发的 Mix-up 方法提高了超过 30% 的学习水平。在信心学习之前,相关的方法对这一基准的改进要小得多(大约只提高了几个百分点)。

稀疏性(矩阵 Q 中零的分数)概括了这样一个概念,即现实世界中如 ImageNet 的数据集中有一些类别不太可能被错误地标记为其他类别,例如 p(老虎,示波器)可以看作矩阵 Q 中的 0。

如上表中突出显示的单元格所示,与 Mixup、MentorNet、SCE-loss 以及 Co-teaching 等最新方法相比,CL 较为显著地增强了对稀疏性的鲁棒性。这种鲁棒性来源于对模型 Q 直接建模,即噪声与真实标签的联合分布。

在使用 CL 清洗过的 ImageNet 上训练数据提高了 ResNet 测试准确度。

上图中,直线上的每个点(从左到右)分别描绘了每种方法在去除20%,40%…,100%估计标签错误后训练的准确性。图中黑色虚线部分描述了使用所有样本训练时的准确性。

使用CL在清洗后的 ImageNet 训练集上训练(不添加合成噪声),当移除小于十万个训练样本时,观察到使用ResNet时验证精度得到提高;当大于十万个训练样本被移除时,观察使用CL清洗后的数据与随机移除样本的结果相比相对有所改善(如图红色虚线所示)。

添加标签噪声的CIFAR数据集中标签噪声的良好表征

上图显示了CIFAR中使用CL估计标签噪声的联合分布,标签噪声增加了40%。观察图(b)中CL估计与图(a)中的真实分布有多接近以及(c)矩阵中每一项绝对差的低误差。这里概率被放大了100倍。

在ImageNet中自动发现本体(类命名)问题

CL 通过直接估计标签噪声的联合分布,自动发现数据集中类的本体问题。在上表中,我们展示了在 ImageNet 单类数据集的估计标签噪声联合分布时的最大偏离对角线。每行列出了噪声标签、真实标签、图像 id、统计数量和联合概率。因为这些是偏离了对角,所以噪声的类别和真实类别应该会是不同的,但实际上是在第 7 行中,我们看到 ImageNet 有两个不同的类,它们都被标记为“maillot”。

我们也观察到误用词语的情况:在第 一行中的标记抛射物和导弹为“是”的关系,即抛射物其实就是导弹,同样的还有第二排中的标记的浴缸即为桶;还观察到由一个词的多个定义引起的问题,比如第九行中的玉米和耳朵。

七、最后的想法

我们的理论和实验结果强调了置信学习的实用性,例如识别ImageNet和CIFAR中的许多标签问题,并通过在干净的数据集上进行训练来提高标准 ResNet 的性能。

置信学习促使人们认识到需要对数据集标签中的不确定性估计、清理训练集和测试集的方法以及数据集中本体和标签问题的识别方法做进一步的了解。

via https://l7.curtisnorthcutt.com/confident-learning

ImageNet 存在十万标签错误,你知道吗?相关推荐

  1. 超好用的自信学习:1行代码查找标签错误,3行代码学习噪声标签

    十三 发自 凹非寺 量子位 报道 | 公众号 QbitAI 你知道吗?就连ImageNet中也可能至少存在10万个标签问题. 在大量的数据集中去描述或查找标签错误本身就是挑战性超高的任务,多少英雄豪杰 ...

  2. 选择符合语义的html标签,最容易犯的HTML标签错误写法

    我们最好开始注意了,因为HTML Police会走遍你的代码然后挑出你所有没有语义的标签,这份列表包含了10个最经常犯得HTML标签错误,记下他们,能够让我们避免犯此常见错误,让我们的HTML标签符合 ...

  3. 重新标注 ImageNet:多标签,全面提升模型性能

    本文转载自机器之心. 作者:杜伟.魔王 自发布以来,ImageNet 数据集逐渐成为机器学习社区最流行的图像分类基准,但 ImageNet 自身存在着标签噪声,以及单标签标注属性与多类别样本之间的不匹 ...

  4. 10种常见的HTML标签错误写法

    随着CSS的持续发展,XHTML和HTML5的流行,HTML也越来越受重视,尤其是标签的语义化.HMTL标签看似简单,但仍然有很多错误的用法,下面列举了一些常见的HTML标签错误用法: 错误1: 将块 ...

  5. celebA标签错误celebA标签错误celebA标签错误

    celebA标签错误celebA标签错误celebA标签错误celebA标签错误celebA标签错误celebA标签错误celebA标签错误celebA标签错误celebA标签错误celebA标签错误 ...

  6. idea怎么调试jsp页面_解决idea的c标签错误

    Hello,World. 土土来啦! 最近做jq项目,遇到各种各样的问题. 首先就是c标签的错误.对,没错,就是这一串 因为土土上学期学的是jsp,所以是在myeclipse做的,这学期就想在idea ...

  7. sed命令在Mac OS X上出现“未定义标签”错误

    请参阅以下情形,创建文件,添加内容,搜索并替换它. $ touch testing.txt $ echo "this is mkyong.com" > testing.txt ...

  8. imagenet数据集类别标签和对应的英文中文对照表

    预测结果输出one-hot类型,最大概率的下标即为对于类别号   0: 'tench, Tinca tinca',                             丁鲷(鱼) 1: 'gold ...

  9. imagenet数据集类别标签对应

    原文请见 这里 {"0": ["tench", "Tinca tinca"],"1": ["goldfish& ...

最新文章

  1. python 一个文本是否包含另一字符串 in find是区分大小写的
  2. 2018年08月19日发烧诸事记
  3. SQL优化—— 大批量插入数据
  4. 由 Session 和 Cookie 的区别说起
  5. (数据科学学习手札61)xpath进阶用法
  6. 技术系列课回顾 | 直播点播窄带高清之 JND 感知编码技术
  7. Windows下Eclipse提交MR程序到HadoopCluster
  8. css 剪辑图片_CSS中的clip-path裁剪图片用法
  9. 如何理解python_如何理解 Python
  10. c语言 程序循环,C语言程序设计-循环例子
  11. Python操作MySQL(一)
  12. IOS开发学习----给表视图设置缩进级别
  13. 配置 SQL Server 2005 以允许远程连接(服务器端)
  14. 最新wp建站做淘宝客系统教程(共6课)附源码
  15. unity 解决乱码_解决unity3d读写中文乱码
  16. ue4水墨材质_PS使用水墨烟雾笔刷临摹一匹水墨烟雾骏马_资源库
  17. 每日一词20190306——经纬度(longitude and latitude)
  18. ttest函数使用方法_【Excel函数】TTEST函数 - 曹海峰个人博客
  19. 快商通智能客服云平台入选中科院《互联网周刊》“智能营销榜”
  20. 批量提取PPT里面包含的图片教程

热门文章

  1. xml命名空间的作用类似于java中包名所起的限定范围的作用
  2. OpenAI 研究员最新博客:如何在多GPU上训练真正的大模型?
  3. 日程来了!2021年佛山敏捷之旅暨第1届佛山DevOps社区Meetup
  4. 作为程序员,你在编程中吃了哪些数学的亏?
  5. 《LINQ实战》译者感言
  6. 人声提取工具Spleeter安装教程(linux)
  7. 史上最全的ubuntu16.04安装nvidia驱动+cuda9.0+cuDnn7.0
  8. Scala使用JUnit4单元测试
  9. 70页论文,图灵奖得主Yoshua Bengio一作:“生成流网络”拓展深度学习领域
  10. 知识驱动的推荐系统:现状与展望