【读点论文】FBNetV2:Differentiable Neural Architecture Search for Spatial and Channel D扩大搜索空间,复用featuremap
FBNetV2: Differentiable Neural Architecture Search for Spatial and Channel Dimensions
Abstract
- 可微分神经结构搜索(DNAS)已经证明了在设计最先进的,有效的神经网络的巨大成功。
- 然而,与其他搜索方法相比,基于DARTS的DNAS的搜索空间很小,因为所有候选网络层必须在内存中显式实例化。为了解决这个瓶颈,本文提出了一个内存和计算高效的DNAS变体:DMaskingNAS\textcolor{blue}{本文提出了一个内存和计算高效的DNAS变体:DMaskingNAS}本文提出了一个内存和计算高效的DNAS变体:DMaskingNAS。该算法将搜索空间扩展到传统DNAS的101410^{14}1014倍,支持在空间和信道维度上的搜索,否则这些维度是非常昂贵的:输入分辨率和滤波器数量。
- 本文提出了一种用于特征映射重用的屏蔽机制,使得随着搜索空间的扩大,存储和计算成本几乎保持不变。此外,本文采用有效的形状传播来最大化每个触发器或每个参数的精度。与所有以前的架构相比,搜索到的FBNetV2s具有一流的性能。
- DMaskingNAS的搜索成本高达421倍,其查找模型的准确率比MobileNetV3-Small高0.9%,FLOPs少15%;精度与Efficient-B0相似,但浮点运算次数少20%。此外,本文的FBNetV2在精度上比MobileNetV3高出2.6%,而模型大小相当。搜到了一个和 EfficientNet B0 精度接近,但是 FLOPs 小了 20% 的网络结构。本文发表在CVPR2020
- FBNetV2模型是开源的,位于 https://github.com/facebookresearch/mobile-vision.
- 论文:[2004.05565] FBNetV2: Differentiable Neural Architecture Search for Spatial and Channel Dimensions (arxiv.org)
Introduction
DNAS通过训练包含所有候选网络的超网来采样最优的子网,虽然搜索速度快,但需要耗费大量的内存,所以搜索空间一般比其它方法要小,且内存消耗和计算量消耗随搜索维度线性增加。 为了解决这个问题,论文提出DMaskingNAS,将channel数和输入分辨率分别以mask和采样的方式加入到超网中,在带来少量内存和计算量的情况下,大幅增加101410^{14}1014倍搜索空间。
基于 DARTS 的这种可微分的网络结构搜索方法 (Differentiable Neural Architecture Search) :一般是构造一个包含所有候选结构的超图 (super graph),然后从中选一条 single path 做为最终的网络结构。
- 搜索空间相对较小。由于要把很大的 super graph 以及 featuremap 存在 GPU 上,显存的限制就使得 DARTS 系列方法的搜索空间,比基于 RL,进化算法方法的搜索空间要小;
- 搜索代价会随着每层的选择的增加线性增长。每在 supergraph 中增加一个新的搜索维度,显存和计算量都会大幅增长,这也就制约了搜索空间不能太大。
作者的改进方向就是在几乎不引入显存和计算量代价的情况下,相比于 FBNet,搜索空间加入了 channels 和 input resolution 两个维度,从而把搜索空间提升了将近 101410^{14}1014 倍。
深度神经网络已经在许多研究领域和应用中取得了重大进展,例如计算机视觉和自动驾驶。尽管如此,为资源受限的环境设计高效的网络仍然是一个具有挑战性的问题。
最初的方向包括压缩现有网络[Deep compression]或建立小型网络[ShuffleNet V2,MobilenetV2]。然而,设计空间很容易包含超过101810^{18}1018个候选架构[FBnet,Single-path nas],使得手动设计选择次优且难以扩展。代替手动调整,最近的工作使用神经结构搜索(NAS)来自动设计网络。
以前的NAS方法利用强化学习(RL)技术或进化算法(EAs)。然而,这两种方法的计算成本都很高,耗费了数千个GPU小时[MnasNet,Learning transferable architectures for scalable image recognition]。因此,当前的NAS文献[FBNet,Darts,Efficient neural architecture search via parameter sharing]集中在可区分的神经架构搜索(DNAS);DNAS搜索了一个包含所有候选架构的超级图,选择了一条路径作为最终的神经网络。
与传统的NAS不同,DNAS可以在训练单个模型的时间内搜索大型组合空间。一类基于DARTS的DNAS方法有两个明显的局限性[Neural architecture search: A survey]:
Memory costs bound the search space.
- 除了调入调出张量,超图和特征图必须驻留在GPU内存中进行训练,这限制了搜索空间。
Cost grows linearly with the number of options per layer .
- 这意味着每一个新的搜索维度都会引入更多的组合选项以及组合内存和计算成本。
另一类不是基于DARTS的DNAS方法也有类似的问题:例如,ProxylessNAS通过每次迭代只训练超图中的一条路径来解决内存限制。然而,这意味着ProxylessNAS将需要非常长的时间才能收敛到数量级更大的搜索空间。对于所有的DNAS方法,这些存储和计算问题阻止本文扩展搜索空间以探索更大的构型空间。
把不同的 channel 加入搜索空间,之前的 DNAS 系列方法就是把不同的选项融进 supergraph,这样会带来接近 O(N2)O(N^2)O(N2) 种选择的可能。为了减少搜索 channel 时候的计算量,作者构造了 channel masking的机制,把不同 channel 的最终输出,表征为和一个 mask 相乘的形式。
具体的做法如下左图所示。右边那个灰色的长方体表示一个 shape 为 (c, h, w) 的 tensor,和左边的 mask 向量 M 相乘的结果。M 可以拆解为多个 mask m1,m2,m3,...m_1,m_2,m_3,...m1,m2,m3,... 和对应的 Gumbel Softmax 的系数 g1,g2,g3,...g_1,g_2,g_3,...g1,g2,g3,... 的乘积和。通过调节左边的 mask,就能得到等价的不同 channel 的结果。相当于对一个大的tensor,mask掉额外的channel,得到相应的别的channel的结果\textcolor{blue}{相当于对一个大的 tensor,mask 掉额外的 channel,得到相应的别的 channel 的结果}相当于对一个大的tensor,mask掉额外的channel,得到相应的别的channel的结果。
注意到特征映射通常支配内存成本[NVIDIA Deep Learning Performance Documentation],本文提出了一个称为DMaskingNAS(见下图)的DNAS公式(见下图),它将搜索空间大小增加了几个数量级。
Channel Masking for channel search(DMaskingNAS)
- 列向量屏蔽M∈RcM ∈\Bbb R^cM∈Rc是几个屏蔽mi∈Rcm_i ∈\Bbb R^cmi∈Rc的加权和,Gumbel Softmax权重为gi。对于某些k∈Zk ∈\Bbb Zk∈Z,每个mi的前k个条目为ones (白色),接下来的c-k个条目为zeros(蓝色),与此掩码相乘可加速通道搜索,使用后文图所示的权重共享近似。
- 输入分辨率的分辨率子采样:X是网络的中间输出特征图。使用最近邻从X对a进行子采样。将A列中蓝色像素的值组合在一起,以创建b中较小的特征图。接下来,运行操作F。最后,将C中的每个值放回D中较大的特征图中。
- 对supergraph中的channel/inputresolution选项加入mask\textcolor{red}{对 supergraph 中的 channel / input resolution 选项加入 mask}对supergraph中的channel/inputresolution选项加入mask
- 复用supergraph中所有选项的featuremap\textcolor{red}{复用 supergraph 中所有选项的 featuremap}复用supergraph中所有选项的featuremap
- 注意,本文将值放回(D)从(A)中提取值的像素中。这个过程在后文图中被激发。
DNAS:将所有可能数量的过滤器添加到DNAS(右上角)会大幅增加计算和内存成本,加剧DNAS在搜索空间大小上的内存瓶颈。
Pruning:通道修剪(左下角)仅限于一次训练一个架构。
Ours:通过本文的权重共享近似,DNAS可以同时探索所有可能数量的过滤器,而内存和计算开销可以忽略不计。详见图Channel Masking for channel search(DMaskingNAS)。
为了实现这一点,本文用掩码在超图中表示多个通道和输入分辨率选项,这带来了可以忽略的内存和计算成本。此外,本文对超图中的所有选项重用特征映射,这使得随着搜索空间大小的增加,内存开销几乎保持不变。这些优化产生了以下三个贡献:
A memory and computationally efficient DNAS:它使用差异化搜索,在101410^{14}1014倍的更大搜索空间内同时优化宏观(分辨率、通道)和微观(构建模块)架构。据本文所知,本文是第一个使用可微分搜索框架超图解决这个问题的团队,计算成本大大减少,内存成本大致不变。
A masking mechanism and effective shape propagation for feature map reuse:这适用于DNAS的空间和渠道维度。
State-of-the-art results on ImageNet classification:在8个GPU上仅运行27小时,本文搜索的紧凑模型导致每个参数、每个触发器的精度显著提高。搜索到的模型优于所有以前最先进的神经网络,无论是手动还是自动设计的,无论大小。
Related Work
- 手工制作的高效神经网络有两种主要方法:
- (1)压缩现有架构
- (2)从头开始设计紧凑架构。
- 网络压缩包括体系结构和非体系结构的修改。
- 一种非架构方法是低位量化,其中权重和激活可以用更少的位来表示。例如,Wang等人[Haq: Hardware-aware automated quantization with mixed precision]提出了硬件感知的自动量化,它在MobileNet上实现了1.4-1.95倍的延迟减少。这些技术与本文中的方法是正交的,并且可以与本文中的方法相结合。
- 另外一种选择,架构修改包括网络修剪[Learning both weights and connections for efficient neural network,Learning structured sparsity in deep neural networks,Designing energy-efficient convolutional neural networks using energyaware pruning],其中各种试探法控制层式或通道式修剪。例如,Han等人[Learning both weights and connections for efficient neural network]表明,基于幅度的修剪可以在不损失精度的情况下将参数数量减少几个数量级,而NetAdapt 利用滤波器修剪算法实现了MobileNetV2的1.2倍加速。然而,基于启发式的简化,剪枝方法单独训练潜在的架构,一个接一个-在某些情况下,剪枝方法只考虑一个架构[Soft filter pruning for accelerating deep convolutional neural networks,Learning efficient convolutional networks through network slimming]。
- 紧凑架构设计旨在直接构建高效的网络,而不是修剪昂贵的网络[SqueezeNet,SqueezeDet]。例如,MobileNet 和MobileNetV2 分别利用深度卷积和反向残差块实现了显著的效率提升。ShuffleNetV2利用低成本的组卷积缩小模型大小。Tan等人提出了一种复合缩放方法,获得了一系列架构,实现了最先进的精度,参数数量级比以前的卷积网络少[Efficientnet]。然而,这些模型依赖于微调的手动决策,而自动设计胜过这些决策。
- 神经结构搜索自动设计最先进的神经网络。Zoph等人在[Neural architecture search with reinforcement learning]中首次提出使用RL进行自动神经网络设计。这种方法和其他早期的NAS方法都基于RL [Neural architecture search with reinforcement learning,MnasNet]和EA [Large-scale evolution of image classifiers]。然而,这两种方法都消耗大量的计算资源。
- 后来的工作利用各种技术来减少搜索的计算成本。一种这样的技术将架构搜索问题公式化为超图中的路径寻找过程[FBNet,Darts,Single path oneshot neural architecture search with uniform sampling,Single-path nas: Designing hardware-efficient convnets in less than 4 hours]。
- 其中,基于梯度的NAS已经成为一种有前途的工具。Wu等人的研究表明,基于梯度的可区分NAS产生了最先进的紧凑架构,其搜索成本比基于RL的方法低421倍。另一个方向是利用性能预测器来指导搜索过程[Chamnet: Towards efficient network design through platform-aware model adaptation,Progressive neural architecture search]。这种方法通过逐步修剪来探索搜索空间,并导致搜索成本的显著降低。
- Stamoulis等人[Single-path nas: Device-aware efficient convnet design]引入了权重共享\textcolor{green}{权重共享}权重共享来进一步降低搜索的计算成本。然而,内核权重共享没有解决DARTS的主要缺点,即产生小搜索空间大小的内存瓶颈:假设一个“混合内核”包含3×3和5×5之间共享的权重。因为不可能从5 × 5卷积提取3 × 3卷积的输出(反之亦然),所以这个混合核仍然卷积2倍,并且仍然存储2个特征图用于反向传播。因此,2个内核权重共享卷积导致了2个普通卷积的内存和计算成本。
- 已经研究了在有和没有NAS的情况下沿着空间和信道维度的搜索。Liu等人[SEnet]开发了一种NAS变体,它在不同的步长上搜索语义分段。然而,随着可能的输入分辨率数量的增加,这种方法的存储成本会增加。
- 如上所述,网络修剪受到低效的和顺序的一个接一个地探索体系结构的影响。Yu等人[Slimmable neural networks]通过创建一个对输入通道数不变的批处理范式对此进行了部分修正;在训练了“超级图”之后,他们无需进一步训练就能看到每个可能的channel子集的竞争准确性。Yu等人[Autoslim: An automatic dnn structured pruning framework for ultra-high compression rates]通过引入测试时间贪婪信道选择过程来扩展这些可缩减网络。
- 然而,这些方法与DMaskingNAS正交,并且可以与DMaskingNAS结合\textcolor{red}{这些方法与DMaskingNAS正交,并且可以与DMaskingNAS结合}这些方法与DMaskingNAS正交,并且可以与DMaskingNAS结合,因为本文从头开始训练样本架构。为了解决这些问题,本文的算法同时对多个输入分辨率和通道选项进行联合优化,随着选项数量的增加,内存成本的增加微不足道\textcolor{red}{本文的算法同时对多个输入分辨率和通道选项进行联合优化,随着选项数量的增加,内存成本的增加微不足道}本文的算法同时对多个输入分辨率和通道选项进行联合优化,随着选项数量的增加,内存成本的增加微不足道。这允许DMaskingNAS在现有存储器限制下支持更多数量级的可能架构。
Method
- 本文建议DMaskingNAS在空间和信道维度上进行搜索,如图**Channel Masking for channel search(DMaskingNAS)**所示。如果没有下面描述的优化,搜索空间将在计算上被禁止并且是病态的;本文的方法使得在channel和输入分辨率上搜索这个扩展的搜索空间(见下表)成为可能。
DMaskingNAS设计选择的数量超过了以前的搜索空间:通道数量c、内核大小k、层数l、瓶颈类型b、输入分辨率r和扩展速率e。
Channel Search
- 为了支持在不同数量的频道上的搜索,以前的DNAS方法只是为超图中的每个channel选项实例化一个块。对于具有k个滤波器的卷积,这可能意味着多达 k(k+1)/2~O(k2)k(k+1)/2~O(k^2)k(k+1)/2~O(k2) 个卷积。以前的信道修剪方法[AutoSlim]也有类似的缺点:每个选项都必须单独训练,一次或迭代地找到“最佳”信道数。此外,即使没有使最大数量的可能性饱和,也有两个问题,第一个问题使得这种搜索不可能:
Incompatible dimensions:
- DNAS被分成几个“cells”。在每个cell中,考虑许多不同的块选项;所有选项的输出被组合成一个加权和。这意味着所有模块输出必须对齐尺寸。如果每个块采用具有不同数量滤波器的卷积,则每个输出将具有不同数量的通道。因此,DNAS无法进行加权求和。
Slower training, increased memory cost
- 即使有了变通方法,在这种简单的实例化中,每个具有不同通道选项的进化都必须单独运行,导致FLOP成本增加O(k)。此外,每个输出特征图必须单独存储在存储器中。
为了解决上述问题,本文处理不兼容性(下图,步骤A):考虑具有不同数量滤波器的块b,其中bi表示具有I个滤波器的块。滤波器的最大数量为k。然后,所有模块的输出都被补零,以获得k个通道(下图,步骤B)。
Channel Search Challenges:
Step A: 考虑具有不同数量滤波器的3个卷积。每个输出(灰色)将有不同数量的通道。因此,产出不能简单地相加。
Step B: 零填充(蓝色)输出允许对它们求和。然而,FLOP和存储器成本都随着通道选项的数量呈次线性增加。
Step C: 这相当于用相同数量的滤波器进行三次卷积,乘以0(蓝色)和1(白色)的掩码。
Step D: 本文使用权重分配进行近似——所有三个卷积都由一个卷积表示。
Step E: 这相当于在乘以输出之前,先对掩码求和。现在,FLOP和内存成本相对于通道选项的数量实际上是常数。
DNAS一般将候选block都实例化在超网中,在训练过程中对候选block进行选择,直接将channel维度加入到搜索空间会增加会增加大量的内存以及计算量。
常规的实现方法如Step A,将不同大小的卷积都实例化,为了使得不同维度卷积的输出可以融合\textcolor{purple}{为了使得不同维度卷积的输出可以融合}为了使得不同维度卷积的输出可以融合,对维度较小的特征进行Step B的zero padding。Step B可转换成如Step C,3个卷积输出一样大小的特征,再用3个不同的mask对输出进行mask(蓝色为0,白色为1)。由于Step C的3个卷积大小和输入都一样,可以用一个权值共享卷积\textcolor{red}{权值共享卷积}权值共享卷积进行实现,即Step D。将Step D的mask先合并,再与卷积输出相乘,这样可以省计算量和内存,最终得到Step E,仅需要1次卷积和1份特征图即可。
想要进行加权和,首先就会遇到上图 Step A 中的问题:channel 不同,对应的 tensor shape 不用,无法直接相加。为了解决这个问题,可以引入 Step B 中的方法:对输出做 zero padding,使之shape 对齐(也就是图中蓝色部分),然后就可以加权和了。Step B 和 Step C 是等价的。Step C 相当于对卷积的 filter 进行 mask。随后作者又进行了一个简化的假设,假设所有的 weighting 共享,也就是 Step D 的形式。Step E 和 Step D 是等效的,即为最终的 channel masking 机制。
给定输入x,Gumbel Softmax输出如下,Gumbel权重为gi:
y=∑i=1kgiPAD(bi(x),k),(1)y=\sum_{i=1}^kg_iP_{AD}(b_i(x),k),(1) y=i=1∑kgiPAD(bi(x),k),(1)
注意,这相当于将所有卷积的滤波器数量增加到k,并屏蔽掉额外的通道(上图,步骤C)。1i∈Rk\Bbb 1_i ∈\Bbb R^k1i∈Rk是一个列向量,I以1开头,k-i以0结尾。注意,搜索方法对于1和0的排序是不变的。由于所有块bi具有相同数量的滤波器,可以通过共享权重来近似,使得bi = b(上图,步骤D):
y=∑i=1kgi(b(x)◦1i),(2)y=\sum_{i=1}^kg_i(b(x)◦\Bbb 1_i),(2) y=i=1∑kgi(b(x)◦1i),(2)
最后,利用这种近似,可以处理原始信道搜索方法的计算复杂性:这相当于计算集合掩码并且只运行块b一次(上图,步骤E)。
y=b(x)◦∑i=1kgi1i⏟M,(3)y=b(x)◦\underbrace{\sum_{i=1}^kg_i\Bbb 1_i}_{M},(3) y=b(x)◦Mi=1∑kgi1i,(3)
这种近似只需要一个正向传递和一个特征映射,除了等式3中可忽略的M项之外,不会引起额外的FLOP或存储器成本。(图Channel Masking for channel search(DMaskingNAS),通道屏蔽)。此外,这种近似并不等价,只是因为权重是共享的,这在DNAS被证明可以减少训练时间和提高准确性[Single-path nas: Device-aware efficient convnet design]。这使本文能够搜索任何模块的输出通道数,包括相关的架构决策,如反向残差模块中的扩展速率。
Input Resolution Search
- 对于空间维度,本文搜索输入分辨率。与通道一样,以前的DNAS方法只是用每个输入分辨率实例化每个块。这种不太成熟的方法有两个缺点:增加了内存成本和不兼容的维度。和以前一样,通过对结果进行零填充来直接解决这两个问题。但是,有两点需要注意:
Pixelmisalignment\textcolor{blue}{Pixel\ misalignment}Pixel misalignment: 意味着填充不能像以前那样自然地发生。对图像的外围进行零填充是没有意义的,因为等式(1)会导致像素错位(下图b)。
Spatial Search Challenges:
A:不同空间维度的张量因维度不兼容而无法求和。
B:沿较小特征图外围的零填充使得求和成为可能。但是,右上角的像素(蓝色)没有正确对齐。
C:在空间上散布零填充导致正确对齐像素的和。注意,两个特征图的右上角像素在总和中正确重叠。
D:假设F是一个3 × 3核的卷积。与包含一个子集(灰色)的特征图进行简单卷积,会导致该子集的感受野(2 × 2,蓝色)减小。
E:为了保留所有搜索到的输入分辨率的感受域,在卷积之前必须对输入进行二次抽样。注意感受野(蓝色)仍然是3 × 3。
此外,注意到可以实现相同的效果,而不需要构造一个更小的张量,具有适当步长的膨胀卷积;进行子采样以避免修改F运算。
上面说了在 channel 维度的做法。 在 Spatial 维度的做法也是类似的,作者也想构造一种加权和的形式表征不同分辨率的 feature。如上图 A 所示,不同分辨率的 tensor 不能直接相加。图 B 说明了在边缘 padding 的方式不行,pixel 无法对齐。图C说明了为了让pixel对齐,要采用这种Interspersingzero−padding的形式\textcolor{red}{图 C 说明了为了让 pixel 对齐,要采用这种 Interspersing zero-padding 的形式}图C说明了为了让pixel对齐,要采用这种Interspersingzero−padding的形式。但是图 C 这种方式会又带来感受野 mis-alignment 的问题:如图 D 所示,Interspersing zero-padding 之后,一个 3x3 的 kenel 有效感受野变成了 2x2。所以图 E 才是作者最终的解决方法:和 F 运算完之后再 padding。
为了处理像素错位,进行零填充,使零点在空间上分散(上图c)。这种零填充模式是统一的;除了零,这是最近邻上采样。例如,大小增加2倍将涉及每隔一行和一列进行零填充。补零而不是上采样可以最大限度地减少输入分辨率的“像素污染”(下图)。
-
- Minimizing Pixel “Contamination”:
- 在最左边,本文有原始的8×8特征图。
- 蓝色的4×4是使用最近邻进行二次采样的特征图,并且均匀地进行零填充。
- 黄色的2 × 2也是二次抽样和零填充。
- 将2 × 2与4 × 4相加得到最右边的组合特征图。只有角落中的绿色像素保存两种特征地图大小的值;这些绿色值被较低分辨率的特征地图“contaminated”。
Receptivefieldmisalignment\textcolor{blue}{Receptive\ field\ misalignment}Receptive field misalignment:由于特征图的子集对应于不同的分辨率,简单地卷积整个特征图会导致感受野的减小(上图d)。为了处理感受野错位,本文转而对二次抽样输入进行卷积。(上图,E)。使用Gumbel Softmax,本文得到了图**Channel Masking for channel search(DMaskingNAS)**中的“分辨率子采样”。
- NASNet 引入了组合隐藏状态的类似概念。这些组合也用于有效地探索组合大的搜索空间,但用于确定——而不是输入分辨率或通道——重复搜索单元的次数。根据上述观点,输入分辨率搜索会导致恒定的存储成本,而不管输入分辨率的数量。另一方面,随着分辨率数量的增加,计算成本呈次线性增加。
Effective Shape Propagation
请注意,这种有效形状的计算仅在训练期间使用。在本文的加权求和公式(1)中。输出y保留最大数量的通道。然而,存在非整数数量的有效通道:假设16通道输出具有Gumbel权重gi = 0.8,12通道输出具有权重gi = 0.2。这意味着有效通道数为0.8∗16+0.2∗12=15.20.8*16+0.2*12 = 15.20.8∗16+0.2∗12=15.2。
这些有效通道对于FLOP和参数计算都是必要的,因为将较高的权重分配给更多的通道会导致较大的成本损失。这种有效形状就是本文如何实现在以前的工作中介绍的有效资源成本:首先,定义gumbel softmax权重为:
gil=exp[αl,i+εl,iT]∑iexp[αl,i+εl,iT],(4)g_i^l=\frac{exp[\frac{α_{l,i}+\varepsilon_{l,i}}{\mathcal{T}}]}{\sum_iexp[\frac{α_{l,i}+\varepsilon_{l,i}}{\mathcal{T}}]},(4) gil=∑iexp[Tαl,i+εl,i]exp[Tαl,i+εl,i],(4)
采样参数为α时,Gumbel噪声E\mathcal{E}E,温度T\mathcal{T}T。对于第 l 层中与Gumbel Softmax的卷积,本文在等式(7)中定义其有效输出形状S‾outl\overline{S}_{out}^lSoutl。使用有效的输出通道(C‾outl\overline{C}_{out}^lCoutl,等式(5)),以及有效高度、宽度(h‾outl\overline{h}_{out}^lhoutl,w‾outl\overline{w}_{out}^lwoutl,等式(6)).
C‾outl=∑igil⋅Ci,outl,(5)h‾outl=∑igil⋅h‾inl⋅w‾outl=∑igil⋅w‾inl,(6)S‾outl=(n,C‾outl,h‾outl,w‾outl),(7)\overline{C}_{out}^l=\sum_ig_i^l·C_{i,out}^l,(5)\\ \overline{h}_{out}^l=\sum_ig_i^l·\overline{h}_{in}^l·\overline{w}_{out}^l=\sum_ig_i^l·\overline{w}_{in}^l,(6)\\ \overline{S}_{out}^l=(n,\overline{C}_{out}^l,\overline{h}_{out}^l,\overline{w}_{out}^l),(7) Coutl=i∑gil⋅Ci,outl,(5)houtl=i∑gil⋅hinl⋅woutl=i∑gil⋅winl,(6)Soutl=(n,Coutl,houtl,woutl),(7)
批量大小为n时,有效输入宽度w‾inl\overline{w}_{in}^lwinl和高度h‾inl\overline{h}_{in}^lhinl。
对于没有Gumbel Softmax的卷积层,有效输出形状简化为等式8。其中有效信道计数等于实际信道计数。对于深度方向卷积,有效输出形状简化为等式9。其中有效信道计数被简单地传播。
C‾outl=Coutl,(8)C‾outl=Cinl,(9)\overline{C}_{out}^l=C_{out}^l,(8)\\ \overline{C}_{out}^l=C_{in}^l,(9) Coutl=Coutl,(8)Coutl=Cinl,(9)
用实际输出通道计数CoutC_{out}Cout,有效输入通道计数CinC_{in}Cin。然后,本文将第 l 层的成本函数定义如下:
costl={k2⋅h‾outl⋅w‾outl⋅C‾inl⋅C‾outl/γif FLOPk2⋅C‾inl⋅C‾outl/γif param,(10)cost^l = \begin{cases} k^2·\overline{h}_{out}^l·\overline{w}_{out}^l·\overline{C}_{in}^l·\overline{C}_{out}^l/\gamma&\text{if FLOP}\\ k^2·\overline{C}_{in}^l·\overline{C}_{out}^l/\gamma &\text{if param}\\ \end{cases},(10) costl={k2⋅houtl⋅woutl⋅Cinl⋅Coutl/γk2⋅Cinl⋅Coutl/γif FLOPif param,(10)
具有γ卷积群。第(l + 1)层的有效输入通道是C‾inl+1=C‾outl\overline{C}^{l+1}_{in} = \overline{C}^l_{out}Cinl+1=Coutl。总训练损失由(1)交叉熵损失和(2)总成本组成,总成本是来自所有层的成本之和:costtotal=∑lcostlcost_{total} =\sum_lcost^lcosttotal=∑lcostl。
在正向传递中,对于所有卷积,本文计算并返回输出张量和有效输出形状。此外,Gumbel Softmax等式4中的T\mathcal{T}T。在整个训练期间下降,[Categorical reparameterization with gumbel-softmax],迫使glg^lgl接近one-hot分布。argmaxigilargmax_ig^l_iargmaxigil将因此在超图中选择块的路径;每个块的单通道和扩展速率选项;和整个网络的单一输入分辨率。然后这个最终的架构被训练。请注意,这种最终模型不使用mask,也不需要有效的形状。
Experiments
- 本文使用DMaskingNAS搜索不同目标下的卷积网络架构。将本文的搜索空间、搜索模型的性能和搜索成本与以前最先进的网络进行了比较。下表列出了详细的数值结果。
ImageNet classification performance:
对于基线,本文引用原始论文中关于ImageNet的统计数据。本文的结果是加粗的。*搜索成本是根据[MnasNet]中的实验设置估算的。[Chamnet]用训练240个网络的成本发现5个模型。:成本估算是一个下限。[MobilenetV3]和[Efficientnet]将[MnasNet]中提出的方法与[NetAdapt]和复合缩放相结合。
Experimental Setup
- 本文使用PyTorch在8张 Tesla V100 GPUs和16GB内存上实现了DMaskingNAS。使用DMaskingNAS在ImageNet (ILSVRC 2012)分类数据集上搜索卷积神经网络,这是一种广泛使用的NAS评估基准。
- 本文使用与[FBnet]中报告的相同的训练设置:本文从最初的1000个类中随机选择10%的类,并训练90个epoch的超图。在每个epoch,本文使用SGD用80%的训练样本训练网络权重。然后,使用Adam 用剩余的20%来训练Gumbel Softmax采样参数α。将初始温度T\mathcal{T}T设置为5.0,并在每个epoch指数退火e−0.045≈0.956e^{-0.045}≈0.956e−0.045≈0.956。
Search Space
- 以前的单元级搜索会产生碎片化、复杂且对硬件部署延迟不友好的块。因此,本文对已知的、延迟友好的块采用分层搜索空间。
- 下表描述了微架构搜索空间:块结构受[MobilenetV2,V3]启发,依次由1 × 1逐点卷积、3 × 3或5 × 5深度卷积和另一个1 × 1逐点卷积组成。TBS 就是指待搜的 block。这些 TBS 对应的 block 具体的搜索空间如下表:
区块设计的微结构搜索空间:非线性、内核大小和挤压激励。组成的 block type 就是由 3x3 或者 5x5 的 depth-wise conv + SE + relu / hswith 组成。
- 下表描述了宏架构。搜索空间包含超过103510^{35}1035个候选架构,比DNAS的[FBnet]大101410^{14}1014倍。
本文最大搜索空间的宏观架构,描述了块类型b、块扩展速率e、滤波器数量f、块数量n、第一块的步距s。
“TBS”表示需要搜索的层类型。三个值的元组表示最低值、最高值和选项之间的步长(低、高、步长)。
FBNetV2-P型号的最大输入分辨率为288,FBNetV2-F为224,FBNetV2-L为256。请参阅所有搜索空间的补充材料。
Memory Cost
- 信道搜索空间每增长2个数量级,本文的存储器优化产生1MB的存储器成本增加;就上下文而言,这1 MB的增加仅占训练期间总内存成本的0.1%。这是由于本文的特征图重用,随着通道选项数量的增加,本文比较了DNAS和DMaskingNAS的内存成本(见图,左侧)。
DNAS与DMaskingNAS
(左图)传统DNAS的内存成本不适用于每块只有8个channel搜索选项的内存。另一方面,即使每个模块有32个通道选项,DMaskingNAS的内存成本也大致保持不变。
(右图)减少了搜索空间中的块选项数量,以使传统的DNAS适合内存。随着搜索空间的增加,存储器成本的增长比DMaskingNAS的增长明显更快;事实上,DMaskingNAS的内存开销几乎是恒定的。
- 由于每个卷积只有8个通道选项,DNAS在训练期间无法适应内存,超过了特斯拉V100 GPU支持的16GB内存。另一方面,DMaskingNAS支持32选项频道搜索,搜索空间大小为3222 1033(给定我们的22层搜索空间),内存成本几乎不变。
- 这里,k选项信道搜索意味着对于与c信道的每个卷积,在{c/k,2c/k,…,c}个信道。为了比较更多的通道选项,本文减少了搜索空间中的块选项的数量(上图,右侧)。为了计算内存成本,本文将每个训练步骤中分配的最大内存在10个epoch内进行平均。
Search for ImageNet Models
FLOP-efficient models:
- 首先使用DMaskingNAS寻找低计算预算的紧凑模型(见下图),
搜索出来的FBNetV2架构,颜色表示不同的内核大小,高度表示不同的膨胀率。高度是按比例绘制的。
- 模型范围为50 MFLOPs至300 MFLOPs,如下图所示。搜索到的FBNetV2s优于所有现有网络。
ImageNet Accuracy vs. Model FLOPs.
从左到右将这些翻牌效率高的FBNetV2称为FBNetV2-F{1,2,3,4}。
Storage-efficient models:
- 许多真实场景面临有限的设备存储空间。因此,在下图中,接下来执行对最小化参数计数的模型的搜索。在相似或更小的模型尺寸(4M参数)下,FBNetV2相对于MobileNetV3 和FBNet 分别实现了2.6%和2.9%的绝对精度增益。
ImageNet Accuracy vs. Model Size.
从左到右将这些称为参数高效型FBNetV2,即FBNetV2-P{1,2,3}。
Large models:
- 最终使用DMaskingNAS来探索高端设备的大型模型。在下图中,将FBNetV2Large与300+ MFLOPs的网络进行了比较。
ImageNet Accuracy vs. Model FLOPs for Large Models.
从左到右将这些大型FBNetV2称为FBNetV2-L{1,2}。
Conclusions
本文提出了一种节省内存的算法,通过支持在空间和信道维度上的搜索,极大地扩展了DNAS的搜索空间。这些贡献瞄准了DNAS的主要瓶颈——导致搜索空间大小受限的高内存成本——并产生了最先进的性能。之前提到FBNet的block框架基于目前主流MobileNetV2和ShuffleNet设计,更多地是对其结构参数进行搜索,所以在网络结构有一定的束缚。FBNetV2马上来了个101410^{14}1014倍的提升,各方面效果也比目前大多数的网络要好,但整体看下来,论文更像一个量化方法,因为基底还是固定为现有网络的结构设计。
FBNet/FBNetV2/FBNetV3:Facebook在NAS领域的轻量级网络探索 | 轻量级网络 - 云+社区 - 腾讯云 (tencent.com)
除了NSF CISE Expeditions Award CCF-1730628,加州大学伯克利分校的研究还得到了阿里巴巴、亚马逊网络服务、蚂蚁金服、CapitalOne、爱立信、脸书、Futurewei、谷歌、英特尔、微软、英伟达、丰业银行、Splunk和VMware的支持。这份材料是基于国家科学基金会研究生奖学金DGE 1752814资助的工作。
FBNetV2 Supplementary Materials
FBNetV2 on ImageNet
- 本文包括针对各种资源约束优化的所有三类FBNetV2的数值结果:
- 下表中的FLOPefficient FBNetV2-F和large FBNetV2-L,
ImageNet FLOP-efficient classification:
这些是由DMaskingNAS开发的FBNetV2模型,针对FLOP计数和准确性进行了优化。
- 下表中的参数高效型FBNetV2-P。见主要手稿与以前的最先进的结果进行比较。
ImageNet parameter-efficient classification:
这些是由DMaskingNAS生成的FBNetV2模型,针对参数计数和准确性进行了优化。
Macro-architecture Search Spaces
- 本文列出了所有三类FBNetV2的DMaskingNAS宏架构搜索空间,针对各种资源限制进行了优化:
- 下表中的FLOP高效FBNetV2-F、
FBNetV2-F FLOP高效搜索空间的宏架构。FBNetV2-F的最大输入分辨率为224。
- 下表中的参数高效FBNetV2-P和下面第二张表中的大型FBNetV2-L。注意,在所有类别的模型中,块上的微结构搜索空间保持不变。
Macro-architecture for our parameter-efficient search space for FBNetV2-P.
FBNetV2-P的最大输入分辨率为288。
Macro-architecture for our largest search space for FBNetV2-L,
描述了块类型b、块扩展速率e、过滤器数量f、块数量n,“TBS”表示需要搜索的层类型。三个值的元组另外表示选项之间的步长(低、高、步长)。FBNetV2-L的最大输入分辨率为256。
【读点论文】FBNetV2:Differentiable Neural Architecture Search for Spatial and Channel D扩大搜索空间,复用featuremap相关推荐
- 【读点论文】FBNet:Hardware-Aware Efficient ConvNet Design via Differentiable Neural Architecture Search可微分
FBNet: Hardware-Aware Efficient ConvNet Design via Differentiable Neural Architecture Search Abstrac ...
- 2021年 ICCV / NeurIPS / AAAI 中Neural Architecture Search (NAS) 神经网络结构搜索相关论文汇总
这里写自定义目录标题 ICCV (35篇) NeurIPS / NIPS (28篇) AAAI (31篇) ICCV (35篇) Learning Latent Architectural Distr ...
- 神经网络架构搜索(Neural Architecture Search)杂谈
一.背景 机器学习从业者被戏称为"调参工"已经不是一天两天了.我们知道,机器学习算法的效果好坏不仅取决于参数,而且很大程度上取决于各种超参数.有些paper的结果很难重现原因之一就 ...
- 神经网络架构搜索(Neural Architecture Search, NAS)笔记
目录 (一)背景 (二)NAS流程 2.1 定义搜索空间 2.2 搜索策略 (三)加速 (四)变体及扩展 4.1 扩展到其他任务 4.2 扩展到其他超参数 (一)背景 机器学习从业者被戏称为" ...
- 神经架构搜索(Neural Architecture Search,NAS)介绍
神经架构搜索Neural Architecture Search,NAS介绍 Introduction Intractable Search Space Non transferable optima ...
- ENAS:通过参数共享实现高效的神经架构搜索《EfficientNet Neural Architecture Search via Parameter Sharing》
本文总结多篇相关博客:https://www.sohu.com/a/222705024_129720.https://zhuanlan.zhihu.com/p/60592822.https://blo ...
- 【读点论文】MnasNet: Platform-Aware Neural Architecture Search for Mobile,用神经网络搜索的方式来设计网络平衡精度与速度
MnasNet: Platform-Aware Neural Architecture Search for Mobile Abstract 为移动设备设计卷积神经网络(CNN)模型具有挑战性,因为移 ...
- AutoML论文笔记(九)CARS Continuous Evolution for Efficient Neural Architecture Search:连续进化神经网络搜索
文章题目:CARS: Continuous Evolution for Efficient Neural Architecture Search 链接:link https://arxiv.org/a ...
- 自学网络结构(一):Neural Architecture Search With Reinforcement Learning
论文:Neural Architecture Search With Reinforcement Learning 链接:https://arxiv.org/abs/1611.01578 代码链接:h ...
最新文章
- PHP将excel文件中的数据批量导入到数据库中
- Invoke shell in Java
- 部署LAMP-LAMP平台集成
- SAP Cloud for Customer Individual Customer的UI建模
- [Leetcode]141. Linked List Cycle
- node Express 框架
- 第三篇:稳定性之借风险之力驱动架构演进
- 建立一个Shape类,有Circle(圆形)和Rect(矩形)子类
- MCMC: Metropolis-Hastings, Gibbs and slice sampling
- Spring boot Redis客户端 乱码
- [JNI] 开发基础 (8)c语言typedef
- 常用adb 命令整理
- 什么是索引,索引的作用,什么时候需要使用索引,什么时候不需要使用索引
- Simulink数据保存提取和示波器显示
- from .cv2 import * ImportError: libGL.so.1: cannot open shared object file: No such file or direc
- python pyz_Python pyzgoubi包_程序模块 - PyPI - Python中文网
- 性能优化之cpu的 us和sy
- 互联网大佬的乌镇人设
- 制造蝴蝶飓风,微众区块链的蝶变和ESG新使命
- python 连通域面积_python 三维连通域分析