基础-NAS神经网络架构搜索
NAS问题
其中,
目前主要的神经架构搜索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,以便搜索空间能够包含基本的残差模块。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)