专栏首页相约机器人超好用的自信学习:1行代码查找标签错误,3行代码学习噪声标签

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

你知道吗?就连ImageNet中也可能至少存在10万个标签问题。

在大量的数据集中去描述或查找标签错误本身就是挑战性超高的任务,多少英雄豪杰为之头痛不已。

最近,MIT和谷歌的研究人员便提出了一种广义的自信学习(Confident Learning,CL)方法,可以直接估计给定标签和未知标签之间的联合分布。

这种广义的CL,也是一个开源的Clean Lab Python包,在ImageNet和CIFAR上的性能比其他前沿技术高出30%。

这种方法有多厉害?举个栗子。

上图是2012年ILSVRC ImageNet训练集中使用自信学习发现的标签错误示例。研究人员将CL发现的问题分为三类:

1、蓝色:图像中有多个标签; 2、绿色:数据集中应该包含一个类; 3、红色:标签错误。

通过自信学习,就可以在任何数据集中使用合适的模型来发现标签错误。下图是其他三个常见数据集中的例子。

目前存在于Amazon Reviews、MNIST和Quickdraw数据集中的标签错误的例子,这些数据集使用自信学习来识别不同的数据模式和模型。

这么好的方法,还不速来尝鲜?

什么是自信学习?

自信学习已然成为监督学习的一个子领域。

从上图不难看出,CL需要2个输入:

1、样本外预测概率; 2、噪声标签;

对于弱监督而言,CL包括三个步骤:

1、估计给定的、有噪声的标签和潜在的(未知的)未损坏标签的联合分布,这样就可以充分描述类条件标签噪声; 2、查找并删除带有标签问题的噪声(noisy)示例; 3、进行消除错误的训练,然后根据估计的潜在先验重新加权示例。

那么CL的工作原理又是什么呢?

我们假设有一个数据集包含狗、狐狸和奶牛的图像。CL的工作原理就是估计噪声标签和真实标签的联合分布(下图中右侧的Q矩阵)。

左:自信计数的示例;右:三类数据集的噪声标签和真实标签的联合分布示例。

接下来,CL计数了100张被标记为“狗”的图像,这些图像就很可能是“狗”类(class dog),如上图左侧的C矩阵所示。

CL还计数了56张标记为狗,但高概率属于狐狸的图像,以及32张标记为狗,但高概率属于奶牛的图像。

而后的中心思想就是,当一个样本的预测概率大于每个类的阈值时,我们就可以自信地认为这个样本是属于这个阈值的类。

此外,每个类的阈值是该类中样本的平均预测概率。

轻松上手Clean Lab

刚才也提到,本文所说的广义CL,其实是一个Clean Lab Python包。而它之所以叫Clean Lab,是因为它能“clean”标签。

Clean Lab具有以下优势:

速度快:单次、非迭代、并行算法(例如,不到1秒的时间就可以查找ImageNet中的标签错误); 鲁棒性:风险最小化保证,包括不完全概率估计; 通用性:适用于任何概率分类器,包括 PyTorch、Tensorflow、MxNet、Caffe2、scikit-learn等; 独特性:唯一用于带有噪声标签或查找任何数据集/分类器标签错误的多类学习的软件包。

1行代码就查找标签错误!

# Compute psx (n x m matrix of predicted probabilities) on your own, with any classifier.
# Be sure you compute probs in a holdout/out-of-sample manner (e.g. cross-validation)
# Now getting label errors is trivial with cleanlab... its one line of code.
# Label errors are ordered by likelihood of being an error. First index is most likely error.
from cleanlab.pruning import get_noise_indices

ordered_label_errors = get_noise_indices(
    s = numpy_array_of_noisy_labels,
    psx = numpy_array_of_predicted_probabilities,
    sorted_index_method='normalized_margin', # Orders label errors
 )

3行代码学习噪声标签!

from cleanlab.classification import LearningWithNoisyLabels
from sklearn.linear_model import LogisticRegression

# Wrap around any classifier. Yup, you can use sklearn/pyTorch/Tensorflow/FastText/etc.
lnl = LearningWithNoisyLabels(clf=LogisticRegression())
lnl.fit(X = X_train_data, s = train_noisy_labels)
# Estimate the predictions you would have gotten by training with *no* label errors.
predicted_test_labels = lnl.predict(X_test)

接下来,是Clean Lab在MNIST上表现。可以在这个数据集上自动识别50个标签错误。

原始MNIST训练数据集的标签错误使用rankpruning算法进行识别。描述24个最不自信的标签,从左到右依次排列,自顶向下增加自信(属于给定标签的概率),在teal中表示为conf。预测概率最大的标签是绿色的。明显的错误用红色表示。

传送门

项目地址: https://github.com/cgnorthcutt/cleanlab/

自信学习博客: https://l7.curtisnorthcutt.com/confident-learning

Reddit讨论: https://www.reddit.com/r/MachineLearning/comments/drhtkl/r_announcing_confident_learning_finding_and/

本文分享自微信公众号 - 相约机器人(xiangyuejiqiren)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-11-10

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • TensorFlow 2.0中的多标签图像分类

    本文介绍一些在训练多标签图像分类器时可能会感兴趣的概念和工具。完整的代码可以在GitHub上找到。

    代码医生工作室
  • 通过深度学习魔法为您的照片添加样式

    在成像的上下文中的样式迁移是指将一个图像的“样式”迁移到另一个图像的过程,同时保持第二图像的“内容”。

    代码医生工作室
  • 使用快速密集特征提取和PyTorch加速您的CNN

    早在三月份,就开放了实施“具有池化或跨越层的CNN的快速密集特征提取”,虽然未广为人知,但2017年BMVC发表的论文提供了一种高效优雅的解决方案,可以避免在使...

    代码医生工作室
  • 超好用的自信学习:1行代码查找标签错误,3行代码学习噪声标签

    在大量的数据集中去描述或查找标签错误本身就是挑战性超高的任务,多少英雄豪杰为之头痛不已。

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

    在大量的数据集中去描述或查找标签错误本身就是挑战性超高的任务,多少英雄豪杰为之头痛不已。

    昱良
  • vim-tabe多标签切换

    原文链接:https://www.cnblogs.com/liqiu/archive/2013/03/26/29819...

    ccf19881030
  • SEO优化搜索引擎能识别的常用标签有哪些

    2. html中的标签一般都是成对出现的,分开始标签和结束标签。结束标签比开始标签多了一个/。

    高级优化师
  • 【融职培训】Web前端学习 第2章 网页重构2 常用的html标签

    上一节我们已经了解了html和css的基本概念,本节通过上一节的一个例子来说说HTML的语法.

    学习猿地
  • Web前端学习 第2章 网页重构2 常用的html标签

    上一节我们已经了解了html和css的基本概念,本节通过上一节的一个例子来说说HTML的语法.

    学习猿地
  • 互联网进入标签时代

    最近有三个产品的改版引起了我的注意:一个是网易跟帖上线了标签功能,用户可以给其他跟帖用户打上特定标签,看上去是为了提升互动性和实现用户自运营;第二是百度图片搜索...

    罗超频道

扫码关注云+社区

领取腾讯云代金券