神经架构搜索NAS的三大策略
NAS自动搜索最优网络架构。请解释基于进化算法、强化学习和可微分(DARTS)三大NAS范式的核心思想、优缺点和代表性算法。
回答
我还是少年
NAS(Neural Architecture Search)旨在自动发现超越人工设计的网络架构,涵盖了三种主要范式。
1. 基于进化算法的NAS(Evolution-based NAS):
核心思想:将网络架构视为个体,使用进化操作(变异、交叉、选择)在架构空间中演化。
代表性算法——AmoebaNet(进化):
- 种群维护N个架构个体。
- 每轮:选择最优个体进行变异(添加/删除层、修改通道数等)。
- 训练变异后的子代并评估验证精度。
- 将子代(或淘汰最差者)加入种群。
- 使用Age-Regularization防止早熟收敛。
优缺点:
- 优点:搜索空间灵活(可搜索任意拓扑结构),全局搜索能力强。
- 缺点:计算代价极大(需训练成千上万个网络,数万GPU时)。
2. 基于强化学习的NAS(RL-based NAS):
核心思想:使用RNN/LSTM作为控制器(Controller)生成架构描述,通过策略梯度更新控制器参数。
代表性算法——NASNet(Zoph & Le, 2017):
- 控制器RNN逐个预测架构的模块类型、滤波器大小、连接方式。
- 训练子网络并评估精度作为奖励信号。
- 使用REINFORCE更新控制器参数。
- 搜索Cell结构(Normal Cell + Reduction Cell),然后堆叠。
优缺点:
- 优点:架构表示为序列,适合RNN生成。
- 缺点:需要大量计算(数千GPU时),搜索效率低。
3. 可微分NAS(Differentiable NAS)——DARTS:
核心思想:将架构搜索转化为连续优化问题,使用梯度下降优化架构参数。
DARTS(Liu et al., 2019):
- 使用软选择(Softmax加权)替代离散的架构选择:
ō(i,j)(x) = Σ_{o∈O} exp(α_o^{(i,j)})/Σ_{o'} exp(α_{o'}^{(i,j)})·o(x)
- O是候选算子集合(3×3卷积、跳过连接、池化等)。
- α_o^{(i,j)}是架构参数,连续可微。
- 双层优化(Bi-level Optimization):
- 内层:固定α,优化网络权重w。
- 外层:固定w,优化架构参数α(使用验证集损失)。
- 最终:用argmax离散化α,得到确定的离散架构。
优缺点:
- 优点:搜索效率极高(单GPU 1-4天可达SOTA)。
- 缺点:
- 内存开销大(需维持所有候选算子)。
- 跳过连接容易占据主导(Skip Connection Dominance)。
- 离散化后性能可能突然下降。
总结对比: | 方法 | 搜索效率 | 计算成本 | 架构质量 | 实现难度 | |------|---------|---------|---------|---------| | 进化NAS | 低 | 极高 | 高 | 中 | | RL NAS | 低 | 极高 | 高 | 高 | | DARTS | 高 | 低 | 中 | 中 |
趋势:可微分NAS(如DARTS/DARTS+/PC-DARTS)在效率上占据优势,但进化NAS(如Regularized Evolution)在最终精度上仍保持竞争力。最新趋势是与Transformer架构搜索(NAS for Transformer/ViT)和One-shot NAS结合。