FBNet: Hardware-Aware Efficient ConvNet Design via Differentiable Neural Architecture Search

——Facebook-Berkeley-Nets

摘要:

为移动设备设计卷积网络挑战巨大,因为设计空间巨大,现有NAS方法在计算上是昂贵的。另外,之前的工作关注降低FLOPs,但是FLOPs并不总是反应真实的延迟。因此基于differentiable neural architecture search(DNAS),采用梯度优化的方法优化卷积结构,避免像以前的方法那样分别枚举和训练各个体系结构。FBNets-B在ImageNet上top-1准确率为74.1%,295M FLOPs,在三星S8上23.1ms延迟,比MobileNetv2小2.4倍,快1.5倍。

DNAS for ConvNet

DNAS搜索一个层次空间,ConvNet的每一层都可以选择不同的块,搜索空间由一个随机超网络表示,搜索过程使用SGD训练随机超网以优化架构分布,从训练的分布中采样最佳体系结构。 在目标设备上测量每个操作的延迟并用于计算超网的损失。

介绍

设计准确高效的ConvNet有如下挑战:

未知的设计空间,ConvNet的设计空间是组合的,训练ConvNet是非常耗时的,因此之前的网络设计基本不怎么搜索整个设计空间。采用强化学习和遗传算法的NAS非常耗时。

不可广泛移植的最优解,最优的卷积结构受很多因素限制,比如输入分辨率和目标设备。一旦这些因素改变,最优解的结构就会变化。

不一致的效率度量,大多数效率度量不仅依赖于网络结构也依赖目标设备的硬件和软件配置。之前的许多工作都用了硬件无关的度量比如FLOPs(乘加操作的次数)去评估效率。然而,FLOP计数低的网络不一定快。硬件无关的度量和实际的效率之间的不一致性使卷积网络的设计更加困难。

DNAS用操作随机执行的超级网络代表搜索空间,将找到最佳架构的问题放松到找到产生最佳架构分布的问题,通过使用Gumbel Softmax技术,可以直接基于梯度优化(SGD)的方法训练结构分布。用于训练随机超级网络的损失不仅仅是交叉熵损失,还包括延时损失。为了评估网络结构的延时,本文将计算搜索空间每个操作的延时并且使用速查表模型去计算所有操作的延时(每个操作的时间加起来),使用这个模型可以快速的估量庞大的搜索空间中网络结构的延时。更重要的是,它使得延时关于层结构选择是可微的。

Gumbel Softmax

最近的工作

DARTS着重在cell级别的架构搜索,并且同样的cell结构重复堆叠得到网络整体,cell级结构是硬件不友好的,并且实际效率也很低。MnasNet研究了一个stage级的分层搜索空间,允许不同的block用于网络的不同stage,不过同一个stage中的block仍然是相同的。不同于关注FLOPs,[20]目的在于优化目标设备的延时。

方法

将结构搜索问题建模为min_{a\in A}min_{w_a}L(a,w_a),给定一个结构空间A,期望去寻找一个最优结构a\in A,使得训练它的权重w_a之后,可以使得损失L(a,w_a)最小化。在任务中,关注三个因素:1、搜索空间A,2、损失函数L(a,w_a)(考虑延时),3、一个高效的搜索算法。

搜索空间

之前的工作关注cell级别的搜索(单元级别),一旦单元结构搜索得到,网络就由这些单元堆叠得到。但是,许多搜索得到的单元结构非常复杂和琐碎,因此在移动端前向速度很慢。而且,同一结构的单元在不同深度回会网络的精度和延时有不同影响,因此本文允许不同的层选择不同的blocks来获得更好的精度和延时。

本文建立一个层次级别的搜索空间,其宏观结构固定,每层可以选择不同的block,整体结构如下图,Block这一列代表着block的类型,“TBS”表示需要被搜索层类型,f列代表着一个Block中卷积核的个数,n列代表着Block的个数,s列代表着第一个Block的stride。1504(1984)代表1\times 1卷积的个数。

整体结构

网络整体结构确定了网络层数和每层的输入输出的维数。网络的前三层和最后三层有着固定的操作。对于剩下的层,他们的Block需要被寻找。每层的卷积核个数是人为预先确定好的,对于浅层,使用相对较小的通道数,因为浅层的特征图分辨率较大,FLOP与输入尺寸的二次幂成正比。

网络中的每个可搜索层可以从层次搜索空间中选择不同的块,Block的结构来源于MobileNetv2和ShiftNet,如下图:包含1\times 1的point-wise卷积,K\times K的depthwise卷积,以及一个1\times 1的point-wise卷积,ReLU函数跟在第一个1\times 1卷积和第二个K\times K卷积之后,最后一个1\times 1卷积之后不接激活函数,如果输入分维度与输出分维度相同,则使用短路连接将输入与输出相加。同样仿照MobileNet-v2和ShiftNet以一个扩展比例e来控制Block。它决定了第一个1\times 1卷积将输入特征图的通道扩大多少,对于Depth-wise卷积,卷积核的大小可以是3\times 35\times 5,对于第一个和最后一个1\times 1的卷积,使用group卷积(point-wise)来降低计算量。当使用group卷积时,仿照ShuffleNet来进行通道信息融合。

Block的结构

在实验中,层级的搜索空间包含9个候选Blocks,它们的设置如表:

9中不同的Block

skip表示直接将输入特征图输出而不经过任何操作。候选Block可以帮助降低网络的深度。整体来看,搜索空间包含22层,每层可以选择9中候选的Blocks。

Loss

损失函数定义为L(a,w_a)=CE(a,w_a) \times \alpha log(LAT(a))^\beta

包含结构a与参数w_a的交叉熵损失,以网络在目标设备上的延时损失。我们不可能去对所有的网络结构进行延时测试,为了简化问题,使用一个延时速查表模型来评估整个网络的延时(基于每个操作的延时),因此:

LAT(a)=\sum_{l}LAT(b_{l}^{(a)} )

其中,b_l^{(a)}代表结构a的第l层,每个操作的延时是独立于其他操作的。使用这样的方法,使得掩饰对于Block的选择是可微的,因此可以使用SGD来进行优化。

Search Algorithm

为了降低计算复杂度,有些算法将内层问题替换为在简单的数据集(CIFAR-10)上训练候选结构,尽管如此,训练依然是耗时的。

本文首先将搜索空间表示为一个随机的超级网络。这个超级网络有着上表所示的整体结构,每层包含9个上表所示并行的Blocks,在超级网络的前向过程中,只有一个候选的Block被采样进来,并以以下采样概率执行:

采样概率

包含着决定第l层采样每种Block的概率的参数,第l层的输出为x_{l+1}=\sum_{i}m_{l,i}b_{l,i}(x_l)

m_{l,i}=1表示Blockb_{l,i}被采样,否则为0,b_{l,i}(x_l)表示第l层的第i个Block的输出(给定输入特征图x_l),每层独立采样,因此结构可以定义为:

P_{\theta}(a)=\prod_{l}P_{\theta_{l}}(b_l=b_{l,i}^{(a)})\theta是由\theta_{l,i}组成的向量(第l层的第i个Block),b_{l,i}^{(a)}表示在采样的结构a中,第l层选择第i个Block。重写优化问题的表达形式:

最小化损失在结构分布上的期望

其中的损失函数对于权重w_a明显可微,可以采用SGD解决,但是该损失对于抽样参数\theta并不是直接可微的,因为梯度不能由变量m_{l,i} 传递至\theta_{l,i},为了避开这个问题,将离散随机变量m_{l,i}扩展为:

GumbelSoftmax

其中,

耿贝尔分布

是一个服从Gumbel分布的随机噪音。Gumbel Softmax函数由温度参数\tau 控制,当其接近0时,m_{l,i}近似服从P_{\theta}(a)=\prod_{l}P_{\theta_{l}}(b_l=b_{l,i}^{(a)})所决定的离散类别抽样,当温度参数变大时,m_{l,i}变成一个连续随机变量,无论其怎么变化,m_{l,i}\theta_{l,i} 都是直接可微的。对于延时损失,使用速查表进行效率估计,因此:

LAT(a)=\sum_{l}LAT(b_{l}^{(a)} )写作LAT(a)=\sum_{l}\sum_{i}m_{l,i}LAT(b_{l,i} )

每个操作LAT(b_{l,i})的延时是常数,因此整体延时对m_{l,i},\theta_{l,i}都是可微的,因此损失函数对于权重w_a和结构分布参数\theta都是可微的,因此可以使用SGD解决。

搜索过程等价于去训练随机super net。训练过程中,计算:损失对于权重的偏导数,去训练super net中每个操作f的权重,这部分与传统的卷积神经网络没有分别,操作搜索训练完城后,不同的操作使得整体网络的精度和速度不同,因此计算损失对于网络结构分布的偏导数,去更新每个操作的抽样概率P_{\theta}。这一步会使得网络整体的精度和速度更高,因为抑制了低精度和低速度的选择,super net训练完成之后,可以从结构分布P_{\theta}中抽样获得最优的结构。

实验


实验结果
搜索网络可视化
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,530评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,403评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,120评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,770评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,758评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,649评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,021评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,675评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,931评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,751评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,410评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,004评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,969评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,042评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,493评论 2 343