论文提出了更通用的特征相关噪声类别PMD,基于此类噪声构建了数据校准策略PLC来帮助模型更好地收敛,在生成数据集和真实数据集上的实验证明了其算法的有效性。论文提出的方案理论证明完备,应用起来十分简单,值得尝试

来源:晓飞的算法工程笔记 公众号

论文: Learning with Feature-Dependent Label Noise: A Progressive Approach

Introduction


 在大型数据集中,由于标签的歧义以及标注者的大意,错误的标注是不可避免的。由于噪声对有监督训练的影响很大,所以在实际应用中研究如何处理错误的标注是至关重要的。

 一些经典方法对噪声进行独立同分布(i.i.d.)的假设,认为噪声与数据特征无关,有其自身的规律。这些方法要么直接预测噪声分布来分辨噪声,要么引入额外的正则项/损失项来分辨噪声。而另外一些方法则证明,常用的损失项本身就能够抵抗这些独立同分布的噪声,不需要关心。

 这些方法虽然有理论保证,但实际中表现都不佳,因为独立同分布的噪声假设是不真实的。这意味着,数据集的噪声是多样的,而且与数据特征相关,比如外表模糊的猫有可能被误认为狗。在光线不足或遮挡的情况下,图片失去了重要的视觉分辨线索,很容易被误标注。为了应对这个现实中的挑战,应对噪声的处理方法不仅需要有效,其通用性也是十分必要的。

 SOTA方法多数采用数据重新校准(data-recalibrating)的策略来适应各种各样的数据噪声,该策略逐步确认可信的数据或逐步校正标签,然后使用这些数据进行训练。随着数据集更加准确,模型的准确率也会逐渐提高,最终收敛到高准确率。该策略很好地利用了深度网络的学习能力,在实践中获得不错的效果。

 但目前这些策略的内在机制都没有完备的理论证明,解释为何这些策略可以使得模型收敛到理想的状态。这意味着这些策略都是case by case的,需要很小心地调整超参数,难以通用。

 基于上面的分析,论文定义了更为常见的PMD噪声族(Polynomial Margin Dimishing Noise Family),包含除了显而易见的错误之外的任意类型噪声,更符合现实场景。基于PMD噪声族,论文提出了有理论保证的数据校准方法,根据噪声分类器的置信度逐步校准数据的标签。流程如图1所示,先从高置信度的数据开始,使用噪声分类器的预测结果校准这些数据,然后使用校准后的数据提升模型,交替进行标签校准和模型提升直到模型收敛。

Method


 先定义一些数学符号,这里以二分类任务为例:

  • 定义特征空间\(\mathcal{X}\),数据\((x,y)\)均从分布\(D=\mathcal{X}\times\{0,1\}\)采样而来。
  • 定义\(\eta(x)=\mathbb{P}[y=1|x]\)为后验概率,值越大代表正标签越明显,而值越小则代表负标签越明显。
  • 定义噪声函数\(\tau_{0,1}(x)=\mathbb{P}=[\tilde{y}=1 | y=0, x]\)和\(\tau_{1,0}(x)=\mathbb{P}=[\tilde{y}=0 | y=1, x]\),其中\(\tilde{y}\)为错误标签。假设数据\(x\)的真实标签为\(y=0\),则有\(\tau_{0,1}(x)\)概率错误地标注为1。
  • 定义\(\tilde{\eta}(x)=\mathbb{P}[\tilde{y}=1|x]\)为噪声后验概率。
  • 定义\(\eta^{*}(x)=\mathbb{I}_{\eta(x)\ge\frac{1}{2}}\)为贝叶斯最优分类器,当A为真时\(\mathbb{I}_A=1\),否则为0。
  • 定义\(f(x):\mathcal{X}\to [0,1]\)为分类器打分函数,一般是网络的softmax输出。

Poly-Margin Diminishing Noise

 PMD噪声只将噪声函数\(\tau\)约束在特定的\(\eta(x)\)中间区域,区域内的噪声函数\(\tau\)的值多大都无所谓。这样的形式不仅能够覆盖特征无关的场景,也能泛化到之前的一些噪声研究的特定场景中。

 PMD噪声的定义如上所示,\(t_0\)可认为是左右两边的间隔(margin)。PMD条件只要求\(\tau\)的上界是多项式的并且在贝叶斯分类器置信的区域单调递减,而\(\tau_{0,1}(x)\)和\(\tau_{1,0}(x)\)在\(\{ x:|\eta(x)-\frac{1}{2}| < t_0 \}\)区域内可为任意值。

 前面的PMD噪声描述可能比较抽象,论文提供了可视化图片来帮助大家理解:

  • 图a是贝叶斯最优分类器的结果,即正确标签。从下面的\(\eta(x)\)曲线可以看出,两边数据的二分类概率差别较大,是容易区分的。而中间的数据的二分类概率比较接近,有较大的误标注的可能,也是我们需要重点关注的。
  • 图b是均匀噪声,该噪声认为误分概率与特征无关,每个数据点都有相同的概率被误分。上图中黑色的是被认为是正确的数据,红色则是被认为属于噪声的数据,可以看到,经过均匀噪声处理后,数据分布比较乱。
  • 图c是BCN噪声,噪声值随着\(\eta^{*}(x)\)的置信而下降。从上图可以看出,处理后的噪声数据基本都落在中间区域,也就是容易误识别的地方。但由于BCN噪声的边界与\(\eta^{*}(x)\)高度相关,而实践中一般要用模型的输出来近似\(\eta^{*}(x)\),在噪声程度较大的场景显然会有较大的出入。
  • 图d是PMD噪声,约束噪声在\(\eta^{*}(x)\)的中间区域,区域内的噪声值随意。这样做的好处在于,可以通过调控区域大小来应对不同的噪声程度,只要不是显而易见的错误都可以(即在\(\eta\)较高和较低的地方标注错误)适用。从上图可以看出,处理后的干净数据基本都分布在两边,也就是比较置信的地方。

The Progressive Correction Algorithm

 基于PMD噪声,论文提出逐步训练和纠正标签的PLC(Progressive Label Correction)算法。该算法首先使用原数据集进行warm-up阶段的训练,得到一个尚未拟合噪声的初步网络。接着,使用warm-up得到的初步网络对高置信度的数据进行标签的纠正,论文认为(也理论证明了)噪声分类器\(f\)的高置信度预测能与贝叶斯最优分类器\(\eta^{*}\)保持一致。

 纠正标签时,先选择一个高阈值\(\theta\)。如果\(f\)预测标签跟标注标签\(\tilde{y}\)不同且预测置信度高于阈值,即\(|f(x)-1/2|>\theta\),则将\(\tilde{y}\)纠正为\(f\)的预测标签。重复进行标签的纠正以及用纠正的数据集进行模型的重新训练,直到没有标签被纠正为止。

 接着,稍微降低阈值\(\theta\),使用降低的阈值进重复上述的步骤,直到模型收敛。为了方便后面的理论分析,论文定义了一个连续递增阈值\(T\),让\(\theta=1/2-T\),具体逻辑如算法1所示。

  • Generalizing to the multi-class scenario

 上面的描述都是二分类的场景,在多分类场景中,先定义\(f_i(x)\)为分类器对标签\(i\)的预测概率,\(h_x=argmax_if_i(x)\)为分类器预测的标签。将\(|f(x)-\frac{1}{2}|\)的判断修改为|\(f_{h_x}(x)-f_{\tilde{y}}(x)|\),当结果大于阈值\(\theta\)时,将标签\(\tilde{y}\)修改为标签\(h_x\)。在实践过程中,将差值判断加上对数会更加鲁棒。

Analysis


 这一块是论文的核心,主要从理论的角度验证论文提出方法的通用性和正确性。这里我们就不继续讲解了,有兴趣的可以去看看原文,我们只需要知道这个算法的用法就够了。

Experiment


 数据集噪声问题目前还没有公开的数据集,所以需要生成数据集进行实验,论文主要在CIFAR-10和CIFAR-100上进行数据生成和实验。先在原数据上训练一个网络,用该网络的预测概率近似真实的后验概率\(\eta\)。基于\(\eta\)重新采样数据\(x\)的标签\(y_x\sim\eta(x)\)作为干净数据集,前面训练得到的网络作为贝叶斯最优分类器\(\eta^{*}:\mathcal{X}\to\{1,\cdots,C\}\),其中\(C\)为类别数。需要注意的是,多类别场景中,\(\eta(x)\)输出为向量,\(\eta_i(x)\)对应向量的第\(i\)个元素。

 对于噪声的生成,有特征相关噪声和独立同分布噪声(i.d.d)两种:

  • 对于特征相关噪声,为了增加噪声的挑战难度,每个数据\(x\)根据噪声函数均可能从最高置信分类\(u_x\)变为第二置信分类\(s_x\),其中噪声函数与\(\eta(x)\)的概率相关。\(s_x\)对于\(\eta^{*}(x)\)是混淆度最高的类别,最能影响模型的性能。另外,由于\(y_x\)是从\(\eta(x)\)采样而来的,是置信度最高的类别,所以可认为\(y_x\)就是\(u_x\)。总体而言,对于数据\(x\),生成数据时要么变为\(s_x\),要么保持\(u_x\)。特征相关噪声有以下三种PMD噪声族内的噪声函数:



    由于\(\eta(x)\)是无法修改的,为了能够控制噪声程度,唯一能做的就是为噪声函数\(\tau_{u_x,s_x}\)加上常量因子,使得最终的噪声比例符合预期。对于PMD噪声,35%和70%的噪声程度即代表35%和70%的干净数据被修改成噪声。
  • 独立同分布噪声通过构建噪声转换矩阵\(T\)来进行标签的修改,其中\(T_{ij}=P(\tilde{y}=j|y=i)=\tau_{ij}\)为真实标签\(y=i\)转换为标签\(j\)的概率。对于标签为\(i\)的数据,将其标签修改为从矩阵\(T\)的第\(i\)行的概率分布采样而来的标签。论文采用了常见两种独立同分布噪声:1)均匀噪声(Uniform noise),真实标签\(i\)转换成其它标签的概率相同,即\(T_{ij}=\tau/(C-1)\),其中\(i\ne j\),\(T_{ii}=1-\tau\),\(\tau\)为噪声程度。2)非对称噪声(Asymmetric noise),真实标签\(i\)有概率\(T_{ij}=\tau\)概率转换成标签\(j\),或\(T_{ii}=1-\tau\)概率保持不变。

 在实验的时候,部分实验会组合特征相关噪声和独立同分布噪声进行噪声数据集生成和实验,最后的验证标准取模型在验证集上的准确率。训练时,采用128 batch size、0.01学习率和SGD优化器,共训练180周期保证收敛,重复3次取均值和标准差。

 PMD噪声测试,在35%和70%噪声程度下的性能对比。

 混合噪声测试,在50%-70%噪声程度下的性能对比。

 超参数对比实验。

 在真实数据集上的性能对比。

Conclusion


 论文提出了更通用的特征相关噪声类别PMD,基于此类噪声构建了数据校准策略PLC来帮助模型更好地收敛,在生成数据集和真实数据集上的实验证明了其算法的有效性。论文提出的方案理论证明完备,应用起来十分简单,值得尝试。





如果本文对你有帮助,麻烦点个赞或在看呗~

更多内容请关注 微信公众号【晓飞的算法工程笔记】

PLC:自动纠正数据集噪声,来洗洗数据集吧 | ICLR 2021 Spotlight的更多相关文章

  1. 人工智能大数据,公开的海量数据集下载,ImageNet数据集下载,数据挖掘机器学习数据集下载

    人工智能大数据,公开的海量数据集下载,ImageNet数据集下载,数据挖掘机器学习数据集下载 ImageNet挑战赛中超越人类的计算机视觉系统微软亚洲研究院视觉计算组基于深度卷积神经网络(CNN)的计 ...

  2. 关闭 Mac 拼写自动纠正与横线转换

    如果你是个程序员, 如果你恰好用 mac 自带的 notes 来做笔记, 很大可能性, 你会在里面贴代码, 但是, Mac 的拼写检查和自动纠正功能,会把代码变成你不想要的样子, 比如, 它会为你首字 ...

  3. TensorFlow数据集(一)——数据集的基本使用方法

    参考书 <TensorFlow:实战Google深度学习框架>(第2版) 例子:从一个张量创建一个数据集,遍历这个数据集,并对每个输入输出y = x^2 的值. #!/usr/bin/en ...

  4. 安利一个github上面的一个神级库thefuck,Linux命令敲错了,没关系,自动纠正你的命令

    没错就是这么神奇,名字相当噶性,thefuck.当你命令输入错误不要怕,直接来一句fuck,自动纠正你输入的命令. 在你输入错误的命令的时候,忍俊不禁的想来一句fuck,没错你不仅可以嘴上说,命令里面 ...

  5. ReLabel:自动将ImageNet转化成多标签数据集,更准确地有监督训练 | 2021新文

    人工标注数据集中普遍存在噪声,ReLabel能够自动且低成本地将原本的单标签数据集转化为多标签数据集,并且提出配合random crop使用的高效LabelPooling方法,能够更准确地指导分类网络 ...

  6. TensorFlow数据集(二)——数据集的高层操作

    参考书 <TensorFlow:实战Google深度学习框架>(第2版) 一个使用数据集进行训练和测试的完整例子. #!/usr/bin/env python # -*- coding: ...

  7. 【猫狗数据集】谷歌colab之使用pytorch读取自己数据集(猫狗数据集)

    之前在:https://www.cnblogs.com/xiximayou/p/12398285.html创建好了数据集,将它上传到谷歌colab 在colab上的目录如下: 在utils中的rdat ...

  8. Java读取图片exif信息实现图片方向自动纠正

    起因 一个对试卷进行OCR识别需求,需要实现一个功能,一个章节下的题目图片需要上下拼接合成一张大图,起初写了一个工具实现图片的合并,程序一直很稳定的运行着,有一反馈合成的图片方向不对,起初怀疑是本身图 ...

  9. voc数据集坐标,coco数据集坐标

    voc,如上图 x1 ,y1 ,x4, y4    bbox的坐标格式是,x,y的最大最小值,也就是box的左上角和右下角的坐标 coco x,y,w,h       box左上角的坐标以及宽.高 图 ...

  10. 深度学习与自动驾驶领域的数据集(KITTI,Oxford,Cityscape,Comma.ai,BDDV,TORCS,Udacity,GTA,CARLA,Carcraft)

    http://blog.csdn.net/solomon1558/article/details/70173223 Torontocity HCI middlebury caltech 行人检测数据集 ...

随机推荐

  1. centos7安装mailx

    1.安装mailx yum install mailx -y 2.配置证书 mkdir -p /root/.certs echo -n | openssl s_client -connect smtp ...

  2. SpringBoot+MybatisPlus实现关联表查询

    1.说明 最近写代码用到了mybatisPlus涉及到关联表查询.需求是这样的: 我有一个专业表major其中有个字段是所属院系dept_id,我需要通过这个dept_id关联院系表departmen ...

  3. pikachu sql inject bool盲注

    输入框中输入 已知用户名 kobe 显示了用户信息 your uid:3 your email is: kobe@pikachu 输入kobe'看一下情况 显示 您输入的username不存在,请重新 ...

  4. 详解SSL证书系列(2)SSL证书对网站的好处

    在如今谷歌.百度等互联网巨头强制性要求网站 HTTPS 化的情况下, 网站部署 SSL 证书已然成为互联网的发展趋势,我们也知道了 SSL证书可以防止网络安全威胁.那么除此外为网站部署 SSL 证书还 ...

  5. 符合ISO26262标准的建模规范检查模型静态分析静态测试工具

    Model Examiner - 功能安全解决方案(以下简称MXAM)测试套件是您进行全面静态模型分析的首选工具.MXAM提供了一种简单的方法来检查建模规范.分析模型结构和评估模型指标,所有这些功能都 ...

  6. c# 4.8 实现Windows 定时任务计划(Task Scheduler)

    分享一个我自己写的 Windows 定时任务计划(Task Scheduler) 动态创建代码,没做太多封装,留个实现笔记 首先封装一个简单配置项的类 1 public class TaskSched ...

  7. C C++指针面试题零碎整理

    最基础的指针如下: int a; int* p = &a; 答:p指向a的地址,&是取a的地址.*指的是指针中取内容的符号. 2.str[]和str*的区别: char str1[] ...

  8. protocol buffer 知识整理(备份)

     定义消息:  最简单的例子:    1 // 下面是a.proto文件的内容 2 syntax = "proto3"; //必须指明proto3,否则会被认为是proto2 3 ...

  9. 代码随想录算法训练营第三十天| 51. N皇后 37. 解数独 总结

           卡哥建议:今天这三道题都非常难,那么这么难的题,为啥一天做三道? 因为 一刷 也不求大家能把这么难的问题解决,所以 大家一刷的时候,就了解一下题目的要求,了解一下解题思路,不求能直接写出 ...

  10. IISExpress 跨域cookie的奇怪问题

    测试环境 WIN10,IIS 10,IISExpress 10,Chrome 120,Microsoft Edge 114 网站A 端口7001 只有1个Default.aspx,无前端代码.逻辑很简 ...