解决思路
我们调研了在噪声样本识别、抗噪模型等领域的前沿技术。以下是针对 state-of-the-art paper 的调研分析。
《Understanding Black-box Predictions via Influence Functions》
论文主要利用 influence function 识别出噪声样本。算法计算每个训练样本对验证集 loss 变化影响,如果某个训练样本对于验证数据集的精度起到负影响,那么就可能是不好的样本,这些样本可能包含了比较多的噪声样本。论文的创新点在于提出了计算每个训练样本对当前模型性能的影响大小的方法,即 influence function 。对于影响为负值的训练样本,且该绝对值很大时,那么该样本就不是好的样本。
《CurriculumNet: Weakly Supervised Learning from Large-Scale Web Images》
文章采用课程学习的思想:人类学习知识的过程是从简单到难,读书教学,我们的学习过程都是从简单的课程到复杂的课程。分成四个阶段训练:
1、初始学习,把所有的训练样本仍进去,得到初始网络模型 first_model ;
2、根据初始网络模型,来判断每个训练样本学习的难易程度,把训练数据分成:容易学习样本集 A 、难学习样本集 B 。判断难易程度的方法,就是 paper 的创新点,主要思路是采用模型抽取出来的特征向量来聚类,来判断每个样本是否是离群,以此判断学习的难易程度。
3、课程学习:把容易学习的样本集 A ,在 first_model 模型的基础上继续训练得到第二阶段的模型 second_model。
4、把 A+B 混合在一起,在 second_model 的基础上继续训练,得到最终的模型。
之所以把 B 样本重新混到所有的样本里面重新训练,主要是因为 B 样本不全是噪声样本,干净的样本占了比例比较大,如果强行扔掉 B 数据集,那么对模型精度会比 first_model 得到的精度还低,主要原因是因为被误杀的干净样本,往往是很重要的,这些样本对于模型精度的提升有很大的贡献。
《MentorNet: Regularizing Very Deep Neural Networks on Corrupted Labels》
文章提出了一种在数据维(data dimension)中正则化深度 CNN 的全新技术,文中称之为数据正则化(data regularization)。目标是通过正则化在有损标签上训练的 CNN 来提升其在清洁测试数据上的泛化表现。具体来说,提出用于训练该分类网络(即 StudentNet)的每个样本学习随时间变化的权重,并引入了 MentorNet 来监督该 StudentNet 的训练。,MentorNet 学习为每个训练样本分配一个权重。通过学习不均衡的权重,MentorNet 鼓励某些样本学得更早,并且得到更多注意,由此对学习工作进行优先级排列。对于 MentorNet 训练,文章首先预训练一个 MentorNet 来近似得到有标签数据中特定的一些预定义权重。然后在具有清洁标签的第三个数据集上对它进行微调。在测试的时候,StudentNet 独自进行预测,不使用 MentorNet。
算法设计
▐ 算法思路及测评指标
以上方法通过判断样本的难易程度,设计不同学习阶段进行网络训练。受此启发,我们在 ICCV2019 的论文《O2U-Net: A Simple Noisy Label Detection Approach for Deep Neural Networks》中提出了噪声样本识别的算法。
我们知道,在一次训练中,随着迭代轮次增加,网络逐渐从欠拟合逐渐过渡到过拟合状态,在训练的初期,模型精度的提升是非常明显的,因为网络很快学会了那部分“简单的“样本,因此这类样本的 loss 比较小,与之相反,那些“困难的”样本通常在训练的后期才逐渐被学会。
有论文指出如果训练的轮次足够多,巨大参数量使得模型能记住几乎所有的样本,因此过拟合训练数据中的噪声常常会让模型的表现变差。
观察训练过程发现,噪声样本通常是在训练的后期才被学会,因而在训练的早期,噪声样本的平均 loss 是远大于干净样本的,而在训练的后期,因为网络逐渐学会了所有样本,两类样本的 loss 区别不大。纵观整个训练过程,从欠拟合到过拟合,噪声样本 loss 的均值和方差都比干净样本要大。
实验发现,只统计一次训练过程中不同样本的 loss 分布得到的结论不够可信,易造成对正常难样本的误杀,为了提高算法的鲁棒性,我们通过循环学习率策略,使网络在欠拟合和过拟合之间多次切换,并追踪不同阶段不同训练参数的模型对样本的 loss ,通过在时间维度上捕获多样性足够丰富的模型(类似集成学习,对满足多样性和准确性的多个模型进行 ensemble ),统计各个样本 loss 的均值和方差,均值和方差越大,样本属于噪声样本的概率也就越大。大量实验表明,加入这个 trick 后,此算法在噪声样本识别和抗噪学习方面均取得了 outperform 当前其他算法的性能。该算法可分为三个阶段:
噪声识别精度指标
(1)PR 曲线:主要是通过对噪声样本,根据不同的阈值,可视化绘制 PR 曲线:精确度与召回率曲线
(2)根据固定的阈值,评估精确度:如果训练数据集噪声比例为 10% ,那么就召回 10% 最有可能为标错的样本,然后统计召回精度(精确度)
抗噪模型精度指标
把可疑的噪声样本剔除,对模型进行重新训练,在干净的测试集上,计算模型精度提高的百分点。
▐ 算法性能
基于上文构造的噪声样本数据集,对比了所提算法和几种 state-of-the-art 算法的性能。下表展示了不同抗噪模型精度指标:
在基于 resnet101 和浅层的 9 层 CNN 模型中,我们所提算法的抗噪性能在不同数据集和不同的噪声比例上,都较以往的方法有了较大提升。
下表是几种不同算法对样本集中噪声标签的识别精度,在不同数据集和不同的噪声比例上,我们的方法都能更准确地识别出噪声,我们把这归功于,算法集成了同一网络结构在各种不同训练阶段、大量不同参数的情况下,对样本对 loss 的分布进行统计,因此能准确识别出疑似噪声样本。并且算法不需要集成多个模型,仅仅是通过调整学习率来控制某一个模型的进入不同状态,因此在算法实现起来比较容易,针对各种模型的可迁移性也很强。
算法同学在解决业务问题时,总希望能获得高质量的训练样本,而从业务场景中拿到的数据大多需要重新进行标注,有时由于标注规则不清晰,即使是外包同学标注的数据往往也存在误标现象。
在训练流程之前,先使用噪声标签识别算法将疑似噪声样本挑选出来,直接剔除这些样本或对其进行二次打标,可以快速训练样本的质量。例如,我们在解决图片里多主体的任务时,拿到的原始数据集噪声比例约为 15% ,通过算法我们找出了 5k 个单主体的样本集中,为噪声样本概率最大的 30 个样本。从召回的噪声样本中可以看出, top30 全部都是多主体的样本,在 top 100 的噪声样本中,我们算法识别的精度约为 93% 。
当正负样本的距离很接近时,例如在对商品图进行肢体检测时,对包含肢体的数据集进行噪声样本检测,在 top30 的疑似噪声样本中,也包含了一个正确的样本,这也是后续优化需要解决的问题。
应用场景
人工标注带来的样本噪声问题不可避免,清洗样本获得干净的数据集,是许多算法同学需要解决的问题,自己多轮打标剔除噪声样本需要掌握分类规则,也需要耗费大量时间精力。而我们提出的噪声样本自动识别算法,大大节约了我们的进行样本筛选的成本,有效帮助我们在解决在各种业务问题时提高效率。除此之外,在验收外包同学的标注数据时,也可以通过噪声样本识别算法来判断标注精度是否达到一定标准。
噪声样本识别能力和相似样本召回能力,有力地帮助我们解决了许多图像质量相关的业务问题,并在业务过程中积累了大量的干净样本。目前我们已具备的质量能力主要包含:牛皮癣、软色情、模糊图、白底图、纯色背景图、优质图识别、真实场景图、多主体、拼接图、是否包含肢体、插画素材图等多个维度的检测判断,也实现了数据和算法相互优化。牛皮癣、软色情、清晰度、白底图、纯色背景图、多主体识别等,均已上线用于淘宝内容库封面图审核过滤,过滤精度均超过 90% 。
本文转载自淘系技术公众号。
原文链接:https://mp.weixin.qq.com/s/JnLo8C8cIGW1Fbyf3af5bg
评论