每天审核淘宝性感图的工程师,竟然还做了这个(二)

2019 年 12 月 18 日

每天审核淘宝性感图的工程师,竟然还做了这个(二)

解决思路


我们调研了在噪声样本识别、抗噪模型等领域的前沿技术。以下是针对 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 当前其他算法的性能。该算法可分为三个阶段:


   stage1:  训练得到收敛的模型。超参数选择时,学习率设为固定值即可,训练可能会达到过拟合状态。
stage2: 循环学习率阶段。学习率周期性衰减,学习率突然增大,使得网络跳出过拟合状态,欠拟合时噪声样本产生的 loss 较大,而干净样本易于学习,loss 值偏小,随着训练进行学习率减小,网络慢慢进入过拟合阶段,能正确拟合噪声样本和干净样本,此时两类样本带来的 loss 都比较小。通过不连续周期循环学习率来训练模型,模型在过拟合和欠拟合之间反复切换,在这个过程中,噪声样本 loss 的均值和方差均比干净样本高,通过多轮切换,可以基于 loss 筛选出数据中的疑似噪声样本。下图展示了我们的实验过程中,当学习率周期震荡时,噪声样本(绿色曲线)的loss也会出现周期性震荡,而干净样本(黄色曲线)的 loss 总是比较小,在论文《O2U-Net: A Simple Noisy Label Detection Approach for Deep Neural Networks》中有更详尽的实验结果分析。
复制代码



    stage3: 在干净数据集训练。剔除算法识别出的疑似噪声样本后,在干净数据集上重新训练模型。
我们使用以下两个指标评价算法的质量:
复制代码


  • 噪声识别精度指标

  • (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


2019 年 12 月 18 日 16:0577

评论

发布
暂无评论
发现更多内容

Vidyo产品给用户方带来了什么直接的便利

dwqcmo

音视频会议 集成架构 解决方案 智能硬件

容器开发运维人员的Linux操作机配置优化建议

东风微鸣

Kubernetes 最佳实践 k8s入门

区块链赋能供应链金融|应用优势与四类常见模式

CECBC区块链专委会

区块链

趣味科普丨一文读懂云服务器的那些事儿

华为云开发者社区

镜像 服务器 服务

1分钟带你get React setState 面试要点

Leo

面试 前端 React 前端进阶训练营 setState

标准的开发框架,对企业开发有多重要?

Learun

敏捷开发 快速开发

容器化应用系统上生产的最佳实践

东风微鸣

Kubernetes 最佳实践 生产

为什么Java容器推荐使用ExitOnOutOfMemoryError而非HeapDumpOnOutOfMemoryError?

东风微鸣

Kubernetes 最佳实践 jvm调优

架构师训练营第五周学习总结

尹斌

微服务的理想与现实

京东智联云开发者

云原生

批处理 有状态等应用类型在K8S上应该如何配置?

东风微鸣

Kubernetes 最佳实践

GitLab用户切换引发的某程序员“暴动”,怒而开源项目源码

小Q

Java git 学习 开发 代码仓库

学习总结

饺子

《码出高效:Java开发手册》“码” 出高效的同时编写出高质量的代“码”。

Java成神之路

Java 程序员 架构 面试 编程语言

谁说AI看不懂视频?

华为云开发者社区

视频 剪辑

小熊派开发实践丨漫谈LiteOS之传感器移植

华为云开发者社区

开发 IoT stm32

自动化测试框架类型,你知道几种?此处介绍5种比较常见的

软测小生

软件测试 自动化测试框架 软件自动化测试

架构师训练营第一周课后作业

李日盛

spring-boot-route(二十二)实现邮件发送功能

Java旅途

Java Spring Boot 发送邮件

全面到哭!BAT内部Java求职面试宝典,必须人手一份!

Java架构之路

Java 程序员 架构 面试 编程语言

现成区块链交易所开发app,币币撮合交易平台搭建

WX13823153201

现成区块链交易所开发

架构训练营第一周学习小结

李日盛

数据安全无小事:揭秘华为云GaussDB(openGauss)全密态数据库

华为云开发者社区

安全 数据 加密

在K8S Volume中使用 subPath

东风微鸣

Kubernetes 最佳实践

Java中String占用空间的评估标准

陈德伟

Java jdk 源码剖析

MySQL官方特供649页顶级笔记,凝聚社区力量深入技术内幕

周老师

Java 编程 程序员 架构 面试

数据湖探索DLI新功能:基于openLooKeng的交互式分析

华为云开发者社区

数据 处理

商用密码与区块链共推数字经济发展

CECBC区块链专委会

网络安全 数字经济

DDIA 读书笔记(2)数据模型的存储与检索

莫黎

读书笔记

socket编程

菜鸟小sailor 🐕

websocket

面试官的灵魂一击:你懂 MySQL 事务日志吗?

Java架构师迁哥

每天审核淘宝性感图的工程师,竟然还做了这个(二)-InfoQ