文章目录
- 前言
- 一、总体介绍
- 二、方法(One-Shot Architecture Search)
- 1. Search Space 设计
- 2. 训练one-shot模型
- 3. 评估候选结构
- 4. 最终模型选择与训练
- 三、One-Shot 模型实验
- 1. Dropout Rate的影响
- 2. 实验结果对比
- 四、理解One-shot模型
前言
本文重在探究为什么One-Shot模型中的权重能被众多不同的架构共享,并且是有效的。通过实验分析,证明了在没有超网络或RL的情况下,从复杂的搜索空间中有效地识别有效的网络结构是可能的
一、总体介绍
这篇论文也是基于参数共享的,作者训练了一个可以表述所有子结构的大网络。搜索空间的大小随选择的数量呈指数增长,而one-shot模型的大小仅呈线性增长。相同的权重用于评估许多不同的体系结构,从而将运行体系结构搜索所需的资源减少了数量级。
但是作者基于此也提出了一个问题。为什么不同的结构可以共享一个权重集合?即,一组固定的权重可以在广泛的体系结构中很好地工作的想法也是违反直觉的。SMASH(采用超网络)和ENAS(采用RL控制器)也尝试解决这个问题。而本文作者的目标是了解权重共享在体系结构搜索方法中所起的作用。令人惊讶的是,实验表明,要获得好的结果,既不需要超网络,也不需要RL控制器。为此作者训练了一个大的one-shot模型,包含了搜索空间里的每个可能的操作。然后剔除一些操作,测量其对模型预测准确率的影响。作者发现网络自动将其能力集中在对产生良好预测最有用的操作上。剔除不太重要的操作对模型的预测的影响很小,而剔除很重要的操作对模型预测的影响很大。实际上,可以通过观察网络结构在训练集中无标签样例的行为,来预测网络在验证集上的准确率。
二、方法(One-Shot Architecture Search)
一共有四个步骤组成:
- Design a search space that allows us to represent a wide variety of architectures using a single one-shot model.
- Train the one-shot model to make it predictive of the validation accuracies of the architectures.
- Evaluate candidate architectures on the validation set using the pre-trained one shot model
- Re-train the most promising architectures from scratch and evaluate their performance on the test set.
1. Search Space 设计
基本要求
- 搜索空间应该足够大,可以表述各种候选结构。
- one-shot模型产生的验证集准确率必须能预测独立模型训练产生的精度。
- 在有限资源条件下,one-shot应该足够小。
如上例所示:不同于分别训练三个模型,我们训练一个包括了这三个操作的模型(one-shot model),然后在验证阶段,我们选择性地剔除其中两个操作的输出,保留使预测准确率最高的操作。一般而言,我们可以选择enable或disable输入连接的任何组合。这样,搜索空间的大小随输入的跨连接的数量呈指数增长,而one-shot模型的大小呈线性增长。在concent后总是进行卷积,无论有多少输入跨连接,卷积中的输出滤波器的数量都保持不变。之后对卷积的输出运用不同的操作,并将结果sum起来。在评估阶段,可以将其中的一些操作置零或者从网络中删除。在上例中,操作方式有3x3卷积、5x5卷积、最大池化和Identity,但只有5x5卷积操作留了下来。这个方法对于更大的模型也是适用的,如下图。
网络可以看做有几个相同的cell堆叠在一起组成的(图左1),每一个cell中有固定数目的choice block(图左2),这些choice block的输入来自于前驱cell的输出和同一个cell下前驱choice block的输出。作者设置的cell中有4个choice block,即,每个choice block最多可以从五个可能的输入中进行选择:两个来自前驱cell的输出,最多三个来自同一个cell下前驱choice block的输出。每个choice block包括七种操作(图左3),有identity,3x3深度可分离卷积,5x5深度可分离卷积,7x7深度可分离卷积、1x7卷积跟7x1卷积,最大池化,平均池化。
2. 训练one-shot模型
One-shot模型是用带动量的SGD训练的标准大型神经网络。为了确保特定架构的one-shot模型精度与stand-alone模型精度之间良好关联,我们需要讨论以下几个方面。
互相适应的鲁棒性(Robustness to Co-adaptation): 在评估阶段,我们通过zero out一些连接,得到了一些特定的结构。尽管我们移除了不重要的操作,也可能会导致模型的预测性能严重下降,one-shot模型和独立模型之间的准确率的关系也会退化。为了解决这个问题,作者引入了path dropout机制,训练one-shot模型的时候,在每一批次中随机将一些操作剔除。在训练开始disable path dropout,随着训练的进行逐步线性的增加dropout rate,这样可以达到了一个较好的结果。在训练结束时dropout rate 设置为,其中为一个超参数,为给定一个操作下输入路径的数量。fan-in的值越大,dropout rate越高。对于一个cell,不同的operation的都是彼此独立的剔除(这样有益处),对于一个model包含多个cell,则相同的operation将被一并剔除。
Stabilizing Model Training:在早期实验中,模型的训练非常的不稳定,作者发现小心的使用BN可以使训练稳定,文章中采用了BN-Relu-Conv这种规则。因为在评估阶段我们会剔除一些操作,这样就是BN统计量发生了变化,因此批BN在评估时的应用方式与在训练时完全相同——动态计算batch的统计信息。
作者发现如果在单个批处理中为每个示例剔除掉相同的路径,one-shot模型训练就会变得不稳定。相反如果我们每个示例剔除不同路径,它是可以稳定的。因此对于不同的样本子集,作者dropout不同的操作:作者将一个batch的样本分成多个小batch(文中称为ghost batch),一个batch有1024个样本,分成32个ghost batch,每个有32个样本,每个ghost batch剔除不同的操作。
Preventing Over-regularization:让L2正则化只对选择的子模型做正则化。
3. 评估候选结构
训练了one-shot模型后,我们就使用它来评估许多不同架构在held-out验证集的性能。作者在实验中, 按照论文SMASH:One-shot model architecture search through hypernet-works
的方法。 从固定的概率分布中进行独立的结构采样。作者也注意到,随机采样也可以用进化算法和基于神经网络的强化学习代替。
4. 最终模型选择与训练
完成搜索之后,从头训练表现最好的结构,同时也可以扩展架构以增加其性能,也可以缩小架构以减少计算成本。作者在实验中,增加了过滤器的数量来扩展架构。
三、One-Shot 模型实验
1. Dropout Rate的影响
和vanilla SGD相比,仅引入了一个新的超参数Dropout Rate,我们需要细心调节以实现one-shot模型与stand-alone模型之间精度的良好关系。为了证明其重要性,为此作者训练了具有不同Dropout Rate的One shot模型,且在训练过程中Dropout Rate保持稳定。结果如下:
从图中可以发现当Dropout Rate过低时(大多数路径在训练步骤都保留了),为数不多架构的准确度比较高,One-shot模型准备不足,无法在评估时将模型的大部分路径清零。当大多数的连接zero out时候,无法得到良好的评估。当Dropout Rate过高时,尽管架构的准确率有所增加,但是one-shot模型将最有用的capacity集中到最有用路径上的程度大大降低了。
2. 实验结果对比
实验的具体实现可以看论文。总体来说,实验的效果还是不错的(Ensa的变体除外)。
四、理解One-shot模型
作者探究了为什么可以在许多不同的体系结构之间共享一组固定的模型权重。下图可知,在CIFAR-10时,One-shot模型的精度范围是30%到90%,但搜索到的独立模型的准确率在92%至94.5%之间,或者70%至75%之间,为什么one-shot模型的准确率之间相差这么多?
作者之前做了这样的假设:one-shot模型可以学习网络中哪些操作最有用,并在利用时依赖于这些操作,移除不重要的操作对模型预测的准确率有较小的影响,移除很重要的操作对模型预测的准确率有较大的影响。为了去验证这样的假设,作者采样了一组模型(参照结构),大部分操作没有被移除()。作者将这些参考结构的预测与从实际搜索空间中采样的带着操作较少的候选结构的预测在自训练集的批样本上进行了比较。如果假设是正确的,那么由性能最佳的模型做出的预测与使能网络中的所有操作时做出的预测相似。
作者采用对称散度矩阵来说明候选结构和参照结构输出概率分布的接近程度,如果候选结构与参照结构分布几乎相同,则对称化KL散度将接近于0。相反,如果分布非常不同,对称的KL散度会变得相当大。作者计算了训练集中64个随机样本的KL散度,并报告了平均值。结果如下图左所示,当one-shot的精确度高时,KL散度接近0。这意味着候选体系结构的预测越接近参考体系结构的预测,其在stand-alone model质量通常就越高,权重共享隐含地迫使one-shot模型识别并关注对生成良好预测最有用的操作。即:如果某些操作对one-shot模型特别有用,则在生成预测时,它将依赖于这些操作的输出。从网络中删除这些操作将导致极低的验证集精度。另一方面,不太有用的操作从网络中剔除,只会对一次性模型的预测产生轻微影响。
作者接下来展示了KL散度随着时间变化的趋势。作者采样了六个不同的结构然后观察随着训练它的KL散度的变化情况,如下图所示:一开始他们的KL离散度是低的,因为模型的预测一开始置信度比较低,每类会分配一个大致相等的概率。随着训练,不同结构的预测开始变的不同,这导致了KL散度的激增,在训练后期,网络中最有用的操作对模型的预测有了强大的影响,KL散度开始下降。