本文介绍的是ICLR 2020的论文《Fast Neural Network Adaptation via Parameter Remapping and Architecture Search》,文章作者是华中科技大学方杰民。
文 | 方杰民
论文链接:https://openreview.net/pdf?id=rklTmyBKPH
代码链接:https://github.com/JaminFong/FNA
简介
神经网络在计算机视觉的各个领域都取得了巨大的成功。通常神经网络模型的设计都需要依托于图像分类的任务,比如在ImageNet分类数据集上设计神经网络,再直接把分类任务上设计的网络模型应用到其他任务(比如分割、检测等)的backbone上。然而由于任务的特性不同,所需要的backbone网络设计也不尽相同。人工神经网络结构的设计往往需要经验丰富的工程师花费比较多的精力来进行调整,效率不高。
最近NAS(neural architecture search)方法的兴起极大的促进了神经网络的自动化设计,不少工作尝试在分割、检测的任务上展开网络结构搜索,但是backbone的预训练(pre-training)是一个消耗很大、又不可避免的操作。虽然最近的一些工作证实预训练对于最终精度而言不一定是必须的,但是从头训练需要花费大量的迭代次数来达到同等的精度。
对于NAS算法而言,预训练的问题将更难解决,比如针对backbone的搜索,搜索空间中包含的所有可能的网络可能都面临预训练问题。One-shot/Differentiable的NAS方法虽然能将所有可能的网络集成为一个超网络(super network),但是超网络和最终搜出来的网络依然面临预训练的问题,其对应的计算代价都还是很大的。
ImageNet数据集的预训练已经成为目前众多计算机视觉任务中一个标准的做法,深度学习社区里也有非常多的ImageNet预训练模型。
本文从充分利用这些模型出发,提出了一种快速神经网络自适应的算法,该算法能够将一个手工网络作为种子网络,并将其结构和模型参数都快速适应到新任务(比如分割和检测)上。
整个网络适应过程包含结构层面的适应和参数层面的适应,本文用 Differentiable NAS的方法来完成结构的适应,另外本文提出的参数重映射(parameter remapping)方法作用于两个层面的适应过程,极大的缩减了整个适应过程所需的计算代价。
方法
本文提出了一种参数重映射的方法,该方法旨在将种子网络的参数映射到一个新的网络中。
如图2所示,整个映射过程在深度、宽度、卷积核三个层面进行。实际映射过程中,深度层面的映射先开展,宽度和卷积核层面的映射同时进行。
在深度层面上,对应层的参数相映射,新的层的参数来源于种子网络中相同阶段(stage)中的最后一层;在宽度层面上,本文在结构适应过程中允许更小膨胀系数的MobileNetV2卷积模块,对应通道的参数相映射;在卷积核层面上,本文采用了中心映射的方法,当MobileNetV2的3x3卷积核向更大核映射时,大核中心的3x3区域来源于种子网络的卷积核,其余区域赋予0值。
首先,本文先将种子网络进行扩展(Network Expansion),成为一个包含了结构适应阶段所有可能搜索结构的超级网络,这个超级网络亦即搜索空间的一种表示。
然后本文将种子网络的参数用上述描述的参数重映射方法映射到超级网络上,随即在目标任务/数据集上展开基于Differentiable NAS的结构适应阶段。
网络结构搜索产出针对新任务/数据集的目标结构,此时种子网络的参数被再次重映射到目标结构上,随即展开目标任务/数据集上的参数适应过程。
最终得到参数和结构均被适应于目标任务/数据集的目标网络。
整个适应阶段参数重映射被实施两次,种子网络的pre-trained参数得以充分利用,极大的缩减整个适应过程的计算代价。
实验
本文选取MobileNetV2(MBV2)作为种子网络,MBV2是一个性能卓越的轻量网络模型,其被广泛用于设计NAS方法的搜索空间。本文在语义分割Cityscapes和目标检测COCO任务上都进行了实验,相比于种子网络MBV2,FNA能以相同或者更小的MAdds取得更高的性能;相比于分割和检测的其他NAS算法,FNA总的计算代价要小很多,最终模型在目标任务上的性能也更强。
本文进一步通过消融实验验证了所提出的参数重映射方法在FNA中的重要作用,通过参数重映射,总的计算代价能有效减少,并且最终获得的性能与ImageNet pretrain无异。本文还开展了随机搜索(random search)的实验,也取得了不错的效果,
该实验现象说明FNA其实是一种普适性较强的网络适应机制,其在某种意义上讲是搜索方法无关的。
关于参数重映射的方案,本文也做了一系列探索,并提出更有效的参数重映射方案或可成为将来工作中比较值得探索的一块。
社区中有较多开源的预训练模型,通过FNA可以将网络模型快速适应到新的任务中,实际场景中如果想要将现有模型应用于其他任务,不妨一试FNA的方法来进一步提升性能,其有效利用现有模型的预训练参数来减小所需算力,可为开发者节省不少成本,也给资源受限的开发者进一步研究带来可能。
1、直播
05. Spotlight | 华盛顿大学:图像分类中对可实现攻击的防御(视频解读)
4、Poster