Py学习  »  机器学习算法

5 篇论文详解 Learning with Noisy Label:深度学习廉价落地

极市平台 • 4 年前 • 386 次点击  

加入极市专业CV交流群,与 10000+来自港科大、北大、清华、中科院、CMU、腾讯、百度 等名校名企视觉开发者互动交流!

同时提供每月大咖直播分享、真实项目需求对接、干货资讯汇总,行业技术交流。关注 极市平台 公众号 ,回复 加群,立刻申请入群~


作者:JackonYang

知乎链接:https://zhuanlan.zhihu.com/p/110959020

本文已由作者授权转载,未经允许,不得二次转载


目的:获取解决问题的主要思路,预判未来的主要研究方向。

预期收益:在项目的技术选型、复杂问题的解决时,提供 high level 的可靠输入。

Paper List:
Google Sheets: https://docs.google.com/spreadsheets/d/130oiMLRnYHE0YFmULx_SMrHxc3i2CxtGbdxayt4avDc/edit?usp=sharing
pdf 
汇总版本:https://github.com/JackonYang/papers/tree/master/pdf/learning-with-noisy-label

阅读背景


这是一个很热门,但很多人不熟悉的研究方向。

大的背景是:度学习依赖大量高质量的标注数据 -- 时间成本、人力成本都很高。何用半(弱)监督学习、无监督学习实现与监督学习水平相当的效果,是非常热门的研究方向。

这次的 paper reading,聚焦 Learning with noisy label:

  1. 有一定量的标注数据。-- 通过搜索引擎、公开数据集等,很容易拿到。

  2. 标注数据的质量不高,存在或高或低的标注错误。


不会覆盖无监督类学习。

相比于无监督学习,learning with noisy label 更贴近深度学习在工业界的落地。典型的状态如下:

  1. 初始阶段有一定量的标注质量未知的数据。

  2. 一般会有持续的人工投入,不断提升标注质量。人工投入的形式,可能是付费众包,可能是借助用户反馈。

  3. 对某些 label、某些错误的关注度,高于其他,需要针对性的优化。


总体观点


不管什么方法,都在回答一个问题:如何区分 clean label 和 noisy label。

  1. 直接用概率论模型去识别,比如基于 EM 算法的模型、置信学习模型等。

  2. 根据模型预测的 loss 粗选,反复迭代。

  3. 隐式的,模型自身对 noise 的容忍度更高。核心思路是改成 weighted sum loss,noisy 的权重低,clean 的权重高。问题转化为如何找 weight。


理论基础类


Paper【1】: Understanding deep learning requires rethinking generalization -- 2017


  • https://arxiv.org/abs/1611.03530

  • Chiyuan Zhang, Samy Bengio

  • 2017

  • 阅读价值:高


这是Google brain Samy Bengio 组里的工作,提出的观点并用实验证明:Deep neural networks easily fit random labels。这个观点几乎是 2017 年之后 noisy label 相关文章必引观点。

这篇文章之前,introduction 都在介绍众包 & 错误不可避免,SOTA 模型表现差。这篇文章之后,理论焦点突出为解决 noisy label 导致的 overfitting。

文章也提出了一个非常有意义的问题:

神经网络的参数量大于训练数据的量,generalization error 有的模型好,有的模型差,区别在哪里?

Deep neural networks easily fit random labels

实验方案:

  1. 用真实的数据,label 改为随机生成。

  2. model 使用标准模型,不加任何修改。

  3. 训练的效果:training error = 0,test error 与随机选的结果相同。


对结果的解释:

  1. 因为 test label 也是完全随机生成的,无法预测。test error 符合预期。

  2. training error = 0,模型参数多,有能力记住所有 dataset 点。

  3. 随机数据导致模型的 generalization error 明显增加了。


对比试验:

  1. 基于原始真实数据集,label 不变,image pixel 改成全随机,依旧可以 0 training error

  2. 用 random + 原始数据混合测试,random 比例提升,generalization 错误率提升。说明,在 random data 混淆的情况下,依旧有能力学到部分真实特征。

  3. regularization 能降低 testing error,但对 generalization error 影响不直接。


记住所有 training data 的最小模型。

two-layer ReLU network with p=2n+d parameters can express any labeling of any sample of size n in d dimension.

2 层的模型,就能记忆全部训练数据。

explicit regularizers:
  • dropout

  • weight decay

regularization is required to ensure small generalization error


Paper【2】: Convexity, Classification, and Risk Bounds


  • https://www.stat.berkeley.edu/~jordan/638.pdf

  • Bartlett

  • 2006


most loss functions are not completely robust to label noise

基于概率模型(estimate noisy label)


包括 EM-based 模型、置信学习等。

基本的数学模型是:

  1. noise 与 label 有关,狮子容易被分类成猫,但不容易被分类为轮船。

  2. 找 noisy label 和 true label 之间联合概率分布矩阵、转移矩阵。

  3. 用概率矩阵识别 clean label 或 noise label,修正数据集。


Paper【1】: Training deep neural-networks using a noise adaptation layer -- 2017


  • https://openreview.net/references/pdf?id=Sk5qglwSl

  • Jacob Goldberger

  • 2017

  • 阅读价值:高


借鉴通信的信道模型,用 EM 算法。有点像 NLP 里的 HMM 模型。

建模思路:

  • The correct unknown label can be viewed as a hidden random variable

  • Model the noise processes by a communication channel with unknown parameters.


用 EM 算法找 network 和 correct label。这个思路 2012,2016 年都有不错的文章发出。

典型的流程如下:

  • E-step, estimate the true label

  • M-step, retrain the network


缺点是,每次预测完 label 都要重新 train model。改进的思路是,用 1 个 neural network 端到端的做完 2 步。

2014 年 Sukhbaatar & Fergus 提出在最后面加一个 constrained linear layer 连接 correct label and noisy label。在部分有强假设的场景下,可行。

本文的贡献是,把 Sukhbaatar 加的 linear layer 换成 softmax layer,提高了模型的普适性。

作者的观点:

  1. 改模型可以扩展到 the case where the noise is dependent on both the correct label and the input features.

  2. 适用于 noisy distribution 未知的数据集。


Paper【2】: Confident Learning: Estimating Uncertainty in Dataset Labels -- 2019

  • https://arxiv.org/abs/1911.00068

  • Curtis G. Northcutt

  • 2019

  • 阅读价值:高


cleanlab 库的算法原理:
cleanlab code: https://github.com/cgnorthcutt/cleanlab
假定,noise 只与 true label 有关,与 feature 相互独立。

核心思路:
  1. 通过 prune, count, rank 3 步可以高效率算出 joint probabilities(true and predicted labels)

  2. 根据 joint probabilities 识别 label error。


理论基础是 Angluin 1988 的 CNP 理论。

本文的核心贡献: we prove CL exactly estimates the joint distribution of noisy and true labels with exact identification of label errors under realistic sufficient conditions.
The resulting CL procedure is a model-agnostic family of theory and algorithms for characterizing, finding, and learning with label errors. It uses predicted probabilities and noisy labels to count examples in the unnormalized confident joint, estimate the joint distribution, and prune noisy data, producing clean data as output.


迭代的学习


包含curriculum learning, semi-supervised learning, co-training, self-training。这种模型太多了,大同小异


核心思路:
  1. 先用大量/全部数据 training 一个 model。

  2. 根据 loss 等参数,选出大概率为 true 的 label。

  3. 用 true label 重新或继续 training model。

  4. 重复 2-3 步。


不同之处在于:

  1. curriculum learning 一次把 dataset 分成 N 组,从易到难的训练。其他大方法,大多每次只选出最简单的 1 组。

  2. 重复 training 的时候,学习的目标能否更复杂(全面)一点,把上一轮学到的参数也纳入新模型的学习目标里。


Paper【1】: MentorNet: Learning Data-Driven Curriculum for Very Deep Neural Networks on Corrupted Labels -- 2018


这是Li Fei-Fei 在 Google 组里的文章。
  • https://arxiv.org/abs/1712.05055

  • Lu Jiang, Li Fei-Fei

  • 2018

  • 阅读价值:高

  • code: https://github.com/google/mentornet



curriculum learning,课程学习,借鉴人类的学习模式。按照先容易后复杂的顺序,学习效果更好,学习速度更快。想象一下,给一个小学生随机丢 100 以内的加法和微积分学习任务。

难点在于,curriculum(课程)怎么选?

最早可以追溯到 Bengio 2009 年提出 curriculum learning。使用 predefined fixed curriculum。

本文的主要贡献:

  1. 自动学习 data-driven 课程。MentorNet learns a data-driven curriculum to supervise the base deep CNN, naely StudentNet.

  2. 根据 StudentNet 的反馈,更新 Curriculum。


论文里也给出了 Curriculum Learning 比较严谨的数学模型,是不错的参考资料。
简单总结:目标函数里,有 3 个参数 w, v, lambda。

其中,
  • w 就是一般 CNN 要学习的权重。

  • lambda 是超参数,表示学习难度。

  • v 是 curriculum learning 引入的权重, v_i < lambda, 表示第 i 条数据 "easy",参与本次训练。


可见,lambda 和 v 共同定义了“课程”。

学的过程是:依次固定 v,w,优化另外一个参数。

随着学习的进行,逐步调大 lambda,引入越来越多的学习数据。


-END-

推荐阅读:


极市平台视觉算法季度赛,提供真实应用场景数据和免费算力,特殊时期,一起在家打比赛吧!


添加极市小助手微信(ID : cv-mart),备注:研究方向-姓名-学校/公司-城市(如:目标检测-小极-北大-深圳),即可申请加入目标检测、目标跟踪、人脸、工业检测、医学影像、三维&SLAM、图像分割等极市技术交流群,更有 每月大咖直播分享、真实项目需求对接、求职内推、算法竞赛、干货资讯汇总、行业技术交流一起来让思想之光照的更远吧~


△长按添加极市小助手


△长按关注极市平台,获取最新CV干货


觉得有用麻烦给个在看啦~  

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/56297
 
386 次点击