EVALUATING THE SEARCH PHASE OF NEURAL ARCHITECTURE SEARCH
- predictor的输入的形式
- predictor的结构
- predictor输出的结果和实际的表现对比
作者说之前评价NAS是否好都是在下游任务上进行对比,但是效率比较低。这篇文章作者想去评价nas的搜索阶段。通过对比nas搜索的结果和random选择的结果,作者发现广泛使用的权重共享策略能够降低
- 总体上来讲,sota的nas和随机搜索的差不多
- 广泛使用的权重分配策略将NAS候选者的排名降低到无法反映其真实表现的程度,从而降低了搜索过程的效率
作者相信他们的评估框架是设计nas策略的关键,能一贯地发现比random优越的网络结构。
表现比随机不太好或者差不多,并不能说明别人的网络比较差,而是搜过空间被限制了,以至于随机的搜索结构都能产生不错的结果。为了验证这个,作者对搜索空间做了实验,遍历空间中所有的框架的表现,然后观察到这些算法并不能找到最好的网络结构。
作者还观察到,搜索过程中产生的网络结构,并不能真实反映其在evaluation阶段的表现。这表明能有效的减少搜索时长的权重共享策略会损害模型的表现,更精确的来讲,使用减少的搜索空间,作者使用kendall tau ( au) metric来表明是否使用权重共享得到的网络结构排名是完全无关的(在RNN搜索空间),在cnn空间中有点相关。因为这种ranking都被视作对nas sampler的训练数据,进一步解释了random search和nas alg的margin。我们也表明,训练samplers而不使用权重共享的思路,会极大超过随机采样得到的结果。
我们驳斥了这样一种普遍的看法,即接受和不参与权重共享训练的体系结构的质量是相似的。我们显示,排名差异会对NAS算法的搜索阶段产生负面影响,这严重阻碍了它们的鲁棒性和性能
总的来讲,作者说评估nas的搜索阶段,常常被忽略,这能够使得我们来辨别在sota的nas算法的两个重要特点:importance of search space and the negative impact of weight sharing.
和我们的研究并不相关,作者评估了搜索空间,和predictor关系不大
TAPAS: Train-less Accuracy Predictor for Architecture Search
近几年EA, RL或者是acc predictor来作为nas搜索的工具,但是没有一个表明,如果不在没看到的数据上进行训练的话,能够得到好的结果。
作者提出了一个acc predictor,无需训练,即可估算出看不见的输入数据集的第二分类性能的几分之一。和之前算法不一样的是,作者的prediction不仅仅在拓扑网络信息上进行标定,而且还能在困难数据集的特征上进行标定,这能够让我们re-turn prediction而不需要任何训练。
我们的predictor能够达到单个GPU每秒100个网络的速度。因此可以在几分钟之内评估很大的网络。
作者定义他们的方法为TAPAS,train-less accuracy predictor for architecture search.作者说他的predictor在unseen dataset上表现还可。这主要来源于作者能够adapting the prediction to the difficulty of dataset which is automatically determined by the framework. 除此之外,我们reuse experience accumulated from previous experiments
总的来讲,作者的framework的特点如下
- 不受限于任何特定的dataset
- 从前面的实验能够学到经验
- 对于大的网络能够跑的很快
作者的贡献如下
- 一个更快的,可扩展的,可靠的cnn性能预测的framework
- 灵活的预测算法,能够动态的适应数据数据的困难程度
- 做了很多实验
相关工作
作者说他主要follow一篇论文是peephole,通过分析网络结构来预测网络精度。和我们的方法相同的地方是,都使用了一个lstm来接受layer-by-layer的embedding。不同的是,他们对epoch number,以及在给定的epoch来预测精度。peephole在mnist和cifar上表现还可,但是没有transfer到没有看到的数据集。给定一个新的数据集,对peephole来讲,需要训练成千上万的网络,但是对我们的算法而言,不需要太昂贵的训练
作者的方法
主要分为三个部分
- dataset characterization (DC),负责接收没见过的数据以及计算scalar score,称为dataset characterization number (DCN),用来对数据进行rank
- lifelong dataset of experiments (LDE),吸收在TAPAS框架内执行的各种图像分类数据集上的神经网络训练实验
- train-less acc predictor (TAP),给定一个nn和dcn,能够预测潜在的可达到的peak acc,而不需要训练网络
根据DCN来评估数据的困难程度。然后DCN用来从LDE选择一系列的在相似困难程度数据集上执行的实验。选择的实验然后用来训练TAP。
DC
同一个网络,对于不同的数据集会有不同的结果,尽管这两个数据集会有相同的类别或者相同数据的图像以及分辨率。所以为了可靠的评估cnn在一个数据集上的表现,必须先分析其困难程度。作者计算DCN是通过训练一个probe net(作者引用了一篇参考文献)来得到其困哪程度。DCN有两个用处,一个是从LDE过滤过滤数据集(好像是只选择数据集?从后文的描述中,LDE是存储了DCN的),另外一个是作为TAP的输入。
作者将DCN作为peak acc,变化范围为[0, 1],训练一个叫做deep normalized probenet for ten epochs。
LDE
LDE是不断生长的DB,它吸收了框架内完成的每个新实验。每个实验包含三个部分
- CNN网络结构的描述
- 训练的超参
- 利用的数据集(with its DCN)
- 以及达到的精度
一开始的时候LDE是空的,然后作者perform 大量的初始化程序来用实验田中LDE.对于以下每一个数据集,作者会从metaqnn中sample 800个network
这些网络参数的strides和receptive以及padding都是变化的。为了加速岁这些网络的训练,作者是逐层训练的,采用了某种策略。
同时作者保证所有的参数都是相同的,batch size或者lr。虽然超参有限,但是对于提出表现比较差的网络已经足够。
给定(N_d)个不同的数据集(D_j), 同时给定1个新的数据集(hat{D}), 则LDE block会返回所有在满足如下约束的的实验
TAP
TAP被设计用来perform fast和可靠的CNN acc predictor。和peephole对比,TAP利用了通过对基于DCN的LDE过滤的相似难度的数据集进行实验而积累的知识。
TAP并不是直接的分析整个NN的结果,然后做出一个预测,而是iterative的做预测。换句话说,TAP it aims to predict the acc of a sub-network (l_{1:i+1}), 假设sub-network(l_{1:i})已知的话。所以predictor的主要构建成分包含
- 一个compact的encoding vector,能够表示整个网络结构
- 一个能够快速训练的LSTM网络
- layer-by-layer的预测机制
NN arc encoding(网络结构编码)
假设网络结构有(N_l)个layer,(l_i)表示从输入开始数第(i)层, (i=1, ..., N_l)。我们定义一个CNN sub-network (l_{a:b})(其中,(1leq a<bleq N_l))。作者定义他们的encoding vector包含两种类型的信息,如图2所示
- 第(i)层的信息
- (l_{1:i})的信息
对于第(i)层的信息,我们做了如下的参数选择,
- layer type是one-hot的,能够确定卷积,pooling,和bn, dropout,residual block和skip connection或者是fully connection
- 输出height和输入height的比例表示不同的strides或者是padding
- depth的ratio表示number kernels的变化
- number of weights表示(l_i)中所有可学习的参数。该值有助于TAP在增加网络学习能力的层(例如卷积,全连接的层)和减少维度或避免过度拟合的层(例如池化,drop out)之间进行区分。
在encoding的第二部分,作者包含了
- layer的总数目,从input开始数到 (l_i)
- inference flops能够精确的估计sub-network 的computational cost
- inference memory,能够精确估计sub-network的memory
- acc,在第一层设置为(1/N_c), (N_c)是要预测的类别的数目;如果是要预测的话,则设置为0;或者是一个从前一层预测到的特定的值(A_iin [0, 1])。
在训练之前,作者对数据perform feature-wise standardization,意味着对于encoding vector的每个feature,作者都是减均值除方差。
所以这要预测的精度是(l_i)层的精度field (A_i),这个可以用之前的TAP evaluation得到。和(l_{i+1})对应的(A_{i+1})永远为0.对输入层,(A_{0})为(1/N_c),最终预测的(A_{N_l})则为全部网络的精度。
TAP网络结构
TAP有两个堆积的LSTM组成,每个LSTM分别有50个和100个隐藏单元。输出接一个全连接层和sigmoid激活。两个输入是,第一个输入encode,之后第二个lstm输出和第二个DCNconcate一起,送到全连接层之中。
LDE提供了训练数据,所有的生成的网络都是用这种incremental方式。batch size为512, TAP非常小,所以单个gpu几分钟就训练完
实验
作者选取了一些数据集,同时对imagenet dataset进行了sub-sampling。结果是每个DCN值的数据集分布更加精细;然后improve the prediction。每个图像resize到(32 imes32), 作者说这会减少LDE的初始化,另一方面,并不会降低泛化行,不同的分辨率的图片都可以应用到pipeline之中。
每个数据产生800个网络,超参设置都是一样的。
作者和其他的方法比较,同时定义了一些评价指标
- MSE,越低越好
- Kendall's Tau (Tau), 描述预测和真值排序的相似性, 越高越好
- coefficient of determination((R^2)), 它测量可从自变量预测的因变量中方差的比例。越高越好