CVPR 2020|解放工程师,DenseNAS 让结构搜索更灵活

在致力于实现边缘 AI 全球领导者的征程上,地平线始终坚持“研”以致用,通过赋能产业,让每个人都能够享受技术进步的成果。在这一过程中,地平线也希望通过分享最新研究成果,与 AI 领域的同行者一起前行。有鉴于此,我们推出了#地平线 CVPR 2020 系列论文分享#,以下为本系列第二篇分享——

近年来,网络结构搜索(NAS)在自动化设计神经网络结构上发挥了巨大作用,并逐步成为深度学习的重要发展方向。虽然NAS算法取得了比较卓越的性能,但其搜索空间的设计依旧需要比较强的人为先验。

在探索如何构建更加灵活、自动化程度更高的搜索方法上,地平线联合华中科技大学在原有的DenseNAS解决方案上,提出全新的链式代价估计(Chained Cost Estimation)算法,能够更加准确地估计密集连接搜索空间中结构的代价(FLOPs/latency),同时带来更好的优化效果。

相关论文< Densely Connected Search Space for More Flexible Neural Architecture Search>已被收录于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),结构的精度和代价均可以被优化。

以下为三种具体方法——

1.构建密集连接的搜索空间

首先,本文定义基础层(basic layer)为搜索空间中最基本的元素,其被设计为搜索候选操作项的集合。

然后,本文提出了路由块(routing block),其负责汇聚来源于前继路由块的数据,并将数据传递给后续的路由块。每个路由块包括尺寸对齐层(shape-alignment layers)和基础层两个部分:尺寸对齐层以几个并行分支的形式存在,每个分支即一组候选操作项的集合,其负责将来源于前继路由块不同尺寸的输入数据转换到相同尺寸;后续的基础层将继续提取来源于尺寸对齐层的特征,且其深度可搜索。

最后,整个密集超级网络由一系列不同宽度的路由块组成。从超级网络头部到尾部,路由块的宽度逐渐增加。每个路由块可以连接到其后续的M个块,且只有分辨率相差倍数在两倍及以内的块之间可被连接,整个搜索空间遵从该范式被构建为密集连接的超级网络。

2.松弛密集连接的搜索空间

对于基础层,每个候选操作项被赋予一个结构参数,基础层的输出由所有候选操作输出的加权和得到:

对于路由块层次,每个路由块的数据会输出到其后继的几个块,每条输出的路径同样会被赋予一个结构参数,并通过softmax归一化为输出路径概率。每个路由块会接受前继几个块的输出数据,尺寸对齐层会对来自不同块的数据利用路径的概率值进行加权求和:

2.链式代价估计算法

在传统的级联式搜索空间和本工作的上一个版本中,整个网络的代价(latency/FLOPs)通过对每一个块的估计代价求和得到。然而在密集连接搜索空间中,块之间的连接状态对整个网络代价估计的全局效应需要被考虑到,本文提出了一种链式代价估计算法来更好的计算搜索过程中的结构代价。

首先,一个代价查询表会被构建以记录搜索空间中每一个操作候选项的代价。在搜索过程中,每个基础层的代价计算如下:

链式代价估计算法如下:

搜索中模型精度和代价通过以下损失函数被同时优化:

3.搜索方法

整个搜索过程分为两阶段,在第一阶段操作项参数被训练一定周期,第二阶段操作项参数和结构参数通过梯度交替更新。当搜索过程结束,最终的结构将通过结构参数的分布被导出。对于每一个层而言,只有结构参数权重最大的候选操作项会被选中;对于整个网络,本文利用维特比算法来推导块之间的连接路径,不存在于推导路径的块会被舍弃。最终结构中每个块只与其后续的一个块相连接。

实验结果

以更小的代价取得更优的精度

相较于上一版本(<DenseNAS:密集连接搜索空间下的高灵活度网络结构搜索>),本文实验更加全面。DenseNAS基于MobileNetV2和ResNet都开展了实验,相较于其他方法以更小的代价(FLOPs/latency)取得了更优的精度。其搜索到的结构在检测上也取得了优异的性能。

总结

DenseNAS通过构建密集连接的搜索空间,并将该搜索空间松弛到Differentiable NAS的框架内,以较小的搜索代价实现了更加灵活的网络结构搜索。目前NAS算法已经取得了比较卓越的性能,但是NAS算法中搜索空间的设计依然需要比较强的人为先验,如何构建更灵活、更高自动化程度的搜索方法值得被关注,DenseNAS则针对该问题提供了解决方案。

DenseNAS 更新版本论文解读基本如上,感兴趣的同学可以点击【原文阅读】或通过以下链接阅读论文。

论文地址:https://arxiv.org/pdf/1906.09607.pdf

论文代码:https://github.com/JaminFong/DenseNAS

理论DenseNASCVPR 2020
1
相关数据
地平线机构

地平线作为嵌入式人工智能全球领导者,致力于提供高性能、低功耗、低成本、完整开放的嵌入式人工智能解决方案。面向智能驾驶、智能城市和智能商业等应用场景,为多种终端设备装上人工智能“大脑”,让它们具有从感知、交互、理解到决策的智能,让人们的生活更安全、更便捷、更美好。

http://www.horizon.ai
深度学习技术

深度学习(deep learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。 深度学习是机器学习中一种基于对数据进行表征学习的算法,至今已有数种深度学习框架,如卷积神经网络和深度置信网络和递归神经网络等已被应用在计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并获取了极好的效果。

权重技术

线性模型中特征的系数,或深度网络中的边。训练线性模型的目标是确定每个特征的理想权重。如果权重为 0,则相应的特征对模型来说没有任何贡献。

维特比算法技术

维特比算法(英语:Viterbi algorithm)是一种动态规划算法。它用于寻找最有可能产生观测事件序列的维特比路径——隐含状态序列,特别是在马尔可夫信息源上下文和隐马尔可夫模型中。 术语“维特比路径”和“维特比算法”也被用于寻找观察结果最有可能解释相关的动态规划算法。例如在统计句法分析中动态规划算法可以被用于发现最可能的上下文无关的派生(解析)的字符串,有时被称为“维特比分析”。

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

损失函数技术

在数学优化,统计学,计量经济学,决策理论,机器学习和计算神经科学等领域,损失函数或成本函数是将一或多个变量的一个事件或值映射为可以直观地表示某种与之相关“成本”的实数的函数。

神经网络技术

(人工)神经网络是一种起源于 20 世纪 50 年代的监督式机器学习模型,那时候研究者构想了「感知器(perceptron)」的想法。这一领域的研究者通常被称为「联结主义者(Connectionist)」,因为这种模型模拟了人脑的功能。神经网络模型通常是通过反向传播算法应用梯度下降训练的。目前神经网络有两大主要类型,它们都是前馈神经网络:卷积神经网络(CNN)和循环神经网络(RNN),其中 RNN 又包含长短期记忆(LSTM)、门控循环单元(GRU)等等。深度学习是一种主要应用于神经网络帮助其取得更好结果的技术。尽管神经网络主要用于监督学习,但也有一些为无监督学习设计的变体,比如自动编码器和生成对抗网络(GAN)。

查询技术

一般来说,查询是询问的一种形式。它在不同的学科里涵义有所不同。在信息检索领域,查询指的是数据库和信息系统对信息检索的精确要求

堆叠技术

堆叠泛化是一种用于最小化一个或多个泛化器的泛化误差率的方法。它通过推导泛化器相对于所提供的学习集的偏差来发挥其作用。这个推导的过程包括:在第二层中将第一层的原始泛化器对部分学习集的猜测进行泛化,以及尝试对学习集的剩余部分进行猜测,并且输出正确的结果。当与多个泛化器一起使用时,堆叠泛化可以被看作是一个交叉验证的复杂版本,利用比交叉验证更为复杂的策略来组合各个泛化器。当与单个泛化器一起使用时,堆叠泛化是一种用于估计(然后纠正)泛化器的错误的方法,该泛化器已经在特定学习集上进行了训练并被询问了特定问题。

结构搜索技术

深度学习提供了这样一种承诺:它可以绕过手动特征工程的流程,通过端对端的方式联合学习中间表征与统计模型。 然而,神经网络架构本身通常由专家以艰苦的、一事一议的方式临时设计出来。 神经网络架构搜索(NAS)被誉为一条减轻痛苦之路,它可以自动识别哪些网络优于手工设计的网络。

推荐文章
暂无评论
暂无评论~