欢迎来到百度人工智能合作伙伴—— 图瑞网络
百度EasyDL自研数据增强服务加持AI模型开发
阅读数:333
发布时间:2020-08-14

在 AI 模型开发的过程中,许多开发者被不够充足的训练数据挡住了提升模型效果的脚步,一个拥有出色效果的深度学习模型,支撑它的通常是一个庞大的标注数据集。因此,提升模型的效果的通用方法是增加数据的数量和多样性。但在实践中,收集数目庞大的高质量数据并不容易,在某些特定领域与应用场景甚至难以获取大量数据。那么如何能在有限数据的情况下提升模型的效果呢?


随着深度学习的发展,数据增强技术可以协助开发者解决这一问题。数据增强技术通过对数据本身进行一定程度的扰动从而产生“新”数据,模型通过不断学习大量的“新”数据来提升泛化能力。


不同数据集的数据特性决定了其所适用的数据增强策略组合,在没有对数据特性有专业理解能力的情况下,用户很难构建出能与数据集特性强相关的数据增强策略组合。比如在标准的 ImageNet 数据预处理流程中有使用 Random Crop(随机剪裁)、Random Flip(随机翻转)等数据增强技术,取得了不错的效果增益,但在某些特定用户场景(如零售场景 SKU 抠图场景)数据边缘存在重要信息时 Random Crop 会导致信息的损失、在某些特定用户场景(如数字识别)时 Random Flip 会导致特征的混淆。因此如何根据数据特征来自动化搜索数据增强策略组合成为了一个热门的研究方向。


追溯学术界对自动数据增强领域的研究,最具影响力的一篇论文是 Google 在2018年提出的 AutoAugment 技术。随后,相关的优化论文层出不穷,简单梳理依据现有方法的一些建模思想,如图1。


▲ 图1 自动数据增强算法建模思路归类


  • 强化学习:AutoAugment [1] 借鉴了基于强化学习的架构搜索算法,在离散化的搜索空间内通过 PPO(Proximal Policy Optimization)算法来训练一个 policy generator, policy generator 的奖励信号是其生成的 policy 应用于子网络训练完毕后的验证集准确率。其问题在于 AutoAugment 的搜索成本非常高,还无法满足工业界的业务需求,难以应用在业务模型开发中。

  • 密度匹配:Fast AutoAugment [2] 采用了密度匹配的策略,希望验证数据通过数据增强后的数据点能与原始训练数据集的分布尽量匹配。这个思路直觉上可以排除一些导致数据集畸变的增强策略,但没有解决“如何寻找最优策略”这一问题。

  • 遗传进化:PBA [3] 采用了 PBT 的遗传进化策略,在多个网络的并发训练中不断“利用”和“扰动”网络的权重,以期获得最优的数据增强调度策略。这个思路直觉上是可以通过优胜劣汰来搜索到最优策略。

  • 网格搜索:RandAugment [4] 通过统一的强度和概率参数来大幅减小搜索空间,期望能用网格搜索就解决数据增强搜索的问题。但这一技术并不具备策略的可解释性,抛开实现手段不谈,这篇论文更像是对 AutoAugment 的自我否定(注: RandAugment 也是 Google 出品的论文)。

  • 对抗学习:Adversarial AutoAugment [5] 在 AutoAugment 的基础上借鉴了 GAN 的对抗思想,让 policy generator 不断产生难样本,并且使 policy generator 和分类器能并行训练,降低了搜索时长。但整体搜索成本还是非常高。

  • 可微分:DADA [6]借鉴了 DARTS 的算法设计思路,将离散的参数空间通过 Gumbel-Softmax 重参数化成了可微分的参数优化问题,大大降低了搜索成本。

在上述的建模思路中,遗传进化和可微分的建模思路更适合应用到模型开发中,因为这两种思路将自动数据增强搜索的成本降低到了线上业务承受的资源范围内,并且具备较好的策略可解释性。基于对建模思路的评估和判断,百度工程师决定将遗传进化和可微分思路应用到零门槛 AI 开发平台 EasyDL 中,便于开发者进一步优化模型效果。


EasyDL 面向企业开发者提供智能标注、模型训练、服务部署等全流程功能,针对 AI 模型开发过程中繁杂的工作,提供便捷高效的平台化解决方案,并且内置了丰富的预训练模型与优化的多种算法网络,用户可在少量业务数据上获得高精度的模型效果。EasyDL 面向不同人群提供了经典版、专业版、行业版三种产品形态。


目前,遗传进化 PBA 技术已经在 EasyDL 平台中的成功实现,可微分的技术思路在 EasyDL 业务中的实践也在持续探索中。


PBA 采用了 PBT [7]的遗传进化策略,通过训练一群神经网络(种群,Trials)来找出超参数调度。Trials 之间会周期性地将高性能 Trial 的权重复制给低性能的 Trial(exploit),并且会有一定的超参扰乱策略(explore),如图2的 PBT 流程图。


▲ 2 PBT 算法流程图

       

然而实际将能力落地到平台中并不容易,工程师们在复现论文开源代码的过程中发现了一些问题:


  1. 开源代码采用了 Ray 的 Population Based Training 实现,但这个接口并不能保证并行的 Trials 一定能实现同步的 exploit, 尤其在资源受限的情况下,很大概率会出现进化程度较高的 Trial 和进化程度较低的 Trial 之间的 exploit,这样的错误进化是不可接受的。

  2. 开源代码仅实现了单机多卡版本的搜索能力,想扩展到多机多卡能力,需要基于 Ray 做二次开发。

  3. 开源代码仅实现了图像分类的自动数据增强搜索,并未提供物体检测等其他任务的数据增强搜索能力。

  4. 开源代码现有增强算子实现方式比较低效。


综合以上考虑,最终百度工程师从零开始构建了基于 PBA 的自动数据增强搜索服务。


这一自研自动数据增强搜索服务有以下几个特点:


  • 实现了标准的 PBT 算法,支持种群 Trials 的同步 exploit、explore,保证公平进化。

  • 支持分布式拓展,可不受限的灵活调节并发种群数,支持。

  • 搜索服务与任务解耦,已支持飞桨深度学习平台的图像分类、物体检测任务,并且可扩展到其他的视觉任务与文本任务。

  • 数据增强算子基于 C++ 高效实现。


自研的能力效果如何呢?在公开数据集上,百度工程师基于自研的自动数据增强搜索服务与现有的 Benchmark 进行了对齐,其中表一的 ImageNet Benchmark 在 PaddleClas [8]框架上训练,表二的 Coco Benchmark 在 PaddleDetection [9]框架上训练。


结果显示,EasyDL自动数据增强服务能达到与 AutoAugment 同样高的精度,并有大幅的速度优势。目前,用于数据增强搜索的分类、检测算子已经与 AutoAugment 对齐,后续将会持续不断扩充更多更高效的算子,进一步提升模型效果。


模型数据变化策略Top1 Acc数据增强策略搜索时长(GPU hours)
ResNet50标准变换0.7731\
AutoAugment0.779515000[1](P100)
EasyDL 自动数据增强服务0.779645(V100)

MobileNetV3_

small_x1_0

标准变换0.682\
EasyDL 自动数据增强服务0.6867928(V100)

$(".yijicat").hover(function(){ // $(".erjicat").slideDown(2000); })

Copyright © 2019 佛山市图瑞网络科技有限公司® 版权所有