VEGA是华为诺亚方舟实验室自主研发的全过程AutoML机器学习自动化的基本能力,如架构搜索、超参优化、数据增强、模型压缩等。
本文分享自华为云社区《VEGA:诺亚AutoML作者: kourei。
VEGA是华为诺亚方舟实验室自主研发的全过程AutoML机器学习自动化的基本能力,如架构搜索、超参优化、数据增强、模型压缩等。目前,大多数集成算法已经入华为 DaVinci 全栈AI解决方案CANN MindSpore相比之下,一些简单的测试表明,GPU有相当大的优势,预计下一个版本Vega会提供对 DaVinci 的支持。
为研究人员和算法工程师量身定制的自动机器学习工具,VEGA2019年12月在华为内源发布,支持诺亚内部多个团队(计算视觉、推荐搜索和搜索)AI基础研究)自动化机器学习算法的研究,在相关领域AI顶会上(CVPR/ICCV/ECCV/AAAI/ICLR/NIPS)产出20 算法。以下是本次开源的代表性AutoML算法简介:
在不同的应用场景中,计算资源的约束是不同的,因此对搜索结果有不同的结果需求。此外,尽管基于进化算法NAS该方法性能良好,但每一代样本都需要重新训练来评估,极大地影响了搜索效率。本文考虑了现有方法的不足,提出了基于持续进化的多目标高效神经网络结构搜索方法(CARS)。CARS维护最佳模型解集,用解集模型更新超网络中的参数。网络参数可以直接从超网络中继承,有效地提高了进化效率。CARS根据实际应用中的资源约束,一次搜索可以获得一系列不同尺寸和精度的模型。出版相关工作CVPR2020:https://arxiv.org/abs/1909.04977。
诺亚提出了一种轻量级超分网络结构搜索算法,从通道、卷积和特征尺度三个角度出发构建高效的超分网络基本模块。该算法以高效模块为基础,以参数量、计算量和模型精度为目标,采用多目标优化进化算法搜索轻量级超分网络结构。该算法可以从通道、卷积和特征尺度三个角度全面压缩超分网络的冗余。实验表明,该算法搜索到的轻量级超分网络在相同的参数或计算量下(ESRN)在标准测试集中(Set5,Set14,B100,Urban100)取得了比手工设计的网络结构(CARN等)效果更好。此外,该算法还可以在保证算法精度的前提下降低计算量,满足移动设备的延迟和功耗限制。相关论文发表在AAAI 2020:https://www.aaai.org/Papers/AAAI/2020GB/AAAI-SongD.4016.pdf。
现有的目标检测模型可以解耦成几个主要部分:骨干(Backbone),特征融合网络(Neck),RPN和以及RCNN头部。每个部分可能有不同的模块和结构设计,如何权衡不同组合的计算成本和准确性是一个重要问题。现有目标检测 NAS方法(NAS-FPN, DetNas等)只专注于搜索单个模块的更好设计,如骨干网络或特征集成网络,而忽略了系统的整体考虑。为了解决这个问题,本文提出了一种从结构化到模块化的神经网络搜索策略,称为Structural-to-Modular NAS(SM-NAS)。具体来说,在结构化阶段对模型架构进行粗略搜索,确定当前任务的最佳模型架构 (比如用什么类型的单阶段检测器或者双阶段检测器?backbone等),以及匹配的输入图像尺寸;模块化搜索阶段backbone对模块进行详细的结构调整,进一步提高模型性能。。在搜索策略中,我们采用了进化算法,并考虑了模型效率和模型性能的双重优化non-dominate sorting构建Pareto front,在多目标的同时获得一系列最佳网络结构。此外,我们还探索了一种有效的训练策略,使网络不存在imagenet pretrain在这种情况下可以达到比有pretrain收敛速度更快,可以更快、更准确地评估任何东西backbone的性能。在COCO在数据集中,我们搜索到的模型在速度和精度上大大领先于传统的目标检测架构,如我们E2模型比Faster-RCNN速度加倍,mAP达到40%(增加1%);我们E5模型与MaskRCNN速度相似,mAP能达到46%(提高6%)。出版相关工作AAAI2020:https://arxiv.org/abs/1911.09929。
我们使用神经网络结构搜索(NAS)为了弥合分类任务和检测任务之间的差距,技术自动设计针对特定任务的主网络(domain gap)。常见的深度学习物体检测器通常用于一个ImageNet骨干网络设计和训练分类任务。现有算法DetNAS为了选择最佳的子网络结构,将搜索检测主网络的问题转化为提前训练权重共享的超级网络。然而,这先设置的超级网络不能反映采样结构的实际性能水平,搜索空间很小。我们希望通过NAS算法设计了一个灵活、面向任务的检测主网络:提出了一个名称SP-NAS的两阶段搜索算法(串行到并行的搜索)。具体来说,串行搜索阶段旨在通过交换、扩展、关键点火的搜索算法,有效地找到具有最佳感觉野生比例和输出通道的串行序列;然后,平行搜索阶段将自动搜索并将几个子结构和以前生成的主要网络组装到一个更强大的平行结构。我们在多个多个检测数据集SP-NAS搜索获得的以达到的效果SOTA结果,即在EuroCityPersons在公开行人检测排行榜上排名第一(LAMR:0.042);在准确性和速度上都优于DetNAS和AutoFPN。出版相关工作CVPR2020:https://openaccess.thecvf.com/content_CVPR_2020/papers/Jiang_SP-NAS_Serial-to-Parallel_Backbone_Search_for_Object_Detection_CVPR_2020_paper.pdf。
深度神经网络通常包含大量的训练参数,以从给定的数据集中提取重要特征。一方面,大量的训练参数提高了深度网络的性能。另一方面,它们带来了拟合问题。为此,基于Dropout在训练阶段,将禁用输出特征图中的某些元素,以减少神经元间的共适应。虽然这些方法可以提高所得模型的泛化能力,但基于是否丢弃元素Dropout不是最好的解决方案。因此,我们研究了与深度神经网络中间层相关的经验Rademacher提出了解决上述问题的特征扰动方法(Disout)。在训练过程中,特征图中随机选择的元素探索泛化误差机选择的元素替换为特定值。实验表明,我们提出的特征图扰动方法在多个图像数据集中具有较高的测试精度。出版相关工作AAAI 2020:https://arxiv.org/abs/2002.11022。
本算法的思想是解决自动数据扩展问题(AA)方法本身的一些缺点。AA搜索整个数据集中的最佳数据增强策略,尽管从全局来看AA它可以使数据更加差异化,使最终模型性能更好;但是AA它相对粗糙,不优化单个图像,所以会有一定的防线。当数据增强强度较大时,很容易给某些图像带来语义混淆(即图像语义的变化是由于过度消除具有判别力的信息造成的。这就是我们所说的语义混淆。显然,在模型训练中,我们不适合用以前的狐狸标签来约束指导。为了解决这个问题,我们使用知识蒸馏(KD)该方法通过预训练模型生成软标签,可以指导AA他的标签应该是什么?与大模型结合后,该算法简单有效ImageNet目前最优性能85.8%。在相关论文中发表ECCV 2020:https://arxiv.org/abs/2003.11342v1。
在特定的图像增强任务(以超分为例)中,学术界大多采用合成成对数据进行算法研究,因为现实场景中很难获得成对数据。然而,通过合成数据获得的算法模型在现实场景中往往表现不佳。为了解决上述问题,我们提出了一种新颖的算法:该算法以合成低质量图像为桥梁。合成图像域到真实场景图像域的转换通过无监督图像转换完成,转换后的图像用于监督训练图像增强网络。该算法足够灵活,可以集成任何无监督转换模型和图像模型。该算法足够灵活,可以集成任何无监督转换模型和图像模型。该方法通过联合训练图像转换网络和监督网络,实现更好的质量学习和超分性能所提出的方法在NTIRE 2017和NTIRE 2018的数据集上实现了很好的性能,甚至可以与监督方法相媲美;该方法在NTIRE2020 Real-World Super-Resolution比赛中被AITA-Noah团队采用并在track1中取得IPIPS第一、MOS指标第二的成绩。相关论文发表于CVPR 2020 Workshop on NTIRE: https://openaccess.thecvf.com/content_CVPRW_2020/papers/w31/Chen_Unsupervised_Image_Super-Resolution_With_an_Indirect_Supervised_Path_CVPRW_2020_paper.pdf 。
该技术针对神经网络自动压缩,从压缩模型的识别精度、计算量、存储量、运行速度等多个指标出发,使用多目标优化进化算法,对神经网络进行混合比特量化、稀疏剪枝等压缩,搜索出每一层最优压缩超参数,得到一个包含若干性能优秀的压缩模型的非支配解集,可以满足使用者对不同指标的不同需求。该技术适用于高性能云服务器和弱计算性能的移动设备,对于高性能云服务器可以提供算法精度高且计算和内存消耗在一定范围内的模型,对于移动设备,可以在确保算法精度的前提下降低计算和内存消耗,满足移动设备的时延和功耗约束。相关论文发表在KDD 2018: https://www.kdd.org/kdd2018/accepted-papers/view/towards-evolutionary-compression 。
本次开源发布初步稳定版本,未来不断将最前沿的算法加入其中,增加对新算法和DaVinci的支持。开源地址为: https://github.com/huawei-noah/vega ,请大家试用和反馈。
Vega具备以下优势:
- 预置了诺亚大量性能领先的深度学习模型,提供在ImageNet/MSCOCO/NuScenes /NITRE等数据集上的最优性能模型。这些模型代表了诺亚在AutoML研究上的最新研究成果,可以直接使用: https://github.com/huawei-noah/vega/blob/master/docs/en/model_zoo/ 。
- 为了实现硬件的亲和性,Vege定义了Evaluator模块,可以直接部署到设备上进行推理,支持手机、Davinci芯片等多种设备的同时运行。
- 提供了benchmark 工具来协助大家复现 Vega 提供的算法。
- 内置了架构搜索、超参优化、损失函数设计、数据扩充、全量训练等组件,每个组件称之为一个Step,可以将多个Step串联起来形式端到端的方案,方便大家试验不同的想法,提高可搜索范围,找到更好的模型。
最后,VEGA提供大量的示例文档,帮助开发者快速上手。完整中英文文档请参考: https://github.com/huawei-noah/vega/tree/master/docs 。