TAPAS与EVALUATING THE SEARCH PHASE OF NEURAL ARCHITECTURE SEARCH阅读笔记

  1. predictor的输入的形式
  2. predictor的结构
  3. predictor输出的结果和实际的表现对比

作者说之前评价NAS是否好都是在下游任务上进行对比,但是效率比较低。这篇文章作者想去评价nas的搜索阶段。通过对比nas搜索的结果和random选择的结果,作者发现广泛使用的权重共享策略能够降低

  1. 总体上来讲,sota的nas和随机搜索的差不多
  2. 广泛使用的权重分配策略将NAS候选者的排名降低到无法反映其真实表现的程度,从而降低了搜索过程的效率

作者相信他们的评估框架是设计nas策略的关键,能一贯地发现比random优越的网络结构。

表现比随机不太好或者差不多,并不能说明别人的网络比较差,而是搜过空间被限制了,以至于随机的搜索结构都能产生不错的结果。为了验证这个,作者对搜索空间做了实验,遍历空间中所有的框架的表现,然后观察到这些算法并不能找到最好的网络结构。

作者还观察到,搜索过程中产生的网络结构,并不能真实反映其在evaluation阶段的表现。这表明能有效的减少搜索时长的权重共享策略会损害模型的表现,更精确的来讲,使用减少的搜索空间,作者使用kendall tau \(\tau\) 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关系不大

近几年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的特点如下

  1. 不受限于任何特定的dataset
  2. 从前面的实验能够学到经验
  3. 对于大的网络能够跑的很快

作者的贡献如下

  1. 一个更快的,可扩展的,可靠的cnn性能预测的framework
  2. 灵活的预测算法,能够动态的适应数据数据的困难程度
  3. 做了很多实验

相关工作

作者说他主要follow一篇论文是peephole,通过分析网络结构来预测网络精度。和我们的方法相同的地方是,都使用了一个lstm来接受layer-by-layer的embedding。不同的是,他们对epoch number,以及在给定的epoch来预测精度。peephole在mnist和cifar上表现还可,但是没有transfer到没有看到的数据集。给定一个新的数据集,对peephole来讲,需要训练成千上万的网络,但是对我们的算法而言,不需要太昂贵的训练

作者的方法

主要分为三个部分

  1. dataset characterization (DC),负责接收没见过的数据以及计算scalar score,称为dataset characterization number (DCN),用来对数据进行rank
  2. lifelong dataset of experiments (LDE),吸收在TAPAS框架内执行的各种图像分类数据集上的神经网络训练实验
  3. train-less acc predictor (TAP),给定一个nn和dcn,能够预测潜在的可达到的peak acc,而不需要训练网络

image

根据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,它吸收了框架内完成的每个新实验。每个实验包含三个部分

  1. CNN网络结构的描述
  2. 训练的超参
  3. 利用的数据集(with its DCN)
  4. 以及达到的精度

一开始的时候LDE是空的,然后作者perform 大量的初始化程序来用实验田中LDE.对于以下每一个数据集,作者会从metaqnn中sample 800个network

image

这些网络参数的strides和receptive以及padding都是变化的。为了加速岁这些网络的训练,作者是逐层训练的,采用了某种策略。

同时作者保证所有的参数都是相同的,batch size或者lr。虽然超参有限,但是对于提出表现比较差的网络已经足够。

给定\(N_d\)个不同的数据集\(D_j\), 同时给定1个新的数据集\(\hat{D}\), 则LDE block会返回所有在满足如下约束的的实验

image

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的主要构建成分包含

  1. 一个compact的encoding vector,能够表示整个网络结构
  2. 一个能够快速训练的LSTM网络
  3. layer-by-layer的预测机制
NN arc encoding(网络结构编码)

image

假设网络结构有\(N_l\)个layer,\(l_i\)表示从输入开始数第\(i\)层, \(i=1, ..., N_l\)。我们定义一个CNN sub-network \(l_{a:b}\)(其中,\(1\leq a<b\leq N_l\))。作者定义他们的encoding vector包含两种类型的信息,如图2所示

  1. \(i\)层的信息
  2. \(l_{1:i}\)的信息

对于第\(i\)层的信息,我们做了如下的参数选择,

  1. layer type是one-hot的,能够确定卷积,pooling,和bn, dropout,residual block和skip connection或者是fully connection
  2. 输出height和输入height的比例表示不同的strides或者是padding
  3. depth的ratio表示number kernels的变化
  4. number of weights表示\(l_i\)中所有可学习的参数。该值有助于TAP在增加网络学习能力的层(例如卷积,全连接的层)和减少维度或避免过度拟合的层(例如池化,drop out)之间进行区分。

在encoding的第二部分,作者包含了

  1. layer的总数目,从input开始数到 \(l_i\)
  2. inference flops能够精确的估计sub-network 的computational cost
  3. inference memory,能够精确估计sub-network的memory
  4. acc,在第一层设置为\(1/N_c\)\(N_c\)是要预测的类别的数目;如果是要预测的话,则设置为0;或者是一个从前一层预测到的特定的值\(A_i\in [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\times32\), 作者说这会减少LDE的初始化,另一方面,并不会降低泛化行,不同的分辨率的图片都可以应用到pipeline之中。

每个数据产生800个网络,超参设置都是一样的。

作者和其他的方法比较,同时定义了一些评价指标

  1. MSE,越低越好
  2. Kendall's Tau (Tau), 描述预测和真值排序的相似性, 越高越好
  3. coefficient of determination(\(R^2\)), 它测量可从自变量预测的因变量中方差的比例。越高越好

image

image

posted on 2021-05-26 14:10  YongjieShi  阅读(71)  评论(0编辑  收藏  举报

导航