目录
Mobile Neural Architecture Search
Factorized Hierarchical Search Space
ImageNet Classification Performance
Soft vs. Hard Latency Constraint
Disentangling Search Space and Reward
MnasNet Architecture and Layer Diversity
“MnasNet:移动平台感知神经结构搜索”是谷歌发表在CVPR2019的一篇论文。本篇论文提出了一个自动的移动神经网络架构搜索方法(MNAS),它明确地把模型延迟纳入考虑,得到一个在精度和延迟之间达到平衡的模型。不像之前的网络选择延迟的一个不精确的度量——比如FLOPS,而是直接通过在移动手机上推理模型来衡量真实的延迟。为了进一步在灵活性和搜索空间尺寸上取得平衡,提出了一个新颖的分解式层次搜索空间,它鼓励整个网络层的多样性,实验结果表明网络在多个视觉任务上都达到了先进的性能,在ImageNet分类任务上,MnasNet实现了75.2%的top-1精度,延迟为78ms,比MobileNetV2快了1.8倍,精度提升了0.5%;比NASNet快了2.3倍,精度提升了1.2%。MnasNet同样在COCO目标检测上也取得了比MobileNets更好的MAP。
概要
最近几年,提高CNN模型的资源效率已经变成了一个积极的研究领域。目前的一些常用的方法包括:量化、剪枝。然而,这些方法都是在已经有的baseline模型上做压缩,并不关注如何学习到新颖的CNN操作的组合,即更好的CNN baseline模型。
另一种通用的方法就是直接人工设计更加高效的移动结构,不幸的是,由于潜在的设计空间太大,这些人工设计的模型通常需要大量的工作量。
最近,人们对使用神经架构搜索自动设计模型越来越感兴趣,这些方法主要基于强化学习、进化搜索、可微分搜索和一些其他的学习算法。尽管这些方法可以通过重复堆叠搜索到的小单元产生适用于移动端的模型,但是它们没有将移动平台的约束考虑进搜索过程或者搜索
本篇论文的主要贡献:
- 首先将设计问题公式化成一个同时考虑精度和推理延迟的多目标的优化问题。不像之前的工作中用FLOPS来近似延迟(这并不准确,MobileNet和NASNet有相似的FLOPS——575M vs. 564M,但它们的延迟相当不同——113ms vs. 183ms),通过直接在移动设备上运行模型来衡量真实的延迟;
- 第二点,之前的自动搜索主要是搜索一些类型的单元,然后就重复堆叠相同单元构成网络结构,这样做虽然简化了搜索过程,但是也排除了层的多样性,而层的多样性对于计算效率是很重要的,为了解决这个问题,提出了一种分解式层次搜索空间,它允许各层的结构不同,并且最终在灵活性和搜索空间大小上取得平衡;
- 第三点,将搜索得到的网络用于目标分类和COCO目标检测,效果都比较好;
Problem Formulation
将设计问题公式化为一个multi-objective的搜索,旨在发现高精度和低推理延迟的CNN模型。不像之前的架构搜索方法中将FLOPS作为一个不直接的衡量的标准,直接考虑在移动端运行CNN模型的真实推理延迟,然后将其考虑到目标中。由于移动硬件/软件特性的多样性,近似真实的延迟是一件很有挑战的事情。
给定一个模型m,ACC(m)表示在目标任务上的精度,LAT(m)表示在目标移动平台上的推理延迟,T是目标延迟,即允许的最大的延迟时间。可以将T作为一个约束条件,在这个约束条件下最大化模型精度,目标函数是一个多目标规划问题:
这种同时优化精度和延迟时间两个目标的问题一般是不存在绝对最优解的,即同时让延迟最小和精度最高的解;通俗来讲,可以通过帕累托改进达到帕累托最优——“从此之后,非损人不能利己”的状态。一种可行的方法是利用“评价函数”将多目标规划问题转化为单目标规划问题,设计合适的评价函数使得单目标优化问题的最优解是多目标优化问题的有效解/弱有效解。文章使用的是自定义加权法来近似帕累托最优问题,优化目标可以定义为:
这里的α,β都是特定的常量。挑选α,β的经验规则就是确保在不同的 accurancy-latency 权衡下帕累托优化应该有近似的reward。举个例子,实验观察到延迟时间加倍将会带来精度上5%的提升,有两个模型:(1)M1模型的延迟时间和精度分别为l和a;(2)M2模型的延迟时间为2l,精度提升了5%达到(1+5%)a。他们应该有相似的reward:Reward(M2)=a⋅(1+5%)(2l/T)^β≈Reward(M1)=a⋅(l/T)^β,解得α=β=−0.07。
Figure 3展示了两种典型的(α,β)取值对目标函数的影响,横坐标为延迟时间,纵坐标为目标函数值。(α=0,β=−1)是上面的那幅图,可以看出来,当延迟时间小于目标延迟T时,目标函数的取值不随延迟而改变,只是精度的函数。(α=−0.07,β=−0.07)是下面的那幅图,可以看出来,它是将目标延迟T作为软约束,基于不同的延迟时间平滑地调整目标函数的取值。
Mobile Neural Architecture Search
Factorized Hierarchical Search Space
最近研究表明,定义好的搜索空间对于神经架构搜索是非常重要的。然而,之前的大多数方法都是仅仅搜索一些复杂的单元,然后重复堆叠相同单元。这些方法忽略了层的多样性,但其实这对于实现高精度和低延迟是很重要的。
本文引入了一种新颖的分解式层次搜索空间,将一个CNN模型分解为不同的块,然后针对每个块搜索操作和块与块的连接关系,因此允许不同块有不同的层结构。
直觉是需要基于输入输出的不同形状来搜索最好操作以获得更好的 accurate-latency 平衡。
举个例子,CNN的早期stages通常需要处理大量的数据,因此对于推理延迟比之后的stages影响更高。正式来讲,考虑广泛应用的深度分离卷积(深度卷积+逐点卷积),输入feature map尺寸为(H,W,M),先用维度为(K,K,M)的卷积核做深度卷积输出feature map尺寸为(H,W,M),再用维度为(1,1,M,N)的卷积核做逐点卷积,(H,W)为输入分辨率,M/N为卷积核的个数。乘加操作的总数为:
当整体计算资源 受限时,需要仔细平衡kernel的尺寸K和filter的个数N。举个例子,增大感受野必须增加卷积层kernel尺寸K,同时减少同层卷积核的个数N,或者减少其他层的计算量。
上图展示了搜索空间的baseline结构,我将CNN模型划分为一组预先定义的blocks,逐渐减少输入分辨率和增加卷积核个数。每个块有一列相同的层,操作和连接都由每个块的子搜索空间决定,具体来讲,对于一个块i的子搜索空间由以下选择组成:
- 卷积操作ConvOp:常规卷积(conv)、深度卷积(dconv)和移动倒置瓶颈卷积;
- 卷积核的kernel size:3×3,5×5;
- Squeeze-and-Excitation ratio SE ratio:0,0.25(具体可见SENet);
- Skip操作SkipOp:池化,恒等残差块、no skip;
- 输出的filtersizeFi;
- 每个块包含的层数Ni
ConvOp,KernelSize,SERatio,SkipOp,Fi决定了一个层的结构,Ni决定了第i个块内层重复的数量。举个例子,Figure 4中block 4的每层有一个倒置的瓶颈 5x5 卷积层、恒等残差,这样的层重复了N4次。使用MobileNetV2作为参考网络,将所有的搜索选择离散化:对于块内的每个层,基于MobileNetV2搜索{0,+1,−1};对于每个层的filter size,搜索MobileNetV2的相关尺寸的{0.75,1.0,1.25}。
分解式层次搜索空间有一个直接优势,就是可以平衡层的多样性和整个搜索空间的尺寸。假设我们将网络划分为B个块,每个块平均N个层的子搜索空间为S,那么整个搜索空间为S^B,将每个层展开的搜索空间为S^(B∗N),一个典型情况就是S=432,B=5,N=3,我们的搜索空间大小为1013,每个层展开后的搜索空间大小为10^39。
Search Algorithm
受最近的工作的启发,我们使用强化学习算法来寻找多目标搜索问题的帕累托最优解,我们选择强化学习,因为它很方便而且reward易于定制,但是我们想类似于进化这样的方法应该也是工作的。
具体来说,将搜索空间中的每个CNN模型映射到一系列tokens,这些tokens由基于参数θ的强化学习agent的一组动作a1:T决定。我们的目标时最大化期望奖励:
这里的m是由动作a1:T决定的模型,R(m)是由等式(2)定义的目标函数值。
正如Figure 1所示,搜索框架由三部分组成:
- 循环神经网络RNN控制器
- 训练器获得模型精度
- 移动端运行模型得到推理延迟。
我们遵循众所周知的sample-eval-update循环来训练控制器,在每个step,控制器首先使用它现在的参数θ,基于来自RNN的softmax logits预测一组tokens,采样一组模型。对于每个采样模型m,我们直接在目标任务上训练得到它的精度ACC(m),在真实的手机平台 上运行模型得到它的推理延迟LAT(m)。接着利用等式(2)计算奖励值R(m),在每个step的最后,控制器的参数θ使用近似的策略优化最大化期望(PPO)奖励等式(5)。sample-eval-update loop一直循环直到它达到最大的steps或者参数θ收敛。
Experiment Setup
直接在如ImageNet或者COCO这样的大任务上搜索CNN模型是很昂贵的,每个模型都需要数天才能收敛。之前的方法主要是在如CIFAR-10这样的小任务上做架构搜索,我们发现通常将模型延迟考虑进去在小模型上不起作用(我理解是在小任务上网络结构本身就小,延迟时间不会超过目标延迟时间),当要应用到大模型上时就需要放大模型。在本篇论文中,我们直接在ImageNet上搜索我们的结构,但是少了5个epochs的训练。作为一种常见做法,我们随机从训练集中保留5万张图片作为验证集,为了确保精度提升是因为我们的搜索空间,我们使用和NASNet相同的RNN控制器,即使它并不十分高效:在64 TPUv2设备上每个结构搜索要花费4.5天。在训练期间,我们通过在移动手机上运行模型来衡量真实延迟,总的来说,我们的控制器在结构搜索期间总共采样了8k个模型,但是只有15个表现最好的模型被迁移到ImageNet上,仅有一个模型被迁移到COCO。
在整个ImageNet训练期间,实验设置:
Results
ImageNet Classification Performance
Table 1展示了模型在ImageNet上的表现,将目标延迟设置为T=75ms,类似于MobileNetV2,在架构搜索期间我们的reward函数中的α=β=−0.07。之后,挑选出三个性能最好的MnasNet模型——来自同一个搜索实验的不同的精度—延迟平衡,并将其与存在的移动模型相比较。
squeeze-and-excitation(SE)模块其实就是利用了attention的机制,许多已经存在的方法中并没有这项优化,我们也在Table 2中展示了没有SE的搜索结果,我们的自动方法仍然优于MobileNetV2和NASNet。
Model Scaling Performance
改变深度因子或者分辨率对模型进行缩放:
另外除了模型缩放,其实我们也可以在任意目标延迟下搜索新的网络结构。举个例子,现在有一个应用需要latency低到25ms,我们可以缩放一个baseline模型,或者根据约束限制直接搜索新的网络结构。Table 4比较了这两种方法,为了公正的比较,所有模型使用相同的分辨率 224×224。
COCO目标检测表现
Ablation Study and Discussion
在本节中,研究了延迟约束、搜索空间的影响,并且讨论了MnasNet结构的细节和层多样性的重要性。
Soft vs. Hard Latency Constraint
多目标搜索方法允许通过设置α和β来平衡精度和延迟之间的加权关系。Figure 6展示了对于典型的α和β的目标搜索结果。当α=0,β=−1时,延迟可以被视为“硬约束”,所以控制器倾向于得到更快的模型来避免延迟惩罚;另一方面,当α=β=−0.07时,控制器将目标延迟视为“软约束”,并且尽力在一个宽泛的延迟范围采样更多的模型,它在75ms的目标延迟周围采样更多的模型,同时它也探索了很多小于40ms和大于110ms的模型。这允许了我们从单个结构搜索中采样来自帕累托曲线的多个模型。
Disentangling Search Space and Reward
MnasNet Architecture and Layer Diversity
Figure 7(a)展示了我们的自动搜索方法得到的MnasNet-A1模型。正如预料中的那样,整个网络由多种层结构组成,一个比较的发现是MnasNet使用了 3x3 和 5x5 的卷积,这和之前只使用 3x3 的卷积核的移动模型不同。
为了研究层的多样性影响,Table 6比较了MnasNet和它的变种(仅仅重复单个类型的层),结果如下:
论文链接:https://arxiv.org/pdf/1807.11626v1.pdf
代码链接:https://github.com/tensorflow/tpu/tree/master/models/official/mnasnet