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

重磅干货,第一时间送达


作者:蒋路

来源:https://www.zhihu.com/people/roadjiang/posts

孔子云:“性能不够,数据来凑”。可是如果数据中有噪声标签(Noisy Labels)怎么办?本文借鉴Google AI的最新工作[1]来回答这个问题。

以下我们尽量避免使用专业术语,希望对非专业的读者也会有所帮助。

深度神经网络的成功依赖于高质量标记的训练数据。训练数据中存在标记错误(标记噪声,即Noisy Labels)会大大降低[2]模型在干净测试数据上的准确性[3]。不幸的是,大型数据集几乎总是包含带有不正确或不准确的标签。这导致了一个悖论:一方面,大型数据集对于深度网络的训练是非常必要的,而另一方面,深度网络往往会记住训练标签噪声,从而在实践中导致较差的模型性能。

学界已经意识到这个问题的重要性,一直在试图理解理解标签噪声,和发明新的鲁棒学习方法来克服它们。在这个过程中,受控实验[4]扮演着至关重要的角色。好比研发一种新的药物,我们需要受控实验来对影响实验结果的无关因素加以控制。在本问题里,最重要的是研究不同的噪声水平(即数据集中带有错误标签的样本的百分比)对模型性能的影响。但是,当前的受控实验仅局限在人工合成噪声,而不是真实的噪声。与实际经验相比,人工合成噪音会导致研究结果大相径庭。来看一个例子:“神经网络是否对于人工噪音数据敏感?”,前人给出了截然相反的答案:

”Deep neural networks easily fit random labels” (Zhang et al. 2017)
VS[1]

“Deep learning is robust to massive label noise” (Rolnick et al. 2017)
更重要的是,我们发现:在人工噪声上表现良好的方法,在现实世界的噪声数据集上效果可能并不理想。

在ICML 2020上发布的“Beyond Synthetic Noise: Deep Learning on Controlled Noisy Labels”中,我们做出了三点贡献。首先,我们建立了第一个受控的噪声数据集,一个来自真实世界的标签噪声(即Web标签噪声)[2]。其次,我们提出了一种简单而有效的方法来克服真实和人工行合成的噪声标签。最后,我们进行了迄今为止最大的实验,比较了人工和真实噪声在各种训练环境下的区别。

人工合成标签噪声与真实标签噪声的区别:

人工噪声与真实标签噪声的分布之间存在许多差异,以图像举例:

  1. 首先,带有真实标签噪声的图像在视觉或语义上与干净的正样本更加一致。

  2. 其次,人工标签噪声处于类级别(即同一类中的所有样本均同样嘈杂),而现实世界中的标签噪声处于实例级(与相关类无关,某些图片会比其他图片更有可能被错误标注)。例如,“本田思域”和“本田雅阁”的侧面图片会比正面拍摄的图片更容易混淆。

  3. 第三,带有真实标签噪声的图像来自开放的词汇,这些词汇可能不会与特定数据集的类词汇重叠。例如,“ ladybug”的噪声图像包括诸如“ fly”之类的图片,然而”fly"很可能是一个background class,也就是并不是我们训练集合定义的class的一部分。

基于以上原因,一个受控标签噪声的数据集将有助于更好地定量研究人工合成和实际标签噪声之间的差异。

人工合成标签噪音和Web标签噪音的比较。从左到右的列是Mini-ImageNet或Stanford Cars数据集中的真实睁眼本,带有人工合噪声的图像,以及带有错误Web标签的图像(在本文中收集)。

为了区分,我们用红色噪声来指代Web标签噪声,而用蓝色噪声来指代人工合成标签噪声 (见黑客帝国中的红色和蓝色药丸)

Web上受控标签噪声

“如果选择蓝色药丸– 故事就此结束,你在自己床上醒来,继续相信你愿意相信的一切。如果你吃下红色药丸– 你将留在奇境,我会让你看看兔子洞究竟有多深。” (黑客帝国 1999)

我们提出的Web噪声数据集合建立在两个公共数据集上:Mini-ImageNet(用于粗粒度图像分类)和Stanford Cars(用于细粒度图像分类)。遵循人工合成数据集的构建方法,我们逐渐将这些数据集中的干净图像替换为从网络上收集的标签错误的图像。

为此,我们使用类名(例如“ ladybug”)作为关键字从网络上收集图像,这是一种自动方法来收集Web上带有噪声标签的图像,完全无需人工注释。然后,我们使用Google Cloud Labeling Service的标注人员检查每个检索到的图像,这些标注人员将识别给定的Web标签是否正确。我们使用带有错误标签的Web图像来替换原始Mini-ImageNet和Stanford Cars数据集中的一定比例的干净训练图像。我们创建了10个不同的数据集,它们的标签噪声逐渐升高(从0%的完全干净数据,到80%的带有错误标签的数据)。数据集已在我们的“ 受控噪声网络标签”网站上开源。

MentorMix:一种简单的鲁棒学习方法

给定一个含有未知噪声的数据集,我们的目标是训练一个鲁棒的模型,该模型可以很好地推广到干净的测试数据上。我们介绍了一种简单有效的方法来处理噪声标签,称为MentorMix,该方法是在本文提出的数据集上开发得到的。

MentorMix是一种基于MentorNet和Mixup两种现有技术的迭代方法,包括四个步骤:加权,抽样,混合和再加权。第一步,通过MentorNet网络在mini-batch中为每个样本计算权重,并将权重normalize为分布。在此处的示例中,MentorNet使用StudentNet训练loss来确定分布中的权重。

MentorMix方法的四个步骤的图示:加权,采样,混合和再加权。

接下来,对于每个样本,我们使用重要性采样根据分布在同一个mini-batch中选择另一个样本。由于权重较高的样本往往带有正确的标签,因此在采样过程中会受到青睐。然后,我们使用Mixup混合原始样本和采样得到的样本,以便模型在两者之间进行插值,并避免过度拟合噪声。最后,我们可以为混合的样本计算一个新的权重,来计算最终的example loss。对于高噪声水平,上述二次加权的影响变得更加明显。

上面的动画演示了MentorMix中的四个关键步骤,其中StudentNet是要在噪声标签数据上进行训练的模型。正如Jiang等人所述,我们采用了非常简单的MentorNet版本,以计算每个样本的权重。

模型性能

我们在五个数据集上验证了MentorMix的有效性。其中WebVision 1.0是一个包含有现实噪声标签的220万张图像的大型数据集。MentorMix在WebVision数据集上获得最佳的结果,就ImageNet ILSVRC12验证集的top-1分类准确性而言,将以前的最佳方法提高了约3%。

Web噪声标签的新发现

这项工作代表了迄今为止最大的研究,目的是了解在噪声标签上训练的深度神经网络。我们提出了三个有关Web标签噪声的新发现:

深度神经网络可以更好地泛化在Web标签噪声
在神经网络标签噪声上,深度神经网络可能不会率先学习模式 (Learning the early patterns first)
当神经网络在噪声数据上微调时,更先进的ImageNet架构会在带有噪声的训练数据集上表现的更好。

基于我们的发现,我们有以下针对在噪声数据上训练深度神经网络的实用建议:

处理噪声标签的一种简单方法是fine-tune在干净的数据集(如ImageNet)上预训练的模型。预训练的模型越好,则可以更好地推广到下游含有噪声的训练任务上。
提前停止 (Early Stopping)可能对网络上的实际的标签噪音无效。
在人工噪声上表现良好的方法,在现实世界的噪声数据集上效果可能并不理想
Web标签噪声似乎危害较小,但是对于我们当前的robust Learning的学习方法而言,解决起来却更加困难。这个发现鼓励更多的未来研究。
建议的MentorMix可以更好地克服人工合成和现实噪音标签。
MentorMix的代码可在GitHub上获得,数据集在我们的数据集网站上。

GitHub:https://github.com/google-research/google-research/tree/master/mentormix
数据集:https://google.github.io/controlled-noisy-web-labels/index.html

更多资源:
http://www.lujiang.info/cnlw.html

参考

  1. ^这两种观点或许都是对的。不同的结论来自于不同的人工噪声设置。

  2. ^以下我们以来自网络的噪声标签来举例说明真实标签噪声。虽然真实噪声不仅包含网络标签,然而网络标签是最常见的一种真实噪声。

  3. https://ai.googleblog.com/2020/08/understanding-deep-learning-on.html

  4. https://openreview.net/forum?id=Sy8gdB9xx&noteId=Sy8gdB9xx

  5. https://openreview.net/forum?id=Sy8gdB9xx&noteId=Sy8gdB9xx

  6. https://link.zhihu.com/?target=https%3A//en.wikipedia.org/wiki/Scientific_control

下载1:OpenCV-Contrib扩展模块中文版教程

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

下载2:Python视觉实战项目52讲

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

下载3:OpenCV实战项目20讲

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

交流群

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

深度学习中的噪声数据相关推荐

  1. 深度学习中的噪声数据该如何处理?

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达本文转自|深度学习这件小事 孔子云:"性能不够,数据来凑& ...

  2. 在基于图像的深度学习中如何做数据的自动标注以及自动标注的等级介绍

    作者:Tobias Schaffrath Rosario 编译:ronghuaiyang 原文:在基于图像的深度学习中如何做数据的自动标注以及自动标注的等级介绍_ronghuaiyang的博客-CSD ...

  3. 深度学习中高斯噪声:为什么以及如何使用

    在数学上,高斯噪声是一种通过向输入数据添加均值为零和标准差(σ)的正态分布随机值而产生的噪声. 正态分布,也称为高斯分布,是一种连续概率分布,由其概率密度函数 (PDF) 定义: pdf(x) = ( ...

  4. 盘点深度学习中的各种数据增强技巧

    1 什么是数据增强? 数据增强也叫数据扩增,意思是在不实质性的增加数据的情况下,让有限的数据产生等价于更多数据的价值. 比如上图,第1列是原图,后面3列是对第1列作一些随机的裁剪.旋转操作得来. 每张 ...

  5. 深度学习中如何实现数据增强,扩大数据集

    https://jingyan.baidu.com/article/4b52d702e6a167fc5c774bbb.html 深度学习算法需要大量的训练数据,而有时我们收集不到太多的数据源,那么为了 ...

  6. 深度学习中防止过拟合的方法

    在深度学习中,当数据量不够大时候,常常采用下面4中方法: 1. 人工增加训练集的大小. 通过平移, 翻转, 加噪声等方法从已有数据中创造出一批"新"的数据.也就是Data Augm ...

  7. 【技术综述】深度学习中的数据增强(下)

    文章首发于微信公众号<有三AI> [技术综述]深度学习中的数据增强(下) 今天带来深度学习中的数据增强方法的下篇.我们将从以下几个方向入手.1,介绍一下什么是无监督的数据增强方法.2,简单 ...

  8. [综述类] 一文道尽深度学习中的数据增强方法(上)

    今天带来一次有关于深度学习中的数据增强方法的分享. 00 什么是数据增强 在深度学习项目中,寻找数据花费了相当多的时间.但在很多实际的项目中,我们难以找到充足的数据来完成任务. 为了要保证完美地完成项 ...

  9. 总结 62 种在深度学习中的数据增强方式

    数据增强 数据增强通常是依赖从现有数据生成新的数据样本来人为地增加数据量的过程 这包括对数据进行不同方向的扰动处理 或使用深度学习模型在原始数据的潜在空间(latent space)中生成新数据点从而 ...

最新文章

  1. 算法分析股票类型的相关题型
  2. MySQL设置某一字段默认为0,但是插入数据化却显示为null
  3. Android 自定义Adapter以实现自定义填充ListView的Item
  4. Laravel Model 利用 Macroable 为数据模型添加宏能力
  5. 耳目一新!令人膜拜的牛人简历!厉害的攻城师啊
  6. 解决Linux系统在设置alias命令重启后失效的问题
  7. 吴恩达神经网络和深度学习-学习笔记-41-特征点检测
  8. maven只是经手,不是触发:org.apache.maven.lifecycle.LifecycleExecutionException
  9. 基于强化学习的综合能源系统管理综述-笔记
  10. 移动产品原型和线框图设计工具介绍
  11. 怎么在PDF文档中为文字添加下划线
  12. MOFs/COFs单体 COFs单体 光电材料中间体的应用
  13. centos7安装noIP-动态域名解析最佳实践
  14. 【论文阅读】Are We Ready For Learned Cardinality Estimation?
  15. 基于Revel开发的组件化代码生成器
  16. c语言easyx背景图片,C++之设置背景图片(Easyx)
  17. 网络编程--JAVA之多线程下载后续:断点续存
  18. 老牛不知所以然-html中超长文字单行省略对弹性盒子约束的破坏现象
  19. LVGL 获取光标坐标位置
  20. MATLAB 常见取整函数( round、fix 、floor、ceil、sign、rem、mod)

热门文章

  1. 陆奇宣布卸任COO后首度露面,将担任李彦宏的个人顾问
  2. 更快的 Maven 来了!!!性能提升 300%
  3. JDK 8 Stream 数据流效率怎么样?
  4. 服务不可用怎么排查?讲了100遍还是记不住?
  5. 在吗?认识一下JWT(JSON Web Token) ?
  6. 本月Github热门开源项目排行榜...
  7. 手把手教你安装Linux虚拟机
  8. 比赛杀器LightGBM常用操作总结!
  9. 【廖雪峰python入门笔记】dict
  10. 机翻降重?掩饰抄袭?SCI期刊上的这些「奇言怪语」,不少来自中国作者