基础-NAS神经网络架构搜索

发布时间 2023-07-12 17:07:03作者: JuneFall

NAS问题


其中,\(\mathcal{A}\) 为潜在神经结构的搜索空间,\(\mathcal{L}\left(·\right)\)测量结构\(A\)经过训练后在适应度评估数据集上的性能。\(\mathcal{L}\left(·\right)\)通常是非凸和不可微的

目前主要的神经架构搜索NAS算法可以分为以下三种:

  • 强化学习——需要强大算力支持,难以广泛应用
  • 基于梯度NAS算法——优化器的选择可能会导致病态,并且需要专家知识
  • 基于演化计算EC的NAS算法(ENAS)——解决非凸优化问题,甚至目标函数位置数学表达式的问题

三个重要模块:搜索空间、搜索策略、性能评估
or总结为:结构搜索模块、结构评估模块

1. 搜索空间

从搜索空间的基本单元分:

  • layer-based(编码空间中基本单元是原始层,如卷积层和全连接层)(缺:搜索空间巨大,且跳过连接层不能用原始层来表示)
  • block-based(将不同类型的不同层组合为块作为基本单元。传统如ConvBlock(Conv2d+BatchNormalization+Activation)等)
  • cell-based(可看作基于块的一种特殊情况,所有的块都相同,通过所有相同的块叠加来构建框架。)(更关注微观部分,例如NAS-BENCH-201搜索细胞中不同的层和连接组合,然后按顺序堆叠细胞)(NASNet和DARTS则搜索两种细胞,正常细胞和还原细胞。)(Frachon等人认为基于细胞的空间可以帮助获得良好的架构,这并没有理论基础。
  • topology-based (没有考虑基本单元内部参数,而是关心单元间的连接)

从搜索方式的角度分:

  • 全局搜索空间(链式结构及其衍生结构,决定网络结构的整体情况)
  • 基于结构单元cell的搜索空间(对每一个结构单元的计算操作进行搜索)

一种基于DAG图的通用神经结构编码方案

2. 评估加速

  • 权重继承(子代和父代的一些结构相同,因而相同部分的权重容易继承,如此就不用再从头训练网络)
  • 早停策略(设置一个相对较小的训练epoch,容易导致大型复杂结构的评估不准确)
  • 减少训练集(使用与大数据集相似特性的数据集子集,一般与迁移学习结合将搜索出的模型迁移到大型数据集上)
  • 群体记忆(有时后代直接继承父代的所有结构信息,因此不需要重新评估该个体)

NAS-Bench-201

宏观骨架
输入——3×3卷积层(16输出通道)、批处理归一化层
主体包括三堆细胞,由残差模块(2×2平均池化层+1×1卷积层)连接,三个阶段的输出通道数分别为16,32,64。每个单元被堆叠N=5次。
最终通过一个全局平均池化层,将特征映射平化为一个特征向量。使用全连接层和softmax层将特征向量转换为为最终输出。
搜索的细胞单元:
每个搜索的细胞单元都由DAG表示。预定义的操作集包含5个操作:1)归零,2)跳过连接,3)1×1卷积,4)3×3卷积5)3×3的平均池化层
操作集中的卷积是Relu、卷积、批处理归一化的序列组合模块。
设置节点v=4,以便搜索空间能够包含基本的残差模块。