论文
DARTS: Differentiable Architecture Search
Single Path One-Shot Neural Architecture Search with Uniform Sampling
BN-NAS: Neural Architecture Search with Batch Normalization
ProxylessNAS: Direct Neural Architecture Search on Target Task and Hardware
FairNAS: Rethinking Evaluation Fairness of Weight Sharing Neural Architecture Search
参考
【神经网络搜索】Single Path One Shot
解读模型压缩15:神经架构搜索加速技术 (一)
NAS 学习笔记(九)- FairNAS
Darts
解决什么问题:
第一个提出基于松弛连续化的,使用梯度下降进行搜索的神经网络架构搜索算法,极大降低了搜索时间花费
采用什么方法解决:
使用了Softmax对本来离散的搜索空间进行了连续化,并用类似于元学习中MAMAL的梯度近似,使得只在一个超网络上就可以完成整个模型的搜索,无需反复训练多个模型
SPOS
解决什么问题:
可以直接在大型数据集ImageNet上搜索,并且文章还提出了一种缓和权重共享的NAS的策略——训练超网络的过程与搜素的过程耦合解耦策略,让模型能有更好的排序一致性
采用什么方法解决:
构建一个简化的超网络——单路径超网络,这个网络按照均匀的路径采样方法进行训练。所有子结构(及其权重)获得充分而平等的训练。基于这个已训练的超网络,可以通过进化算法快速地搜索最优子结构,其中无需对任何子结构进行微调。
训练超网络的时候不是一起训练,而是一个path一个path地训练,以减少子网络之间的相互耦合
MMNAS
解决什么问题:
多模态方向上现有的工作大多将关注点聚焦在单一任务上并手动进行网络结构的设计。MMNAS提出一种通用的深度多模态神经结构搜索框架,即一种新的广义多模态学习范式,该范式使用神经结构搜索(NAS)算法来搜索不同多模态任务的最优结构。
采用什么方法解决:
统一的编码器-解码器主干网络,每个编码器/解码器块对应于从预定义操作的候选集合中搜索相应的操作。在统一的主干之上,附加任务专用的头来处理不同的任务
BN-NAS
解决什么问题:
借助批归一化操作 (BN) 进行的网络结构搜索算法,大幅加速了 One-Shot NAS 的过程
采用什么方法解决:
BN 参数可以衡量一个 channel 是否重要,因此,具有较小 BN 参数的 channel 被认为不太重要,并且剪掉这些 channel 将对整个网络的结果产生较小的影响。因此,当要衡量某个子网络的重要性时,将多个通道的 BN 参数累加起来
超网络训练过程只训练 BN 参数,子网络搜索过程借助 BN-indicator 高效完成。
ProxyLessNAS
解决什么问题:
不需要使用代理任务,直接在大规模的数据集上搜索整个网络,而且直接learn所有的block(代理的意思就是3点:小数据集,少数几个blocks,少数几个epochs)
为NAS提供了一种新的路径剪枝的方式,展示了NAS与模型压缩之间的紧密关系,通过二值化的手段将内存消耗降低了一个量级(这个解决的是GPU memory explosion的问题)
提出了一种基于梯度的方法(延迟正则化损失)来约束硬件指标。
采用什么方法解决:
训练时路径二值化(训练supernet的时候,只有1条路径处于激活状态
只需选择具有最高路径权重的路径
各个路径的 α 和 Ω 不是一起更新的,而是每次采样1条路径更新一下。采样的概率分布会变化,是learnable的
总结
NAS综述
神经架构搜索(NAS)是自动化神经网络架构设计的过程,因此是机器学习自动化的下一步。 NAS可以被视为AutoML的子域,并且与超参数优化和元学习具有显着的重叠。
可以根据搜索空间、搜索策略和性能评估策略三个维度对NAS的方法进行分类:
-
搜索空间
搜索空间定义了原则上可以表示哪些神经网络结构。 结合非常适合某一任务的先验知识可以减小搜索空间的大小并简化搜索。 但是,这也引入了人为偏见,这可能会阻止寻找超越当前人类知识的新颖的网络结构部件。
- 链式神经网络的搜索空间
- 复杂、多分支结构神经网络的搜索空间(如残差
- 基于细胞单元/构件的搜索空间
- 分层搜索空间
-
搜索策略
搜索策略定义了如何探索搜索空间,使用怎样的算法可以快速、准确找到最优的网络结构参数配置。它包含了经典的探索 - 利用权衡(exploration-exploitation trade-off)。因为,一方面,需要快速找到性能良好的神经网络结构,另一方面,应避免过早收敛到次优结构区域。
- Grid search(网格搜索)
- Random search(随机搜索)
- Genetic algorithm(遗传算法)
- Evolutionary method(进化方法)
- Paticle Swarm Optimization(粒子群优化)
- Bayesian Optimization(贝叶斯优化)
- TPE
- SMAC
- 基于梯度的方法
- 强化学习
- 迁移学习
-
性能评估策略
NAS的目标通常是为了找到能够在待预测的新数据上实现高预测性能的神经网络结构。性能评估是最简单的选择是在数据集上进行标准的模型训练和模型验证,但计算成本很高,并且限制了可以探索的网络结构的数量。 因此,最近的许多研究都集中在开发降低这些性能评估成本的方法上。