前言
文章讲了三个点
- 搜索空间
- 搜索策略
- 性能评估
搜索空间定义了原则上可以表示哪些体系结构。结合关于非常适合于任务的体系结构的典型属性的先验知识可以减小搜索空间的大小并且简化搜索。**但是,这也引入了人类的偏见,这可能会阻止发现超出当前人类知识的新颖的架构构建块。 **
搜索策略详细说明了如何探索搜索空间(搜索空间通常是指数级的,甚至是无界的)。它包含了经典的探索-利用权衡,因为**一方面,希望快速找到性能良好的架构,而另一方面,应避免过早收敛到次优架构区域 **
NAS的目标通常是找到能够对不可见数据实现高预测性能的体系结构。性能评估是指评估该性能的过程:最简单的选择是对数据执行体系结构的标准训练和验证,但不幸的是,这在计算上是昂贵的,并且限制了可以探索的体系结构的数量。因此,许多最近的研究集中于开发降低这些性能估计的成本的方法。
搜索空间
搜索空间由下面公式参数化:
- 最大层数
- 每一层 能执行的操作(pooling conv)
- 关于操作的超参数
网络结构
- 链式网络 如左图
- 残差网络 如右图 L0 L8 残差添加在一起
- denseNet l10
基于细胞的搜索空间
设定重复的单元 为 单一的细胞或者块 来堆叠模型
- 优点
- 搜索空间的大小急剧减小,因为单元通常由比整个体系结构少得多的层组成。
- 通过简单地改变模型中使用的单元和过滤器的数量,从单元构建的架构可以更容易地转移或适应其他数据集。
- 通过重复构建块来创建体系结构已被证明是一种有用的设计
- 问题
一个新的设计选择,即如何选择宏观体系结构
宏观结构如何构建
- 使用多少个细胞
- 如何连接细胞
在微观下
- 细胞的结构是如何构建
搜索策略
许多不同的搜索策略可以用来探索神经结构的空间,包括随机搜索、贝叶斯优化、进化方法、强化学习(RL)和基于梯度的方法。
贝叶斯优化
无聊 没意思
RL
神经体系结构的生成可以被认为是Agent的动作,动作空间与搜索空间相同。 代理的奖励是基于对训练过的体系结构在未见数据上的性能的估计(参见第4节)。 不同的RL方法在如何表示代理的策略以及如何优化策略方面有所不同:
进化
进化算法进化一群模型,即一组(可能训练过的)网络; 在每一个进化步骤中,至少从种群中抽取一个模型,并作为父母通过对其施加突变来产生后代。 在NAS环境中,突变是局部操作,例如添加或删除一个层,改变一个层的超参数,添加跳过连接,以及改变训练超参数。 在训练后代后,评估它们的适应度(例如,在验证集上的表现),并将它们添加到种群中。
神经进化的方法在如何取样父母,更新种群和产生后代方面有所不同。
结论
结论是RL和进化在最终测试精度方面表现同样好,进化具有更好的随时性能和发现更小的模型。
性能估算策略
从头开始对每个体系结构进行评估的训练通常会产生NAS数千GPU天的计算需求
第一种
我的总结是缩小数据量
- 缩小训练epoch
- 数据子集
- 缩小模型规模
- 缩小数据
第二种 曲线外推
通过一开始的曲线 来提前取消一些垃圾曲线
建议外推初始学习曲线并终止那些预测表现不佳的曲线,以加快架构搜索过程。 (剪枝?)
预测神经结构性能的主要挑战是,为了加快搜索过程,在相对较大的搜索空间中需要基于相对较少的评估来做出良好的预测。
第三种 权重遗传/网络态射
它们不是从零开始训练模型,而是通过继承权重来进行热启动
态射:看看图!
第四种 一次性模型/重量分摊(GPU可行性研究)
只有一次性模型才需要训练,他的权重在不同的架构中共享
这些架构只是一次性模型的子图。
One-shot Architecture Search(参见图4)将所有架构视为一个超图(One-shot Model)的不同子图,并在具有该超图共同边的架构之间共享权重
这大大加快了体系结构的性能评估,因为不需要任何训练(只需要在验证数据上评估性能),同样导致了只需要几个GPU天的方法。 一次性模型通常会产生很大的偏差,因为它严重低估了最佳架构的实际性能; 然而,它允许对体系结构进行排序,如果估计的性能与实际性能密切相关,这就足够了。
单次NAS的一个普遍缺陷是先验定义的超图将搜索空间限制在子图上。 此外,要求在架构搜索期间整个超图驻留在GPU存储器中的方法将被限制在相对较小的超图和相应的搜索空间中,因此通常与基于单元的搜索空间结合使用。