数据集中存在错误标注怎么办? 置信学习帮你解决

小白学视觉

共 4467字,需浏览 9分钟

 ·

2022-08-08 19:54

点击上方小白学视觉”,选择加"星标"或“置顶

重磅干货,第一时间送达

如果你曾经使用过诸如 CIFAR、MNIST、ImageNet 或 IMDB 之类的数据集,那么你可能会假设类标签是正确的。令人吃惊的是,ImageNet 中可能至少有 10 万个标签有问题。为什么我们不早点找到它们?在海量数据集中描述和发现标签错误的原则性方法非常具有挑战性,解决方案也很有限。
在这篇文章中,我讨论了一个新兴的、原则性的框架,用于识别标签错误、描述标签噪声,并使用被称为置信学习(CL)的噪声标签进行学习,该框架是开源的 cleanlab Python 包。
cleanlab 是一个带有标签错误的机器学习和深度学习框架,和 PyTorch 类似。在 cleanlab 文档中了解更多信息(https://l7.curtisnorthcutt.com/cleanlab-python-package)。
cleanlab 加上 confidentlearning-reproduce repo 就可以重现 CL 论文中的结果(https://arxiv.org/abs/1911.00068)。
2012 年 ILSVRC ImageNet 训练集中通过置信学习确定的前 32 个标签问题。标签错误用红色框表示,绿色表示本体论问题,蓝色表示多标签图像
上图显示了使用置信学习发现的 2012 ILSVRC ImageNet 训练集中的标签错误的例子。为了便于解释,我们将使用 CL 在 ImageNet 中发现的标签问题分为三类:
  • 多标签图像(蓝色):在图像中有多个标签
  • 本体论问题(绿色):包括“是”或 “有”两种关系,在这些情况下,数据集应该包含其中一类
  • 标签错误(红色):数据集别的类的标签比给定的类标签更适合于某个示例
使用置信学习,我们可以使用任何合适的模型在任何数据集中找到标签错误。下面是常见数据集中的其他三个实际示例。
在 Amazon 评论中存在的标签错误的例子,使用置信学习来识别不同的数据模式和模型

    什么是置信学习?


置信学习(CL)已成为监督学习和弱监督的一个子领域,可以被用于:
  • 描述标签噪声
  • 查找标签错误
  • 学习噪声标签
  • 发现本体论问题
CL 基于噪声数据剪枝的原理,通过计数对噪声进行评估,并对实例进行排序以进行置信训练。在这里,我们在 Angluin 和 Laird 分类噪声的假设基础上,将 CL 泛化到直接估计给定噪声标签和无噪声标签之间的联合分布。
带噪标签与不带噪标签置信联合与估计联合分布的置信学习过程及实例,其中,y~ 表示观察到的噪声标签,y* 表示潜在的未损坏标签
从上图可以看出,CL 需要两个输入:
  • 样本外预测概率(矩阵大小:类的样本数)
  • 噪声标签(矢量长度:示例数)
出于弱监督的目的,CL 包括三个步骤:
  1. 估计给定噪声标签和潜在(未知)未损坏标签的联合分布,以充分描述类条件标签噪声
  2. 查找并删除带有标签问题的噪音示例
  3. 去除训练误差,通过估计潜在先验重新加权实例

    置信学习的优点


与大多数机器学习方法不同,置信学习不需要超参数。我们使用交叉验证从样本中获得预测概率。置信学习还有许多其他优点:
  • 直接估计噪声和真标签的联合分布
  • 适用于多类数据集
  • 查找标签错误(错误按最有可能到最不可能的顺序排列)
  • 是非迭代的(在 ImageNet 中查找训练标签错误需要 3 分钟)
  • 在理论上是合理的(现实条件下准确地找到标签误差和联合分布的一致估计)
  • 不假设标签噪声是随机均匀的(在实践中通常行不通)
  • 只需要预测概率和噪声标签(可以使用任何模型)
  • 不需要任何真实(保证不损坏)的标签
  • 自然扩展到多标签数据集
  • 作为 cleanlab Python 包,它是免费、开源的,用于描述、查找和学习标签错误

    置信学习的原则


CL 是在处理噪音标签的文献中制定的原则之上建立起来的:
  • 剪枝以搜索标签错误。例如,通过损失重加权使用软剪枝,以避免迭代重标记的收敛陷阱。
  • 对干净数据进行统计训练,避免在不完全预测概率的情况下重新加权损失(Natarajan et al.,2017),从而避免学习模型权重中的错误传播。
  • 对训练期间使用的示例进行排序,以允许使用不规范概率或 SVM 决策边界距离进行学习。

    置信学习的理论发现

有关 CL 算法、理论和证明的全部内容,请阅读这篇论文。这里,我总结一下论文的主要观点。
理论上,论文给出了 CL(定理 2:一般的逐例稳健性)准确地发现标签错误并一致地估计噪声和真实标签的联合分布的现实条件。我们的条件允许每个例子和每个类的预测概率中有错误出现。

    置信学习是如何工作的?


为了了解 CL 是如何工作的,让我们假设我们有一个包含狗、狐狸和牛的图像的数据集。CL 通过估计噪声标签和真标签的联合分布(下图右侧的 Q 矩阵)来工作。
左:置信计数示例,这是一个不正常的联合估计;右:有三类数据的数据集的噪声标签和真标签的联合分布示例
继续我们的示例,CL 统计 100 个标记为 dog 的图像,这些图像很可能属于 dog 类,如上图左侧的 C 矩阵所示。CL 还统计了 56 幅高概率标记为 fox 的图像和 32 幅高概率标记为 cow 的图像。
你可能对它的数学过程比较好奇,好吧,这个计数过程采用的是下面的公式:
置信联合方程
我们鼓励阅读论文原文来理解公式中的符号,这里的中心思想是,当一个例子的预测概率大于每个类的阈值时,我们自信地认为这个例子实际上属于该阈值的类。每个类的阈值是该类中示例的平均预测概率。这种阈值形式将 PU 学习中众所周知的鲁棒性结果(Elkan&Noto,2008)推广到多类弱监督(http://cseweb.ucsd.edu/~elkan/posonly.pdf)。

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


从上图右侧的矩阵中,估计标签问题:
  • 将联合分布矩阵乘以示例数。让我们假设我们的数据集中有 100 个示例。所以,在上图中(右边的 Q 矩阵),有 10 个标记为 dog 的图像实际上是狐狸的图像。
  • 将 10 张标记为 dog 的图片标记为标签问题,其中属于 fox 类的可能性最大。
  • 对矩阵中的所有非对角项重复此操作。
注意:虽然这简化了本文中使用的方法,但抓住了本质。

    置信学习的实际应用


在高噪音和高稀疏的情况下,平均来说,CL 提高了 10% 以上高噪声学习水平和 30% 以上的高稀疏学习水平。
上表显示了 CIFAR-10 上带噪声标签的多类学习的 CL 与最新方法的比较。在高稀疏性(见下一段)和 40%、70% 的标签噪声的情况下,CL 的表现优于 Google 表现最好的 MentorNet、Co-Teaching 和 Facebook 研究院的 Mix-up,性能超过它们 30%。在使用置信学习之前,对这一基准的改进要小得多(大约只有几个百分点)。
稀疏性(Q 中零的分数)概括了这样一个概念,即现实世界中的数据集,如 ImageNet,有一些类不太可能被错误地标记为其他类,例如 p(tiger,oscilloscope) ~ 0 in Q。如上表中突出显示的单元格所示,与 Mixup、MentorNet、SCE-loss 和 Co-Teaching 等最新方法相比,CL 显著增强了对稀疏性的鲁棒性。这种鲁棒性来自于直接建模 Q,即噪声和真实标签的联合分布。
CL 清洗 ImageNet 提高 ResNet 测试精度
在上图中,每种方法的直线上的每个点,从左到右,描述了训练的准确性,去除了 20%、40%…、100% 的估计标签错误。黑色虚线用所有例子描述了训练时的准确性。当移除少于 100k 个训练示例时,使用 CL 在清洗过的 ImageNet 训练集上训练(不添加合成噪声),观察 ResNet 验证精度的提高。当超过 100k 个训练实例被移除时,观察使用 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

好消息!

小白学视觉知识星球

开始面向外开放啦👇👇👇




下载1:OpenCV-Contrib扩展模块中文版教程
在「小白学视觉」公众号后台回复:扩展模块中文教程即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。

下载2:Python视觉实战项目52讲
小白学视觉公众号后台回复:Python视觉实战项目即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。

下载3:OpenCV实战项目20讲
小白学视觉公众号后台回复:OpenCV实战项目20讲即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。

交流群


欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~



浏览 19
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报