NetAdapt作用:用户可以自动简化一个预训练的网络以使其达到硬件资源限制,同时最大化精确度。
NetAdapt简介:将direct metrics(延时,能量,内存占用等等, 等等,或者是这些指标的结合)并入自适应算法,direct metrics用empirical measurements分析,这样就不用对特殊平台的细节进行了解了(当然将来的改进可以对平台细节进行了解)。在每次迭代中,NetAdapt会差生很多network proposal并将他们在目标平台上测量,以测量结果指导NetAdapt产生下一批network proposal。
名词解释:
indirect metrics:MACs(the number of multiply-accumulate operations)、the number of weights、memory footprint
direct metrics:latency、energy consumption
indirect metrics 和direct metrics的关系是非线性的,并且依赖于平台。
empirical measurements:从目标平台测得的数据
Problem Formulation
NetAdapt致力于解决以下非凸限制问题:
其中Acc为精确度,Resj评估第j个资源的资源消耗的直接度量,Budj是优化器限制的第j个资源的预算。资源可以是延时,能量,内存占用,或者它们的组合。
NetAdapt将以上问题拆成一系列更简单的问题,并通过迭代解决它们
Neti是第i次迭代产生的网络,每迭代一次,限制条件会加强,∆Ri,j表示第j个资源第i次迭代的限制加强多少,每次迭代中,它的值都是不一样的,可以参看“resource reduction schedule ”。当每个自愿的Resj(Neti-1)- ∆Ri,j小于或等于Budj时停止迭代。最终输出自适应网络,也可以生成一系列的简化网络,这些简化网络可以动态选取或用于更深入的研究。
Algorithm Overview
为了简化解释,以一个资源预算——latency为目标,将采用的方法是从卷积层或者全连接层移除卷积核以降低latency,
为解决公式2,每一次迭代都在卷积或者全连接层减少卷积核的数量,移除的卷积核数量由empirical measurements作为指导,并且该策略允许同时减少卷积核或者特征图,为了存储精确度,简化的网络将会被短时间微调。每次迭代中,前面所述步骤将会应用于每层卷积层、全连接层。一次迭代将会产生k个(k是总共的卷积核和全连接层的数量)network proposal,每个network proposal都有一层和前一次迭代不同,最终有最高精确度的network proposal将被转移到下一次迭代中。当目标预算达到之后,被选择的网络将会被训练直到收敛。
如果觉得上述描述不好理解,请看下图:
Algorithm Details
choose number of filters:尽可能选择卷积核多的,又满足目前资源限制的network,注意一层的卷积核被移除,也会影响其下一个层的通道数。
choose which filters:保留l2范数最大的N个卷积核,N是由前一步确定的要保留的卷积核个数。
short-/long term fine-tine:network-wise end-to-end fine-tuning。
Fast Resource Consumption Estimation
layer-wise look-up tables:预先测量的每层的资源消耗表。在执行算法的时候查表,将每层的结果加起来来预测整个网络的资源消耗。
从下图和看出实际延时和估计延时成正比,所以可以直接用layer-wise look-up tables
result
与Multipliers、MorphNet、ADC三种方法作比较:
Multipliers:width multiplier、resolution multiplier或者它们的结合,width multiplier就是改变conv或fc卷积核的数量,resolution multiplier就是通过改变输入图片的像素。
MorphNet:使用sparsifyinig regularization。
ADC:使用强化学习的方法。
分析自适应网络架构: