神经网络架构搜索(NAS)概述:如何让AI自动设计AI模型?
点击 “AladdinEdu,同学们用得起的【H卡】算力平台”,注册即送-H卡级别算力,沉浸式云原生的集成开发环境,80G大显存多卡并行,按量弹性计费,教育用户更享超低价。
引言:从手工雕刻到自动铸造——AI设计的范式转移
在深度学习的浪潮中,神经网络的架构设计始终是一门融合了直觉、经验和大量试错的“艺术”。从LeNet到AlexNet,从VGG到ResNet,再到Transformer,每一个里程碑式的模型都凝结了研究者们无数的心血与智慧。这个过程被形象地称为“网络工程”(Network Engineering),其核心是人类专家依据特定任务和计算约束,通过反复迭代和实验,手工设计出高性能的模型架构。
然而,这种模式正面临巨大的挑战:
- 问题复杂度爆炸:搜索空间极其庞大。对于一个层数、操作类型(卷积、池化等)、通道数、连接方式都可变的网络,可能的架构数量轻松超过 102010^{20}1020,远超人力所能及。
- 计算成本高昂:评估一个候选架构的性能需要从头开始训练它,即便在CIFAR-10这样的小数据集上,训练一个模型也需要数GPU小时。暴力搜索如同大海捞针。
- 专业知识壁垒:最优的架构往往反直觉,依赖专家的先验知识可能会限制创新,错过更优的“未知”设计。
我们能否将设计模型的任务交给机器本身?让AI来自动化地设计AI模型?这正是神经网络架构搜索(Neural Architecture Search, NAS) 的核心目标。
NAS旨在通过自动化算法,在给定的搜索空间内,寻找在某个特定任务(如ImageNet分类)上性能最优、效率最高的神经网络架构。它代表了AI领域从“手工雕刻”到“自动铸造”的范式转移,是迈向自动化机器学习(AutoML) 的关键一步。
本文将深入解析NAS的主流方法,重点阐述DARTS、One-Shot NAS等代表性算法的原理与思想,并客观分析其局限性,为读者描绘出一幅NAS技术发展的清晰图景。
第一章:NAS的基本框架与核心要素
任何一个NAS系统都包含三个核心组成部分:
-
搜索空间(Search Space):
定义了所有可能候选架构的集合。它决定了算法探索的范围和方向。常见的搜索空间包括:- 链式结构:逐层连接,只搜索每层的操作类型和参数。
- 多分支结构:如Cell-based搜索空间(在NASNet中提出)。搜索一个称为“Cell”的微型结构(包含Normal Cell和Reduction Cell),然后通过堆叠相同的Cell来构建最终网络。这大大缩小了搜索空间,且找到了的架构具有良好的可迁移性。
- 基于注意力的搜索空间:搜索Transformer中注意力机制的类型、头数等。
- 层次化空间:同时搜索宏观结构(如块的数量)和微观结构(如Cell内的操作)。
-
搜索策略(Search Strategy):
这是NAS的“大脑”,负责决定如何探索搜索空间。其目标是高效地找到性能优异的架构。经典策略包括:- 强化学习(RL):早期开创性工作(如Zoph et al., 2017)使用RNN作为控制器(Controller)生成子网络(Child Network)的描述,然后训练子网络并将其验证集准确率作为奖励信号,通过策略梯度(如REINFORCE)更新控制器。
- 进化算法(EA):将网络架构编码为“基因”,通过选择、交叉、变异等操作演化出更好的架构种群。
- 贝叶斯优化(BO):构建一个代理模型(如高斯过程)来预测未知架构的性能,从而指导搜索向高性能区域进行。
- 基于梯度的可微分搜索:这是本文的重点(如DARTS),它将离散的搜索空间连续化,从而可以通过梯度下降高效搜索。
- One-Shot / 权重共享:同样是本文重点,它通过训练一个包含所有子路径的“超网”来避免重复训练。
-
性能评估策略(Performance Estimation Strategy):
这是NAS的“评估师”,负责评估搜索策略提出的候选架构的性能。最直接但最昂贵的方式是从头训练至收敛。但其高昂的成本迫使研究者寻找更高效的替代方案:- 低保真度评估:在子数据集(如CIFAR-10)、更少的训练轮数(Epoch)、更小的模型(Less Channels)上训练。
- 学习曲线外推:根据模型训练初期的性能预测其最终性能。
- 权重共享/One-Shot:所有子架构共享超网的权重,无需单独训练,评估速度极快。
早期的RL和EA方法虽然证明了NAS的可行性,但其计算成本令人咋舌(如Zoph et al., 2017的工作需要2000 GPU days)。因此,后续研究的核心焦点都集中在如何大幅降低性能评估的成本上。可微分搜索(DARTS)和权重共享(One-Shot)正是两大主流方向。
第二章:可微分搜索的里程碑——DARTS
DARTS(Differentiable ARchiTecture Search)是2019年ICLR上发表的工作,它彻底改变了NAS的范式,将离散的架构搜索问题转变为一个可微分的优化问题,使得搜索效率提升了数个数量级。
2.1 核心思想:连续松弛与双优化
DARTS的核心创新在于对搜索空间进行了连续松弛。
我们以搜索一个Cell为例。Cell可以看作是一个由N个节点组成的有向无环图(DAG),每个节点是一个特征图,每条边 (i,j)(i, j)(i,j) 代表从节点 iii 到节点 jjj 的一个潜在操作(如3x3卷积、5x5深度可分离卷积、最大池化等)。
- 离散选择:在离散空间中,每条边 (i,j)(i, j)(i,j) 只能选择一个具体的操作 ooo。
- 连续松弛:DARTS将每条边的选择“软化”。它让每条边 (i,j)(i, j)(i,j) 不再是单一操作,而是所有候选操作的混合。每条边的输出变成了所有操作输出的加权和:
oˉ(i,j)(x)=∑o∈Oαo(i,j)⋅o(x)\bar{o}^{(i,j)}(x) = \sum_{o \in \mathcal{O}} \alpha_o^{(i,j)} \cdot o(x) oˉ(i,j)(x)=o∈O∑αo(i,j)⋅o(x)
其中,α(i,j)\alpha^{(i,j)}α(i,j) 是一个与操作集合 O\mathcal{O}O 大小相同的架构权重向量,其分量 αo(i,j)\alpha_o^{(i,j)}αo(i,j) 可以理解为操作 ooo 在边 (i,j)(i, j)(i,j) 上的“重要性”或“概率”。α\alphaα 就是我们需要搜索的架构参数。
至此,搜索空间从一个离散的集合变成了一个连续的、由 α\alphaα 参数化的空间。整个超网(Supernet)的结构也因此确定了,并且是可微的。
2.2 优化过程: bilevel 优化
搜索的目标是找到一组架构参数 α∗\alpha^*α∗,使得由其确定的最佳架构在验证集上表现最好。同时,超网中每个操作本身也有其权重参数 www(如卷积核的权重)。
这自然形成了一个bilevel 优化问题:
- 内层优化:在训练集上优化网络权重 www。
- 外层优化:在验证集上优化架构参数 α\alphaα。
minαLval(w∗(α),α)s.t.w∗(α)=argminwLtrain(w,α)\begin{aligned} &\min_{\alpha} \quad \mathcal{L}_{val}(w^*(\alpha), \alpha) \\ &\text{s.t.} \quad w^*(\alpha) = \operatorname{argmin}_{w} \mathcal{L}_{train}(w, \alpha) \end{aligned} αminLval(w∗(α),α)s.t.w∗(α)=argminwLtrain(w,α)
DARTS采用了一种交替优化的近似策略来解这个复杂问题:
- 固定架构参数 α\alphaα,在训练集上朝梯度方向 ∇wLtrain(w,α)\nabla_w \mathcal{L}_{train}(w, \alpha)∇wLtrain(w,α) 更新网络权重 www。
- 固定网络权重 www,在验证集上朝梯度方向 ∇αLval(w,α)\nabla_{\alpha} \mathcal{L}_{val}(w, \alpha)∇αLval(w,α) 更新架构参数 α\alphaα。
通过这种交替迭代,架构参数 α\alphaα 和网络权重 www 共同进化。最终,搜索完成后,我们需要将连续的架构离散化:对于每条边 (i,j)(i, j)(i,j),只保留 αo(i,j)\alpha_o^{(i,j)}αo(i,j) 最大的那个操作,从而得到一个真正的、离散的、可用于最终训练和部署的架构。
2.3 DARTS的优势与颠覆性影响
- 高效:将搜索时间从上千GPU天缩短到1-4个GPU天(在CIFAR-10上),使得NAS技术在学术界和工业界得以普及。
- 简洁:无需复杂的控制器或进化算法,标准的梯度下降即可完成搜索。
- 开创性:它开创了“可微分NAS”这一全新的方向,催生了大量基于此的改进工作(如PC-DARTS, Fair DARTS, DARTS-等)。
第三章:权重共享的典范——One-Shot NAS
与DARTS同属高效NAS阵营的另一大流派是One-Shot NAS。其核心思想是权重共享。
3.1 核心思想:超网与路径采样
One-Shot NAS首先构建一个超网(One-Shot Model)。这个超网是一个庞大的图,它包含了搜索空间中所有可能的操作和连接。超网中的每条路径都对应着一个候选的子架构。
关键一步是:超网的所有子路径共享权重。也就是说,一个3x3卷积操作无论在哪个位置被哪个子架构使用,它都使用同一组卷积核权重。
搜索过程分为两个阶段:
- 训练超网:目标是优化超网中所有操作的共享权重 www。训练时,通过均匀随机采样一条子路径(即一个候选架构),仅训练该路径上的权重。通过大量次数的采样和训练,最终希望共享权重 www 能够收敛到一个较好的状态,使得每个子架构的性能都能被其共享权重下的性能所近似。
- 搜索架构:超网训练完成后,冻结其权重 www。搜索策略(如进化算法、随机搜索)会生成大量的候选架构。评估这些架构的性能时,无需再训练,只需要在验证集上做一次前向传播,记录其准确率即可。由于评估成本极低(仅需几秒钟),可以在极短时间内评估成千上万个架构。最终选择验证性能最好的那个架构。
3.2 代表性方法:ENAS & 更多
- ENAS(Efficient NAS):是One-Shot思想的先驱。它使用一个RNN控制器来采样子架构,并通过强化学习以验证准确率为奖励更新控制器。其权重共享机制大大缩短了搜索时间。
- Random Search with Weight Sharing:一些研究发现,在训练好的超网下,即使使用简单的随机搜索,也能找到非常好的架构。这说明了超网训练的质量远比搜索算法本身更重要。
3.3 One-Shot NAS的优势
- 极低的搜索成本:架构评估几乎零成本,搜索阶段的主要开销在于超网训练。
- 灵活性:搜索阶段可以与超网训练阶段解耦,可以使用任何搜索策略(EA, RS, BO等)。
- 可扩展性:易于扩展到更大的搜索空间。
第四章:光鲜背后的阴影——主流方法的局限性分析
尽管DARTS和One-Shot NAS取得了巨大成功,但它们都存在着固有的、深刻的局限性。
4.1 DARTS的局限性
-
离散化误差(Discretization Gap):
这是DARTS最根本的问题。搜索是在连续松弛的空间中进行的,而最终得到的却是离散的架构。最优的连续架构 α∗\alpha^*α∗ 与离散化后的架构在性能上可能存在显著差异。搜索时表现最好的连续架构,其对应的离散版本可能表现平平。 -
性能崩塌(Performance Collapse):
在DARTS的后续研究中,人们发现其搜索结果存在模式坍塌的倾向:网络会倾向于选择跳跃连接(Skip-Connect) 等参数量少、计算简单的操作。原因是:- 跳跃连接的“不公平优势”:跳跃连接提供了无损的梯度通路,在搜索初期能更快地降低损失,从而获得更大的架构权重 α\alphaα。
- Double优化近似不准确:交替优化并非真正的bilevel优化,www 和 α\alphaα 的优化步调不一致可能导致优化陷入糟糕的局部最优点。
-
内存消耗巨大:
需要同时存储整个超网的所有候选操作和它们的中间计算结果,内存开销与候选操作的数量成正比,限制了搜索空间的规模。 -
泛化性存疑:
在CIFAR-10上搜索到的架构,在ImageNet上表现不一定最优。这表明搜索过程对数据集和超参数(如学习率)较为敏感。
4.2 One-Shot NAS的局限性
-
排名一致性假设(Ranking Consistency Problem):
这是One-Shot方法的“阿喀琉斯之踵”。其有效性依赖于一个关键假设:在共享权重下,子架构的性能排名与其从头训练后的性能排名高度一致。然而,这个假设在现实中常常被打破。- “马太效应”:操作权重在超网训练阶段被共享。高频被采样的操作(或架构)其权重更新得更充分,性能更好;而低频采样的操作则性能更差,这进一步导致其在搜索阶段被评估为“差生”,形成恶性循环。
- 协同适应(Co-adaptation):超网的权重是所有架构折衷的结果。一个本身潜力很好的架构,可能因为其独有的操作在超网中未被充分训练而得到低分;反之,一个平庸的架构可能因为搭了“顺风车”(其路径上的操作被其他架构训练得很好)而获得高分。
-
超网训练不稳定:
超网的训练本身就是一项挑战。由于需要不断切换不同的子路径,训练过程比训练一个固定网络更加不稳定,难以收敛。 -
搜索空间设计偏差:
无论是DARTS还是One-Shot,其性能上限极大程度受限于人为设计的搜索空间。如果最优架构不在预设的搜索空间内,那么再好的搜索算法也无能为力。这本质上只是将“架构设计”的先验知识从“微观”转移到了“宏观”(搜索空间的设计)。
第五章:超越与展望:NAS的未来之路
尽管面临挑战,NAS的研究仍在快速演进,不断涌现出新方法来克服上述局限性:
-
针对DARTS的改进:出现了许多DARTS的变体,如:
- DARTS-:通过提前截断跳跃连接的操作,来缓解性能崩塌。
- PC-DARTS:通过部分通道连接来降低内存消耗和加速搜索。
- RobustDARTS:通过分析Hessian迹来诊断和避免性能崩塌。
-
针对One-Shot的改进:
- FairNAS、SPOS:通过采用严格的公平采样策略,确保每个操作和子路径在超网训练阶段被采样的概率完全相同,以缓解排名不一致问题。
- 渐进式收缩(Progressive Shrinking):如BigNAS,先在超网中训练最大的模型,然后逐步收缩出子模型,证明了子模型无需再训练也能达到良好性能。
-
新的范式:
- 预测器-based NAS:训练一个性能预测器,输入架构的描述,输出其预测的性能。搜索时直接查询预测器,完全摆脱了权重共享的假设。
- 零成本(Zero-Cost)NAS:使用一种无需训练的超快代理指标(如梯度信息、BN层尺度)来估计架构性能,在几秒钟内完成搜索。
结论:自动化与人类智慧的协同进化
神经网络架构搜索(NAS)已经从一种计算奢侈的“黑科技”,发展成为AutoML工具箱中一项实用且强大的技术。DARTS和One-Shot NAS等方法通过可微分搜索和权重共享,极大地 democratized 了NAS,使其得以广泛应用。
然而,我们必须清醒地认识到,当前的NAS并非完美的“银弹”。它并未完全消除人类的作用,而是将人类的智慧从繁琐的调参和试错中解放出来,转移到了定义问题、设计搜索空间、制定评估准则等更高层次的任务上。
NAS的未来,不是取代人类专家,而是与人类专家形成协同进化的关系。人类引导搜索的方向,NAS则在人类划定的广阔空间内进行高效探索,发现那些反直觉却又无比精巧的设计。正如计算机辅助设计(CAD)没有取代建筑师,而是赋予了其更强大的创造能力一样,NAS正在成为AI研究者手中一支全新的“神笔”,帮助我们绘制出下一代更智能、更高效的AI模型的蓝图。这条路依然漫长,但充满无限可能。