神经架构搜索入门:让算法自动设计神经网络
设计一个好用的神经网络,过去靠的是研究员的经验、直觉和大量试错:卷积核多大、网络多深、通道数怎么排,往往要反复调很多轮。神经架构搜索(Neural Architecture Search,简称 NAS)想做的一件事很直接——把「设计网络结构」本身变成一个可由机器自动求解的优化问题。本文系统讲清 NAS 的三大要素、几条经典方法路线,以及它和手工设计、缩放定律之间的关系与边界。
一、NAS 到底在搜什么
抽象地看,NAS 是一个在「结构空间」上做优化的过程。给定搜索空间 A(所有可能的网络结构集合)、一个评价函数(通常在某个任务上用准确率等指标衡量),以及一个训练资源的预算,NAS 的目标是找到一个结构 a*,使它在目标任务上的性能最优:
a* = argmax_{a ∈ A} Performance(a, w_a*)
w_a* = argmin_w Loss_train(a, w)
这里 w_a* 是结构 a 对应的权重。最朴素的思路是:每试一种结构,就从头训练一遍、再测精度,然后换下一种。问题立刻出现——搜索空间 A 往往大到天文数字(比如 10^18 量级),逐一训练根本不可行。于是 NAS 的研究主线,就围绕三件事展开:搜索空间怎么定义、用什么策略在空间中找、以及如何把「评估一个结构好快」这件事加速。
二、NAS 三大要素
1. 搜索空间(Search Space)
搜索空间决定了「能设计出什么样的网络」,也是搜索效率的上限。常见几种形态:
- 链式结构(chain-structured):层一层叠起来,每层选操作类型(卷积、池化等)和超参数。表达力有限,但搜索最简单。
- 多分支 / 单元(cell-based)结构:这是 NASNet 之后被广为采用的思路。先搜一个小的「单元」(cell),再把单元像积木一样堆叠成完整网络。由于单元规模小、候选操作固定,搜索空间被压缩了几个数量级,且搜出来的单元还能迁移到不同数据集和算力上去。
- 层次化 / 弹性结构:既搜微观操作,也搜宏观连接与深度,代表如 Once-for-All 的弹性网络。
搜索空间设计的核心权衡是:空间越大越可能搜到好结构,但搜索越难、越慢。工程上常用「人为先验 + 自动搜索」结合,把明显不合理的结构先排除掉。
2. 搜索策略(Search Strategy)
搜索策略负责「怎么在空间中找最优」。主流有三类:
- 强化学习(RL):把结构生成看成 agent 的「动作序列」,用策略梯度(如 REINFORCE)根据验证集奖励更新。NASNet、ENAS 都属此类。优点是框架通用,缺点是 RL 训练本身不稳定、样本效率低。
- 进化算法(EA):维护一个结构种群,靠「变异 + 选择」迭代,适合并行。AmoebaNet 是典型代表。
- 可微搜索(Differentiable NAS):把离散的结构选择松弛成连续权重,让结构和权重可以端到端用梯度一起优化。DARTS 是开山之作,把搜索成本从几千 GPU 小时压到单卡几天。
3. 性能评估加速(Performance Estimation)
这是 NAS 的「成本命门」。如果不加速,每个候选都要完整训练,搜索几乎不可行。常用手段:
- 权重共享(Weight Sharing):让不同结构共享同一套底层权重,避免每个结构都从零训练。ENAS 是代表。
- 低训练预算代理(Proxy):在小数据集(如 CIFAR)上搜、再迁移到大任务(如 ImageNet);或用更少 epoch、更窄通道做近似评估。
- 早停(Early Stopping):对明显差的结构在训练初期就剪掉(如多保真度_bandit 方法 Hyperband)。
- 单次超网络(One-shot):先训好一个覆盖所有子结构的「超网络」,再从中采样评估,Once-for-All 走的就是这条路。
三、经典方法逐一看
NASNet:用单元把搜索空间压下来
NASNet(Zoph 等,arXiv:1707.07012,已核验)的核心贡献是 cell-based 搜索:在 CIFAR-10 上自动搜出 Normal Cell 和 Reduction Cell 两种单元,再按人工设定的规模堆叠成大网络。它用 RL 控制器逐节点决定「选哪两个前驱、各自用什么操作(如 3x3 可分离卷积、最大池化)」。搜出的 NASNet 在 ImageNet 上超过了当时多数手工结构,且同一套 cell 迁移到其他视觉任务也有效。代价是搜索仍要几百 GPU 天,凸显了评估加速的重要性。
ENAS:权重共享大幅降费
ENAS(Pham 等,arXiv:1802.03268,已核验)发现:搜索空间里不同结构其实共享大量子图,没必要各自训练。它只训练一个大的「共享 LSTM 控制器 + 共享权重图」,每个候选结构都从这张共享图里取子图、复用已训练权重做评估。结果是搜索成本从 NASNet 的上千 GPU 小时降到单卡一天以内,且精度损失很小。ENAS 也第一次把 NAS 拉进普通实验室可承受的范围。
DARTS:把搜索变成可微优化
前面两条路线都要「采样结构、评估、再更新策略」,本质是离散的黑盒搜索。DARTS(Liu 等,arXiv:1806.09055,已核验)换了个思路:把每个节点的候选操作集合用 softmax 混合成连续表达,混合权重(架构参数 α)和结构权重(网络权重 w)放进同一个目标里,用梯度交替优化:
o_output = Σ_i ( exp(α_i) / Σ_j exp(α_j) ) · o_i(x)
搜索结束后,保留每个边上权重最大的操作,得到离散结构。DARTS 把搜索变成「几百个 epoch 的单卡训练」,且性能可与 RL/EA 路线媲美。它的代价是内存占用高(要同时存所有候选操作),且后续研究指出它存在「skip-connect 偏好」等优化陷阱,催生了 ProxylessNAS、RobustDARTS 等改进。
Once-for-All:一个超网络服务所有子结构
Once-for-All(OFA,Cai 等,arXiv:1908.09791,已核验)针对「不同部署场景要不同结构」的痛点:手机要小模型、服务器要大模型,传统 NAS 对每个约束重搜一遍太贵。OFA 先训练一个弹性超网络,支持不同深度、宽度、卷积核大小、分辨率;再用「渐进收缩(Progressive Shrinking)」让各子结构都得到充分训练。部署时只要从超网络里采样出满足约束的子网络,无需重新训练。它把「搜结构」变成「从已训好的超网络里取结构」,在 ImageNet 上以远比独立搜索低的成本覆盖了大量设备规格。
四、与手工设计、缩放定律的关系
NAS 不是要取代手工设计,而是把手工设计中「重复、可枚举」的部分自动化。二者其实互补:
- 手工设计提供先验与归纳偏置(如卷积的局部性、残差连接),这些先验被写进 NAS 的搜索空间和候选操作里;
- NAS 在给定先验下做「局部最优结构」的精细搜索,常能发现人想不到的连接方式。
至于缩放定律(Scaling Law):它揭示「在数据、参数量、算力三者间按幂律扩展,损失会可预测地下降」,更多回答「模型该做多大」,而 NAS 回答「结构该长什么样」。实践中二者常常结合——先用 NAS 定下结构「模板」,再按缩放定律决定具体规模。需要留意的是,NAS 搜出的结构在小 proxy 任务上的优劣,未必在大任务上完全成立,迁移时的「排名相关性」是工程落地的关键考量(具体迁移收益数值待核实)。
五、适用场景与局限
适合用 NAS 的情形:
- 你面对的是一类固定、可重复的任务(如某类视觉检测、端侧分类),值得为它一次性投入搜索成本;
- 有清晰的部署约束(算力、时延、内存),需要针对约束定制结构,此时 One-shot / OFA 类方法性价比高;
- 手工设计的先验已经成熟,只需在已有候选操作上做组合优化。
NAS 的局限同样明显:
- 搜索本身有成本,小团队、快迭代场景往往「直接用手工结构 + 缩放」更快;
- 搜索结果对搜索空间设计高度敏感,空间定错了就搜不出好东西;
- 在 Transformer 等结构相对统一、且缩放定律已足够指导的大模型时代,NAS 在 NLP 预训练上的边际收益不如视觉时代显著(具体对比数据待核实);
- 可复现性与稳定性问题(如 DARTS 的优化陷阱)要求使用者具备一定工程经验。
整体而言,NAS 的价值不在于「全自动替代人类」,而在于把架构工程中可被机械化、可枚举的决策交给搜索,让人聚焦在更高层的空间设计与问题定义上。
小结
神经架构搜索把「设计网络结构」变成可优化的搜索问题,由搜索空间、搜索策略、性能评估加速三大要素构成。NASNet 用 cell-based 思路压缩空间,ENAS 用权重共享大幅降费,DARTS 把搜索可微化、用梯度联合优化,Once-for-All 以弹性超网络一次性覆盖多种部署约束。NAS 与手工设计互补、可与缩放定律结合,最适合「固定任务 + 明确约束」的工业化场景,但在快迭代、结构已统一的领域边际收益有限。
参考与延伸阅读
- Zoph B, Le Q V. Neural Architecture Search with Reinforcement Learning. arXiv:1707.07012(已核验)
- Pham H, et al. Efficient Neural Architecture Search via Parameters Sharing (ENAS). arXiv:1802.03268(已核验)
- Liu H, Simonyan K, Yang Y. DARTS: Differentiable Architecture Search. arXiv:1806.09055(已核验)
- Cai H, et al. Once-for-All: Train One Network and Specialize for Efficient Deployment. arXiv:1908.09791(已核验)
- Elsken T, et al. Neural Architecture Search: A Survey. arXiv:1808.05377(待核实具体版本)
- 站点内相关教程:Transformer 架构详解、深度学习基础、生成式 AI 全景