CVPR 2020|解放工程师,DenseNAS 让结构搜索更灵活
在致力于实现边缘AI全球领导者的征程上,地平线始终坚持“研”以致用,通过赋能产业,让每个人都能够享受技术进步的成果。在这一过程中,地平线也希望通过分享最新研究成果,与 AI 领域的同行者一起前行。
有鉴于此,我们推出了#地平线CVPR 2020系列论文分享#,以下为本系列第二篇分享。
近年来,网络结构搜索(NAS)在自动化设计神经网络结构上发挥了巨大作用,并逐步成为深度学习的重要发展方向。虽然NAS算法取得了比较卓越的性能,但其搜索空间的设计依旧需要比较强的人为先验。
在探索如何构建更加灵活、自动化程度更高的搜索方法上,地平线联合华中科技大学在原有的DenseNAS解决方案上,提出全新的链式代价估计(Chained Cost Estimation)算法,能够更加准确地估计密集连接搜索空间中结构的代价(FLOPs/latency),同时带来更好的优化效果。
相关论文<>已被收录于CVPR 2020,以下为论文导读:
NAS搜索元素的梳理
在以往的NAS方法中,搜索空间起着不可或缺的作用,不仅在很大程度上决定着搜索出来的模型性能,灵活的搜索空间还能带来更多高性能的可能性结构以及算法自动化程度的大幅提升,从而进一步减少人为调整元素解放工程师。
在原有的搜索空间设计中,Block (块) 代表网络中输出特征拥有相同分辨率和相同通道数的层或操作的集合;Stage (阶段) 代表输出特征在相同分辨率下的串联的Block的集合。相同Stage中的不同Block可以拥有不同的宽度(即输出通道数)。最近许多工作通过堆叠MobileNet v2中的反转残差模块(MBConv)来构建搜索空间,通过搜索卷积核尺寸以及MBConv中的膨胀系数取得了计算量/latency较小的高性能结构。
但该方法中,每个Stage里Block的数量以及每个Block的宽度均为人为设定,并且在搜索过程中是固定的,这意味着深度搜索被局限于Block内部(即搜索每个Block内的层数),而宽度搜索无法被开展。
神经网络的规模设计(深度和宽度)往往对结构的性能起着很大的作用,最近很多工作也通过人为调整宽度来获取更优的性能,但宽度的调整仍然需要较大的人为先验以及大量的试验。DenseNAS的提出则旨在实现高灵活度的网络结构搜索。
实验新方法DenseNAS对于网络规模搜索的新思路
在DenseNAS方法的搜索空间设计中,更多不同宽度的Block存在于一个Stage里,Block之间相互密集连接,最终Block之间的一条最佳路径会被搜索出来,网络结构将通过这条路径被导出,不存在于这条路径的Block将被舍弃。这样一来网络中Block的宽度和数量被自动分配,DenseNAS将深度搜索扩展到更广的空间,并且使能了宽度搜索。不仅每个Block内的层数可以被搜索,每个Stage内的Block数量和宽度都能被搜索,同时下采样的位置也因为Block数量搜索被自动决定。
DenseNAS提出的密集连接的搜索空间可以被松弛为一个超级网络,基于梯度更新的Differentiable NAS能够基于其被开展,这样的大规模搜索空间则不会引入巨大的搜索代价。相较于该工作的上一个版本,本文还提出了一个链式代价估计(Chained Cost Estimation)的算法,在搜索过程中该算法可以用来估计密集连接搜索空间中结构的代价(FLOPs/latency),结构的精度和代价均可以被优化。
以下为具体方法:
构建密集连接的搜索空间
首先,本文定义基础层(basic layer)为搜索空间中最基本的元素,其被设计为搜索候选操作项的集合。
然后,本文提出了路由块(routing block),其负责汇聚来源于前继路由块的数据,并将数据传递给后续的路由块。每个路由块包括尺寸对齐层(shape-alignment layers)和基础层两个部分:尺寸对齐层以几个并行分支的形式存在,每个分支即一组候选操作项的集合,其负责将来源于前继路由块不同尺寸的输入数据转换到相同尺寸;后续的基础层将继续提取来源于尺寸对齐层的特征,且其深度可搜索。
最后,整个密集超级网络由一系列不同宽度的路由块组成。从超级网络头部到尾部,路由块的宽度逐渐增加。每个路由块可以连接到其后续的M个块,且只有分辨率相差倍数在两倍及以内的块之间可被连接,整个搜索空间遵从该范式被构建为密集连接的超级网络。
松弛密集连接的搜索空间
对于基础层,每个候选操作项被赋予一个结构参数,基础层的输出由所有候选操作输出的加权和得到:
对于路由块层次,每个路由块的数据会输出到其后继的几个块,每条输出的路径同样会被赋予一个结构参数,并通过softmax归一化为输出路径概率。每个路由块会接受前继几个块的输出数据,尺寸对齐层会对来自不同块的数据利用路径的概率值进行加权求和:
链式代价估计算法
在传统的级联式搜索空间和本工作的上一个版本中,整个网络的代价(latency/FLOPs)通过对每一个块的估计代价求和得到。然而在密集连接搜索空间中,块之间的连接状态对整个网络代价估计的全局效应需要被考虑到,本文提出了一种链式代价估计算法来更好的计算搜索过程中的结构代价。
首先,一个代价查询表会被构建以记录搜索空间中每一个操作候选项的代价。在搜索过程中,每个基础层的代价计算如下:
链式代价估计算法如下:
搜索中模型精度和代价通过以下损失函数被同时优化:
搜索方法
整个搜索过程分为两阶段,在第一阶段操作项参数被训练一定周期,第二阶段操作项参数和结构参数通过梯度交替更新。当搜索过程结束,最终的结构将通过结构参数的分布被导出。对于每一个层而言,只有结构参数权重最大的候选操作项会被选中;对于整个网络,本文利用维特比算法来推导块之间的连接路径,不存在于推导路径的块会被舍弃。最终结构中每个块只与其后续的一个块相连接。
实验结果以更小的代价取得更优的精度
相较于上一版本(
DenseNAS通过构建密集连接的搜索空间,并将该搜索空间松弛到Differentiable NAS的框架内,以较小的搜索代价实现了更加灵活的网络结构搜索。目前NAS算法已经取得了比较卓越的性能,但是NAS算法中搜索空间的设计依然需要比较强的人为先验,如何构建更灵活、更高自动化程度的搜索方法值得被关注,DenseNAS则针对该问题提供了解决方案。
DenseNAS 更新版本论文解读基本如上,感兴趣的同学可以点击以下链接阅读论文。
论文地址:https://arxiv.org/pdf/1906.09607.pdf
论文代码:https://github.com/JaminFong/DenseNAS
雷锋网雷锋网雷锋网