内容简介:0简介
背景
近年来,尤其在大数据和高算力服务器的支持下, 深度学习技术 迅速发展,进步巨大,在很多任务中的表现甚至超过了人类。
然而深度学习模型的训练离不开 大规模数据集 & 准确的标签 。
如:ImageNet数据集有上百万人工标注的图片。
花费很多人力物力来清理标注数据,这对几何增长级的数据来说并不现实。而且即使人工标注,也可能会有不少错误,给后续的机器学习和深度学习等模型带来未知的影响。
很多时候数据的质量甚至决定了模型的好坏&业务效果的上限。于是 弱监督学习 和 带噪声 的学习等方法成为了模型实用化及其充分发挥和挖掘业务数据价值的一个关键步骤。
本文将介绍目前一些 带噪声标签 的学习方法以及其实用化应用方面的情况。
0 1
简介
带噪声数据的学习问题,按照解决思路通常来说可以划分为两类:
1.基于损失函数 的方法
即通过直接改进损失函数,或者分析噪声和真实标签之间的关系,使得损失函数对噪声有一定的鲁棒性和忍耐性,如[1][2][3]等;
2.基于学习策略的方法
即在训练过程中识别出噪声数据,然后基于清洗后的数据训练模型,不断迭代训练模型。
基于 损失函数 的方法多是通过 理论分析 的方式,提出新的损失函数,或者在损失函数中增加混淆矩阵的学习等。这种方式有着严格的理论基础&可解释性。
然而可能需要对噪声的概率分布进行一些假设,对复杂的实际数据复杂也许假设并不成立。
所以也有很多人提出基于 学习策略 的方法,这类方法对整体训练的流程进行优化,使得模型能够边训练边清洗数据,达到收敛的效果。 这类方法不需要改变损失函数和网络结构等,更容 易实现 ,实际中也更容易产生效果。
0 2
基于损失函数的方法
最初很多方法如[11]提出学习用混淆转移矩阵来增强对噪声的鲁棒性。
即:学习某些类别被错认为其他类别的概率矩阵。
这些方法都取得了一定的效果,也有方法提出改进使用mask矩阵来[2]对不可能的转移错误进行剪枝。 然而如果把学习问题看做一个优化问题,这些方法求出的都不是最优解。
有的方法是通过 理论推导 出具有噪声鲁棒性的损失函数如:
ramp loss, unhinged loss等,
其中 广义交叉熵损失函数 (Generalized Cross Entropy) [3]是一种典型的方法。
1.损失函数的噪声鲁棒性
2.对称性损失函数
图1表示的是我们常用损失函数分类交叉熵损失函数:
Categorical Cross Entropy (CCE) 。
很明显它是非对称的,所以它对噪声很敏感[11],轻微的噪声会使其效果下降很多。
图1 交叉熵损失函数
图2 绝对值损失函数
绝对值损失函数Mean Absolute Error (MAE) 是一种 对称函数。
如图2所示,具有噪声鲁棒性。
然而对于分类问题MAE又一些有明显的缺点,在训练ImageNet等数据集时其精度和收敛速度都比CCE差很多。
以下是CCE和MAE的 梯度方程 :
通过跟CCE的梯度方程比较我们发现CCE的梯度多了一项
这样,当预测跟正确标签1值不同的时候:
这一项的值变大,相当于对困难样本增加了权重。而MAE没有权重,对所的样本都平等对待,这样有噪声存在时具有噪声鲁棒性。然而这也使其整个训练过程变慢,最终收敛效果变差。
3.L q 损失函数
如何将具有噪声鲁棒性的MAE损失函数和有权重机制的CCE损失函数结合起来,取长补短呢?
可以对MAE进行negative Box-Cox变换,如下所示:
4.实验结果
用CIFAR-100做为实验数据集,选Resnet34作为基础网络, SGD优化器,结果如下:
可以看出在不同噪声比例下,L q 相对于CCE和MAE都是有很大优势的。
0 3
基于学习策略的方法
解决噪声问题的另外一种思路是从实际出发:将数据清理融入训练过程,通过筛选或者纠正标签,来提高训练效果。
这样做无需对噪声的性质进行假设,使用标准的交叉熵损失函数即可。在[3]提出的一种典型的思路如图所示:
图3 训练和纠正标签的迭代学习
训练过程中可以分为两个步骤:即 正常训练 步骤和 标签纠正 步骤。
在标签纠正阶段我们可以使用当前训练的模型提取CNN特征,对类内的样本进行聚类,可以选用密度聚类方法[8]。 选出密度最高的样本集合作为某个类别的代表。
这样就可以纠正样本的标签为它跟类别代表最近的类别。训练时,由于原始的标签有噪声并不完全可信,所以可以采用将原始损失函数和纠正后的损失函数相结合的方式:
是一个参数控制着两个损失函数的比重。这样使用迭代的方式就可以实现自动纠正和训练。
这种标签纠正的方式可以看做是一种课程学习 (curriculum learning) [7] 的扩展。
它通过聚类的方式选取了某类别中置信度最高的样本,将整个训练过程分成不同的阶段,从简单的开始到最后逐渐增加难度。采用同样思想的也有方法如[4]。
[6]中也提出了一种策略即在训练和清理的过程中周期性的调整学习率,使得模型周期性过拟合和欠拟合,从而跟多的去除噪声样本,在Clothing1M[10]等实际噪声数据集上的实验表明也取得了不错的效果。
0 4
总结
基于损失函数的方法和基于学习策略的方法各有优点,而实际数据也各有不同,在模型调优的过程中还需要先对数据进行分析,根据情况进行合适的取舍,相信通过不断的优化,模型一定会有更好的泛化性和鲁棒性。
0 5
参考文献
[1] Symmetric Cross Entropy for Robust Learning with Noisy Labels, CVPR 2019
[2] Masking: A New Perspective of Noisy Supervision,NeurIPS 2018
[3] Generalized Cross Entropy Loss for training Deep Nerual Networks with noisy labels, NeurIPS 2018
[4] CurriculumNet: Weakly Supervised Learning from Large-Scale Web Images,ECCV 2018
[5] Deep Self-Learning From Noisy Labels, ICCV 2019
[6] O2U-Net: A Simple Noisy Label Detection Approach for Deep Neural Networks,ICCV 2019
[7] Curriculum Learning, ICML 2009
[8] Clustering by fast search and merge of local density, Nature 2017
[9] Making deep neural networks robust to label noise: a loss correction approach, CVPR2017
[10] Learning from Massive Noisy Labeled Data for Image Classification, CVPR 2015
[11] Training deep neural-networks using a noise adaptation layer, 2017
投稿 | 内容标签团队
编辑 | sea
排版 | sea
往期推荐
在看点一下 大家都知道
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- Shader 中的随机与噪声
- WebRTC 噪声抑制模块分析与实践
- WebGL进阶必学——走进图形噪声
- 随机不止是Math.random——前端噪声应用
- 从计算机视觉到人脸识别:一文看懂颜色模型、信号与噪声
- HTML5常用标签(2-4)链接标签及多媒体标签
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Python Web开发:测试驱动方法
Harry J.W. Percival / 安道 / 人民邮电出版社 / 2015-10 / 99
本书从最基础的知识开始,讲解Web开发的整个流程,展示如何使用Python做测试驱动开发。本书由三个部分组成。第一部分介绍了测试驱动开发和Django的基础知识。第二部分讨论了Web开发要素,探讨了Web开发过程中不可避免的问题,及如何通过测试解决这些问题。第三部分探讨了一些高级话题,如模拟技术、集成第三方插件、Ajax、测试固件、持续集成等。本书适合Web开发人员阅读。一起来看看 《Python Web开发:测试驱动方法》 这本书的介绍吧!