Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >自适应缺陷数据,业务场景下的神经网络训练

自适应缺陷数据,业务场景下的神经网络训练

原创
作者头像
云大学小编
修改于 2020-06-08 02:40:40
修改于 2020-06-08 02:40:40
8830
举报
文章被收录于专栏:云+直播云+直播

点击观看大咖分享

深度学习的成功建立在大量的干净数据和深度模型基础上,但是在现实场景中数据和模型往往不会特别理想,比如数据里存在很多标签噪音,或者考虑到模型的推理速度,神经网络的层数不够深等。特别是对于业务场景,数据往往存在很多缺陷,因此让模型能够自适应的从缺陷数据里学习是业务成功的保障。


定义带噪学习目标

现实数据中存在的标签噪音(label noise)根据Feature可以分成两种:Feature independent noiseFeature dependent noise。Feature independent noise是与特征无关的,比如将一只狗的图片误标记成汽车,狗和汽车没有什么相似特征,所以属于这类。Feature independent noise是与特征有关的,比如说狗和狼具有很多相似特征属性,标注人员可能把狗误标记成狼,那就属于这类。其实现实场景更多存在都是feature dependent noise。

噪音普遍存在,所以我们需要训练神经网络进行带噪学习,并且要能实现比较好的性能。那么noise label learning的目标是设计一个loss function,使得在noisy labels下训练得到的解,在性能上接近在clean labels下训练得到的解。


各有千秋:主要带噪学习方法分析

关于带噪学习,近些年有一些重要论文。AAAI 2017年发表的这篇研究说明,MAE以均等分配的方式处理各个sample,而CE(cross entropy)会向识别困难的sample倾斜。因此,针对noisy labels,MAE比CE更加鲁棒,不容易让模型过拟合到label noise上。

当然,CE也有自身优势。2018年的这篇文章是接着前面一篇文章往下做的。这篇文章指出,MAE虽然比CE在noisy label更加鲁棒,但是CE的准确度更高,拟合也更快

那么,如何结合CE和MAE的优势呢?这篇文章提出这样一个loss function,也就叫做GCE loss(Generalized Cross Entropy loss)。它如何结合二者的优势?这里q是一个0到1之间的超参数,当q趋近于0的时候,这个Lq就退化成了一个CE loss,当 q趋近于1时,Lq就退化成了MAE loss。所以在真实场景中,只要对q进行调整,就会让这个loss在一些noise label数据下有很好的表现。

还有的论文是基于信息论设计的loss function,Deterministic information loss。它的Motivation是想寻找一个信息测度(information measure)I。假设在I下任意存在两个分类器f、f',如果在噪音数据集下,通过I, f比f'表现得更好,那么在干净数据集下,f比f'表现得也好,也就是说它在噪音数据集和干净数据集上满足一致性。如果在噪音数据集下它表现得好,那通过这个一致性,那么在干净数据集下表现得也一定很好。

把时间往前推进一下,讲一些目前正在审稿中的文章,关于Peer loss。我们构造的时候它等于两个loss的加权,α是权重系数,衡量l1和l2的大小关系,Xi和Y ̃是样本和对应的label。

为什么peer loss可以很好地解决noisy labels问题?为了方便,这里先把l1、l2都定义成CE loss,那么在第一项,它表现的像positive learning,因为它就是一个传统的CE function,而在第二项,它像 negative learning,也就是在标记错的时候,比如把狗标成汽车,如果用positive learning进行学习的话那就出现问题了,它是随机从一个label中进行抽取,希望让模型学到它不是一个鸟,狗不是一个鸟,它的语义关系首先是成立的,是正确的,这样一来,第二项对模型也能起到一个积极的导向作用。

更加有意思的是,单独训练第一项和单独训练第二项都不可能使模型达到理论上的最优,因为模型存在noisy labels。但是我们证明了它们两项联合训练,在统计上是可以让模型达到最优。

我们提出了一个主要定理,α是权重项,我们证明了存在一个最优的α,用peer loss在noisy labels下进行优化,它得出的神经网络的解等价于用l1在clean labels下进行优化,可以把l1理解成CE loss。所以我们理论证明了peer loss的最优性

看一下peer loss在数据集下的表现,这里使用的数据集是CIFAR-10,然后我们让CIFAR-10数据集里面有40%的uniform noise或者说symmetric noise。图中的蓝色代表clean label分布橘黄色代表noisy label分布。通过peer loss优化后,神经网络可以把两类比较完美地区分开,而且中间间隔很大,所以说证明了peer loss不仅在理论上成立,在实际上其实效果也不错

再看一下数值的实验结果。我们在MNIST、Fashion MNIST、CIFAR-10上进行了实验,可以看到MNIST和Fashion MNIST上,用peer loss优化的结果超过了一些其他的结果,包括DMI的结果三四十个点,这是非常大的进步。在CIFAR-10上也超过将近5个点,四个多点左右这样的一个结果。而且,我们发现peer loss尤其对Sparse,High这种noise type表现得特别明显

以上讲的方法主要是设计loss function的思路,让网络能够抵抗noisy labels。但其实还有很多其他方法,比如samples selection和label correction,这两个方法是通过选择样本对样本进行纠正来进行带噪学习训练。

这篇发表在2018年NeurlPS的文章是关于Co-teaching。它的基本假设是认为noisy labels的loss要比clean labels的要大,于是它并行地训练了两个神经网络A和B,在每一个Mini-batch训练的过程中,每一个神经网络把它认为loss比较小的样本,送给它其另外一个网络,这样不断进行迭代训练。

接下来介绍腾讯优图在2019年底发表的一篇文章,解决一类特殊的label noise。这类label noise不是人为标注产生的,而是在训练中产生的。比如说有这样一批没有标记的样本,然后通过一个聚类算法得到inliers和outliers,outliers是聚类算法中认为这一点是孤立点或者是噪音点,它没法归到聚类算法的ID里面,就叫做outliers;inliers是聚类算法对这些样本进行聚类后得到一个个id,但每一个id里面可能存在noise,比如说对于id1里面有一个三角,这个三角更应该是id3里面的样本。它是在模型的聚类过程中产生,所以说这是一类特殊的noise type

腾讯优图提出了一个框架,叫Asymmetric Co-teaching。因为聚类中存在inlier和outliers,这两个不同源,所以用非对称的思想去解决noise label的问题。

具体来说,首先有很多 Target Data,经过模型聚类得到Inliers和Outliers。然后通过k近邻将outiers进行label。下面一步是比较关键的,和Co-teaching一样,我们也并行训练两个神经网络C和M,但是我们往C和M送到的样本是非同源的,一个inlier一个outliers。然后C和M互相发送他们认为loss比较小的样本进行迭代训练。每次训练之后,再进行聚类。不断重复这种迭代过程,最后我们发现outliers越来越少,inlier也是越来越多,inlier每个ID的noise也是越来越少。

可以看一下Asymmetric Co-teaching的结果,我们主要是在行人重识别这个问题上衡量方法的有效性,也就是ReID。可以看我们这个clustering-based的方法在Market和Duke数据集中有不错的表现,比之前的一些方法也多了五六个点。

总结一下,关于noisy label learning前面主要介绍了六个方法,我把它们归为了Feature independent noiseFeature dependent noise。但是值得注意的是,并不是一个方法去解决Feature independent noise就无法解决Feature dependent noise,只是说一个方法它更适用于解决哪个问题,然后标线框的这两个是我们的工作。


多模型写作,提升网络表达能力

关于协作学习其实学术界没有统一的定义,一般来讲只要是多个模型互相协作,去解决一个或者多个任务,那就可以把这种学习范式叫做协作学习。

按照任务分,协作学习可以分成两个:一个是解决多个任务,有Dual Learning和Cooperative Learning;一个是多个模型一起协作解决一个任务。因为dual learning和cooperative learning主要是解决自然语言处理的问题,自然语言处理涉及到比如说中文翻译成英文,英文翻译成中文,这是多个任务。我们这里主要是讲CV方面,所以说我们主要讲解决一个任务,接下来会介绍Co-training、Deep Mutual Learning、Filter Grafting和DGD这几个工作。

关于 Co-training的这篇文章非常古老,是1998年的,但是它的引用量已经好几千,它其实是解决了半监督的问题。

接下来介绍2018年的这篇文章,发表在CVPR,这篇叫做Deep Mutual Learning。它的思想极其简单,我们都知道蒸馏的时候teacher是fixed,然后对于学生进行监督,这篇文章的思想就是在蒸馏的过程中老师并不保持fixed,也进行迭代的训练操作,也就是说老师教学生,学生也教老师。

时间再拉近一点,这是今年腾讯优图中稿CVPR2020年的一篇文章,叫做Filter Grafting。这篇文章的motivation是什么呢?我们知道训练好的神经网络存在很多冗余或者说无效的filter,比如说l1 norm很低,那Pruning就是想把这些filter给移除掉来加速网络的推理能力。那么我们想,如果我们不把这些无效的filter移除掉,而是通过其他网络的帮助来激活这些无效的filter,让它们重新变得有价值起来,那是不是可以进一步提高网络的表达能力?

这篇文章有一个重要的发现是什么呢?我们发现训练的神经网络如果在初始化的时候都采用随机初始化,那么在训练完之后,无效filter的位置是统计无关的。所以我们可以并行训练多个网络,在训练的过程中,每个网络接受上一个网络的部分weight (我们将这种方式叫做grafting),因为每个网络无效filter的位置是统计无关的。所以其他网络有效filter的weight可以填补到自己网络里的无效filter当中。多个网络之间互相进行这种操作,结束训练之后每个神经网络都会有更好的特征表达,而且测试的时候准确率性能也会更好。

可以看一下这个结果,对于在CIFAR-10、CIFAR-100上进行的实验,与mutual learning、传统的distillation、还有RePr相比较,Filter Grafting效果还是不错的,对于一些大网络,特别是对于CIFAR-100有两个点的提升。

Grafting是可以有效提高无效filter,但是可能有效filter的信息量会减少。我们在做grafting加权的时候,比如说M1和M2进行加权,M1的layer1加到M2的layer1上面,虽然填补了M2中无效filter的空虚,但是M2有效filter可能也会受到影响。因为M1它本身也有无效filter,它直接加到M2上,M2的有效filter的信息量可能会减少,

这篇还在审稿中的文章是关于我们的新发现,就是传统的蒸馏可以解决有效filter信息量可能减少这个问题,这是这篇文章的贡献。我们提出了DGD的training framework

DGD在训练的过程中,并行训练多个teacher和多个student。多个teacher对student进行蒸馏,而student之间进行grafting。最后训练的结果是每一个student的valid filter和invalid filter都会有信息量的提升。

看一下DGD framework的结果。我们对比了传统的filter grafting,还有knowledge distillation,发现比grafting,distillation都有不错的提升,比如在CIFAR-100上,各个网络基本都会比baseline提升两到三个点。


提升真实业务场景下的准确率

前面讲的是noise label learning和collaborative leaning,那么基于这两个可以做什么呢?

第一个是设计一些feature dependent noise的loss形式。因为我认为现在对于noisy label learning领域,feature independent noise可能解决得差不多了,准确率都很高了,接下来一个主要的点就是设计一些loss方式来解决feature dependent问题。而且,这个问题是真实的业务场景、真实的数据集上的noise type形式。

第二个是,我们知道grafting的motivation是来自于pruning,那么我们是否可以用grafting的一些思想去指导神经网络来进行更有效的pruning,这是一些未来大家有兴趣可以探索的一个点。


问卷

为了给广大开发者提供最实用、最热门前沿、最干货的视频教程,请让我们听到你的需要,感谢您的时间!点击填写 问卷

关注“腾讯云大学”公众号,回复【加群】进入交流群

腾讯云大学是腾讯云旗下面向云生态用户的一站式学习成长平台。腾讯云大学大咖分享每周邀请内部技术大咖,为你提供免费、专业、行业最新技术动态分享。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
别让数据坑了你!用置信学习找出错误标注(附开源实现)
在实际工作中,你是否遇到过这样一个问题或痛点:无论是通过哪种方式获取的标注数据,数据标注质量可能不过关,存在一些错误?亦或者是数据标注的标准不统一、存在一些歧义?特别是badcase反馈回来,发现训练集标注的居然和badcase一样?如下图所示,QuickDraw、MNIST和Amazon Reviews数据集中就存在错误标注。
zenRRan
2020/07/03
5.5K0
【综述专栏】如何在标注存在错标的数据上训练模型
在科学研究中,从方法论上来讲,都应“先见森林,再见树木”。当前,人工智能学术研究方兴未艾,技术迅猛发展,可谓万木争荣,日新月异。对于AI从业者来说,在广袤的知识森林中,系统梳理脉络,才能更好地把握趋势。为此,我们精选国内外优秀的综述文章,开辟“综述专栏”,敬请关注。
马上科普尚尚
2021/04/28
1.3K0
【综述专栏】如何在标注存在错标的数据上训练模型
领域前沿研究「无所不包」 ,走进标签噪声表征学习的过去、现在和未来
机器之心发布 机器之心编辑部 抗噪鲁棒性学习是机器学习中一个非常重要和热门的领域,各类方法也层出不穷。在本文中,来自香港浸会大学、清华大学等机构的研究者对标签噪声表征学习(LNRL)的方方面面进行了全方位的综述。 监督学习方法通常依赖精确的标注数据,然而在真实场景下数据误标注(标签噪声)问题不可避免。例如,对于数据本身存在不确定性的医疗任务,领域专家也无法给出完全可信的诊断结果(下图 1);基于用户反馈的垃圾邮件过滤程序,用户作为标注人员存在行为的不确定性(例如误点击)。不论是从理论还是从实验角度,人们均发
机器之心
2023/03/29
1.2K0
领域前沿研究「无所不包」 ,走进标签噪声表征学习的过去、现在和未来
样本混进了噪声怎么办?通过Loss分布把它们揪出来!
当训练样本中混有噪音,就很容易让模型过拟合,学习到错误的信息,因此必须加以干涉,来控制噪音带来的影响。这方面的研究,主要集中于“损失修正”方法,即loss correction。典型的方法有这些:
beyondGuo
2021/01/12
2.1K0
样本混进了噪声怎么办?通过Loss分布把它们揪出来!
CVPR 2022 | 应对噪声标签,西安大略大学、字节跳动等提出对比正则化方法
机器之心专栏 作者:西安大略大学、纽约大学、字节跳动 来自西安大略大学、纽约大学和字节跳动的研究者回答了一个重要的问题,即如何从带有噪声标签的数据集中学到可靠模型。 噪声标签(Noisy labels)随着深度学习研究的深入得到广泛的关注,因为在众多实际落地的场景模型的训练都离不开真实可靠的标签信息。由于人工标注误差(专业性不足等问题)、数据原始噪声,带噪声的数据不可避免,清洗数据的工作也是更加困难。 在有监督的图像分类问题中,经典的 cross-entropy (CE) 损失函数是最为广泛应用的函数之
机器之心
2022/06/13
1.1K0
CVPR 2022 | 应对噪声标签,西安大略大学、字节跳动等提出对比正则化方法
【干货】使用Pytorch实现卷积神经网络
【导读】图像识别是深度学习取得重要成功的领域,特别是卷积神经网络在图像识别和图像分类中取得了超过人类的好成绩。本文详细介绍了卷积神经网络(CNN)的基本结构,对卷积神经网络中的重要部分进行详细讲解,如卷积、非线性函数ReLU、Max-Pooling、全连接等。另外,本文通过对 CIFAR-10 的10类图像分类来加深读者对CNN的理解和Pytorch的使用,列举了如何使用Pytorch收集和加载数据集、设计神经网络、进行网络训练、调参和准确度量。总的来讲,这篇文章偏重概念理解和动手实现,相信对您的入门会有帮
WZEARW
2018/06/05
8.3K0
如何使用TensorFlow实现卷积神经网络
编者按:本文节选自图书《TensorFlow实战》第五章,本书将重点从实用的层面,为读者讲解如何使用TensorFlow实现全连接神经网络、卷积神经网络、循环神经网络,乃至Deep Q-Network。同时结合TensorFlow原理,以及深度学习的部分知识,尽可能让读者通过学习本书做出实际项目和成果。 卷积神经网络简介 卷积神经网络(Convolutional Neural Network,CNN)最初是为解决图像识别等问题设计的,当然其现在的应用不仅限于图像和视频,也可用于时间序列信号,比如音频信号
用户1737318
2018/07/20
6550
如何训练孪生神经网络
使用机器学习训练时,如果想训练出精确和健壮的模型需要大量的数据。但当训练模型用于需要自定义数据集的目的时,您通常需要在模型所看到的数据量级上做出妥协。
deephub
2021/05/18
1.6K0
如何训练孪生神经网络
入门 | 完全云端运行:使用谷歌CoLaboratory训练神经网络
选自Medium 作者:Sagar Howal 机器之心编译 参与:路雪 Colaboratory 是一个 Google 研究项目,旨在帮助传播机器学习培训和研究成果。它是一个 Jupyter 笔记本环境,不需要进行任何设置就可以使用,并且完全在云端运行。Colaboratory 笔记本存储在 Google 云端硬盘 (https://drive.google.com/) 中,并且可以共享,就如同您使用 Google 文档或表格一样。Colaboratory 可免费使用。本文介绍如何使用 Google Co
机器之心
2018/05/11
1.7K0
迁移学习之快速搭建【卷积神经网络】
卷积神经网络 概念认识:https://cloud.tencent.com/developer/article/1822928
一颗小树x
2021/05/14
2K0
迁移学习之快速搭建【卷积神经网络】
黑客视角:避免神经网络训练失败,需要注意什么?
确保网络正常运行的关键因素之一是网络的配置。正如机器学习大师 Jason Brownle 所说,「深度学习神经网络已经变得易于定义和拟合,但仍然难以配置。」
AI研习社
2019/10/08
9100
黑客视角:避免神经网络训练失败,需要注意什么?
我用 PyTorch 复现了 LeNet-5 神经网络(CIFAR10 数据集篇)!
我用 PyTorch 复现了 LeNet-5 神经网络(MNIST 手写数据集篇)!
红色石头
2022/01/10
1.3K0
我用 PyTorch 复现了 LeNet-5 神经网络(CIFAR10 数据集篇)!
使用自编码器进行图像去噪
正确理解图像信息在医学等领域是至关重要的。去噪可以集中在清理旧的扫描图像上,或者有助于癌症生物学中的特征选择。噪音的存在可能会混淆疾病的识别和分析,从而导致不必要的死亡。因此,医学图像去噪是一项必不可少的预处理技术。
deephub
2021/05/18
1.2K0
使用自编码器进行图像去噪
用 PyTorch 从零创建 CIFAR-10 的图像分类器神经网络,并将测试准确率达到 85%
一般,深度学习的教材或者是视频,作者都会通过 MNIST 这个数据集,讲解深度学习的效果,但这个数据集太小了,而且是单色图片,随便弄些模型就可以取得比较好的结果,但如果我们不满足于此,想要训练一个神经网络来对彩色图像进行分类,可以不可以呢?
Frank909
2019/01/14
10.1K0
机器之心GitHub项目:从零开始用TensorFlow搭建卷积神经网络
机器之心原创 参与:蒋思源 机器之心基于 Ahmet Taspinar 的博文使用 TensorFlow 手动搭建卷积神经网络,并提供所有代码和注释的 Jupyter Notebook 文档。我们将不仅描述训练情况,同时还将提供各种背景知识和分析。所有的代码和运行结果都已上传至 Github,机器之心希望通过我们的试验提供精确的代码和运行经验,我们将持续试验这一类高质量的教程和代码。 机器之心项目地址:https://github.com/jiqizhixin/ML-Tutorial-Experiment
机器之心
2018/05/08
1.5K0
机器之心GitHub项目:从零开始用TensorFlow搭建卷积神经网络
深度学习中的卷积神经网络:原理、结构与应用
文章链接:https://cloud.tencent.com/developer/article/2471829
小馒头学Python
2024/11/27
5750
深度学习中的卷积神经网络:原理、结构与应用
TensorFlow | 自己动手写深度学习模型之全连接神经网络
前半个多月总共写了三篇深度学习相关的理论介绍文章,另外两个月前,我们使用逻辑回归算法对sklearn里面的moons数据集进行了分类实验,最终准确率和召回率都达到了97.9%,详情参看这篇文章:一文打尽:线性回归和逻辑斯蒂线性回归(https://zhuanlan.zhihu.com/p/31075733),今天我们尝试使用神经网络来进行分类。全连接神经网络的搭建本身没什么难度,几句代码就够了,但是本文的真正目的是: 让大家了解Tensorflow 的基本使用方法; 使用 tensorboard 可视化你的
AI研习社
2018/03/16
1.5K0
TensorFlow | 自己动手写深度学习模型之全连接神经网络
【深度学习实验】卷积神经网络(八):使用深度残差神经网络ResNet完成图片多分类任务
本实验实现了实现深度残差神经网络ResNet,并基于此完成图像分类任务。
Qomolangma
2024/07/30
5690
【深度学习实验】卷积神经网络(八):使用深度残差神经网络ResNet完成图片多分类任务
Python从0到100(八十四):神经网络-卷积神经网络训练CIFAR-10数据集
CIFAR-10 数据集由 10 个类的 60000 张 32x32 彩色图像组成,每类 6000 张图像。有 50000 张训练图像和 10000 张测试图像。
是Dream呀
2025/03/05
1630
Python从0到100(八十四):神经网络-卷积神经网络训练CIFAR-10数据集
NeurIPS 2019 | 一种对噪音标注鲁棒的基于信息论的损失函数
噪音标注(noisy label)是机器学习领域的一个热门话题,这是因为标注大规模的数据集往往费时费力,尽管在众包平台上获取数据更加快捷,但是获得的标注往往是有噪音的,直接在这样的数据集上训练会损害模型的性能。许多之前处理噪音标注的工作仅仅对特定的噪音模式(noise pattern)鲁棒,或者需要额外的先验信息,比如需要事先对噪音转移矩阵(noise transition matrix)有较好的估计。我们提出了一种新的损失函数,
机器之心
2019/11/22
4480
推荐阅读
别让数据坑了你!用置信学习找出错误标注(附开源实现)
5.5K0
【综述专栏】如何在标注存在错标的数据上训练模型
1.3K0
领域前沿研究「无所不包」 ,走进标签噪声表征学习的过去、现在和未来
1.2K0
样本混进了噪声怎么办?通过Loss分布把它们揪出来!
2.1K0
CVPR 2022 | 应对噪声标签,西安大略大学、字节跳动等提出对比正则化方法
1.1K0
【干货】使用Pytorch实现卷积神经网络
8.3K0
如何使用TensorFlow实现卷积神经网络
6550
如何训练孪生神经网络
1.6K0
入门 | 完全云端运行:使用谷歌CoLaboratory训练神经网络
1.7K0
迁移学习之快速搭建【卷积神经网络】
2K0
黑客视角:避免神经网络训练失败,需要注意什么?
9100
我用 PyTorch 复现了 LeNet-5 神经网络(CIFAR10 数据集篇)!
1.3K0
使用自编码器进行图像去噪
1.2K0
用 PyTorch 从零创建 CIFAR-10 的图像分类器神经网络,并将测试准确率达到 85%
10.1K0
机器之心GitHub项目:从零开始用TensorFlow搭建卷积神经网络
1.5K0
深度学习中的卷积神经网络:原理、结构与应用
5750
TensorFlow | 自己动手写深度学习模型之全连接神经网络
1.5K0
【深度学习实验】卷积神经网络(八):使用深度残差神经网络ResNet完成图片多分类任务
5690
Python从0到100(八十四):神经网络-卷积神经网络训练CIFAR-10数据集
1630
NeurIPS 2019 | 一种对噪音标注鲁棒的基于信息论的损失函数
4480
相关推荐
别让数据坑了你!用置信学习找出错误标注(附开源实现)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档