【论文笔记】FBNetV2: Differentiable Neural Architecture Search for Spatial and Channel Dimensions

简介:

研究人员用NAS(Neural Architecture Search)搜索分类网络的目的之一就是,希望能够找到一个轻量级、高精度的“优质”网络。今天介绍的FBNetV2是Facebook在NAS领域的又一力作,已被CVPR2020收录。
论文地址
代码地址

前言:

对于NAS来说,搜索空间的设计对搜索结果会有直接的影响。理论上来说,搜索空间越大,越有可能搜索到性能最优的网络结构。与此同时,搜索空间越大,NAS对计算机的内存要求越高,搜索时间越长。那么,如何在扩大NAS搜索空间的同时,不增加NAS对计算机内存的要求,并且可以实现高效搜索呢?让FBNetV2来帮你解决这些问题。

文章概括:

在本文之前,已经有了一些经典的NAS,例如DARTS,ProxylessNAS等,但是它们都有各自的缺陷,比如:

  1. 内存损耗限制了搜索空间的大小
  2. 内存损耗与每层的操作数量线性相关(每一层的候选操作越多,内存损耗越大。eg:如果当前层的候选操作只有1个,那么当前层和前面网络层的组合方式只有1种;如果当前层的候选操作有5个,那么当前层和前面网络层的组合方式就会有5种,搜索时的内存损耗自然变大)
  3. ProxylessNAS使用二值化的训练方式可以有效的降低内存损耗,但是在大搜索空间中的收敛速度却很慢
    本文提出的DMaskingNAS可以在几乎不增加内存损耗的同时,大幅度扩大搜索空间,并且在可以在大搜索空间中保持高速搜索。

主要贡献:

  1. 提出了一种兼顾内存和效率的NAS
  2. 提出了一种用于特征图复用的掩码机制和有效的shape propagation
  3. 搜索出的网络精度很高

DMaskingNAS的搜索空间:
如Table1所示:

【论文笔记】FBNetV2: Differentiable Neural Architecture Search for Spatial and Channel Dimensions_第1张图片
从table1可以看到,相比于之前的NAS,DMaskingNAS的搜索空间明显扩大了很多。那么,DMaskingNAS使用了怎样的搜索方式,可以在扩大搜索空间的同时,不增加内存损耗的呢?

DMaskingNAS实现:

DMaskingNAS是在空间和通道维度上进行搜索,并设计了新的通道搜索和空间搜索的算法,如Figure2所示:
【论文笔记】FBNetV2: Differentiable Neural Architecture Search for Spatial and Channel Dimensions_第2张图片
接下来详细介绍通道搜索算法和空间搜索算法。
通道搜索:
通道搜索的目的是什么呢?就是说,在搜索空间中,有多个不同通道数量的候选操作,那么我们要通过通道搜索算法,确定哪一个通道数量的操作可以使网络性能最佳。文中用Figure3完整的描述了通道搜索算法的难点和解决方法,其中StepA说明了通道搜索的难点,StepB-StepE说明了难点的解决方法。因此想要理解DMaskingNAS的通道搜索的方法,我们只需要理解Figure3,如下图:
【论文笔记】FBNetV2: Differentiable Neural Architecture Search for Spatial and Channel Dimensions_第3张图片
Figure3中的gi表示的是Gumbel softmax中的权重,简单来说,我们可以把gi看作是一个系数,深入一点的话,我们可以把gi看作是NAS选取某个候选操作的概率。
接下来开始详细解释Figure3中的各个step:
StepA:假设搜索空间中有三个block,分别为blockA,blockB和blockC,它们的filters的数量分别为a,b,c。那么,当一个input分别输入三个block后,会得到outputA,outputB和outputC,三个output的channel的维度就分别为a,b,c,如果a,b,c互不相等,则outputA,outputB和outputC不能直接相加。文中用用bi表示block b有i个滤波器。
StepB:StepA中的outputA,outputB和outputC的channel不是不相等嘛,如果我们还是希望outputA,outputB和outputC能够相加怎么办?最直观的想法就是用zero-padding的方式将三个channel都扩充为k,其中k=max(a,b,c),这样outputA,outputB和outputC就可以相加了。
StepC:将StepB做一个小改善,StepB是将不同output的channel通过zero-padding的方式扩充到k,然后将不同的output进行相加,StepC是将不同block的filters的数量增加到k,这样一来将input输入不同的block后,不同的output也会有相同的channel数量。文中使用Gumbel Softmax实现StepC,如式(1)
【论文笔记】FBNetV2: Differentiable Neural Architecture Search for Spatial and Channel Dimensions_第4张图片
StepD:经过StepC,不同block拥有同样的filters数量,我们可以通过共享权重的方式近似求解,令bi=b。用li表示一个列向量,这个列向量的作用可以简单的看做是一个mask,以blockA为例,将blockA的filters数量从a扩充到k,那么li就会有a个1和k-a个0,这样一来,虽然blockA的filters的数量扩充了,但是其实扩充的元素都是0,并不影响blockA本身的作用。如式(2)
【论文笔记】FBNetV2: Differentiable Neural Architecture Search for Spatial and Channel Dimensions_第5张图片
StepE:就是在StepD的基础上,做了一个合并多项式,如式(3)
【论文笔记】FBNetV2: Differentiable Neural Architecture Search for Spatial and Channel Dimensions_第6张图片
DMaskingNAS就是通过StepA-StepE的方式实现了新的通道搜索算法。通过mask的方式,可以在几乎不增加任何算力和内存损耗的同时,解决了通道搜索算法的难点,并且可以保持高效率搜索、训练。
空间搜索:
本文中的空间搜索,就是在搜索输入数据的分辨率。文中用Figure4完整的描述了空间搜索算法的难点和解决方法,其中StepA-StepC说明了空间搜索的像素不匹配问题以及解决方法,StepD-StepE说明了空间搜索的感受野不匹配问题以及解决方法。因此想要理解DMaskingNAS的空间搜索的方法,我们只需要理解Figure4,如下图:
【论文笔记】FBNetV2: Differentiable Neural Architecture Search for Spatial and Channel Dimensions_第7张图片
接下来开始详细解释Figure4中的各个step:
StepA:假设现在有feature map A和feature map B,如果A和B的w,h不相同,则A和B不能直接相加。
StepB:假设A的wa,ha大于B的wb,hb,那么用边缘填充零的方式将wb,hb扩大与到wa,ha相同,然后再将A与B相加。这时会出现一个问题,同一个目标的像素位置不重合。
StepC:解决StepB的问题,用一种类似邻近上采样的方法将wb,hb扩大到月wa,ba相同。这种类似邻近上采样的方法,其实就是用0替换掉邻近上采样插入的邻近值。那么为什么不直接使用邻近上采样呢?文中解释说这种做法会降低“pixel contamination”,如Figure5所示:
【论文笔记】FBNetV2: Differentiable Neural Architecture Search for Spatial and Channel Dimensions_第8张图片
StepD:F是一个kernel为3*3的卷积,如果将feature map直接输入F,那么会缩小感受野。
StepF:解决了StepD中感受野缩小的问题,具体实现细节在Figure2的右半图解释的很清楚,就是先做三个邻近上采样(得到Figure2右半图的A),然后将采样后的像素分别融合成三个新的feature map(得到Figure2右半图的B),再将三个新的feature map分别通过F(得到Figure2右半图的C),最后再将Figure2右半图的C分别做邻近上采样(得到Figure2右半图的D)。
DMaskingNAS就是通过StepA-StepE的方式实现了新的空间搜索算法。
Effective Shape Propagation:
这部分的目的就是对通道搜索算法和空间搜索算法的进一步完善。定义了有效的输入通道、有效的输出通道、有效的输出shape等。通过effective shape实现了有效的资源损耗。

实验结果:

【论文笔记】FBNetV2: Differentiable Neural Architecture Search for Spatial and Channel Dimensions_第9张图片
从上图可以看到,FBNetV2在精度、算力、参数量三个方面的balance做的非常好,即便是与前阶段各种刷榜的EfficientNet-B0相比,也不落下风。

其他:

个人认为如何扩大NAS的搜索空间,如何在有限的计算机内存下进行高效的搜索是NAS的两个难点,而FBNetV2很好的解决了这两个难点,因此FBNetV2是我非常喜欢的一篇文章,喜欢程度远胜于FBNetV1。

若文中有不足之处,还请各位大佬们指正!
原创码字不易,若转载,请注明出处!
欢迎各位关注我的公众号,一个专注于NAS的公众号,我会持续跟进学术界NAS领域的最新进展,每周更新一篇新Paper,公众号刚刚起步,希望各位多多支持!

【论文笔记】FBNetV2: Differentiable Neural Architecture Search for Spatial and Channel Dimensions_第10张图片

你可能感兴趣的:(CVPR2020,FBNetV2详细解读,论文阅读:FBNetV2:,Differentiable,Neural)