4、神经架构搜索(NAS)入门:NAS的定义、搜索空间、搜索策略与评估策略

在Edge AI模型架构搜索(如TinyNAS)的完整技术栈中,神经架构搜索(Neural Architecture Search, NAS)是核心引擎。NAS并非单一算法,而是一套自动化设计神经网络拓扑结构的方法论。它通过定义搜索空间、选择搜索策略、设计评估策略三个核心环节,替代人工试错式的网络设计。对于边缘计算场景,NAS的价值在于能够在功耗、延迟、内存占用等硬约束下,自动找到满足精度要求的轻量化模型。本章将系统拆解NAS的四大支柱:定义、搜索空间、搜索策略与评估策略,并揭示它们如何在TinyNAS这类硬件感知搜索工具中协同工作。

NAS核心框架:搜索空间 × 搜索策略 × 评估策略 搜索空间 定义候选架构集合 · 链式/跳连结构 · 卷积核尺寸/通道数 · 深度可分离卷积/分组 · 硬件约束(延迟/内存) 搜索策略 如何在空间中探索 · 随机搜索/网格搜索 · 贝叶斯优化 · 进化算法(种群迭代) · 强化学习(控制器) 评估策略 如何快速评估候选 · 权重共享(One-shot) · 早停/学习率预热 · 代理指标(延迟/FLOPs) · 硬件在环测量 输出:最优架构 + 硬件配置 精度/延迟/功耗/内存 多目标权衡 部署到边缘设备(MCU/DSP/NPU) 迭代反馈(硬件延迟/精度回报) TinyNAS将硬件延迟/内存作为搜索空间约束,通过进化+权重共享实现高效搜索

上图展示了NAS的闭环工作流程。搜索空间定义了“可选的架构有哪些”,搜索策略决定了“如何高效地探索这个空间”,而评估策略则回答“如何快速判断一个候选架构的好坏”。三者相互耦合:搜索空间过大导致搜索困难,评估过于粗糙导致排名失真,搜索策略不当则陷入局部最优。在TinyNAS中,这三者被统一到硬件感知的框架下,使得搜索出的模型可以直接部署到特定芯片上。

4.1 NAS的定义与核心问题

NAS(Neural Architecture Search)是一种自动化设计神经网络结构的技术。传统的人工设计(如ResNet、MobileNet)依赖专家经验,耗时且难以针对特定硬件优化。NAS将网络设计视为一个优化问题:在给定的搜索空间\(\mathcal{A}\)中,寻找一个架构\(a \in \mathcal{A}\),使得在目标数据集上的验证精度\(Acc(a)\)最高,同时满足硬件约束(如延迟\(Lat(a) \le T_{max}\)、内存\(Mem(a) \le M_{max}\))。数学上可表达为多目标优化:

maximize: Acc(a)  
subject to: Lat(a) ≤ T_max, Mem(a) ≤ M_max, Power(a) ≤ P_max

NAS的核心挑战在于“搜索空间巨大”与“评估成本高昂”之间的矛盾。例如,一个包含20个决策层的搜索空间,每层有10种候选操作,则总组合数高达\(10^{20}\),穷举完全不可行。因此,NAS的研究重点在于设计紧凑的搜索空间、高效的搜索算法和低成本的评估方法。

关键理解:NAS不是“自动调参”,而是“自动设计网络拓扑”。它输出的是一系列层操作(卷积、池化、全连接等)及其连接方式,而非简单的学习率或权重衰减系数。在Edge AI场景中,NAS还必须将硬件延迟、内存占用、量化精度损失等纳入优化目标,这正是TinyNAS区别于通用NAS的核心。

4.2 搜索空间:定义候选架构的“设计空间”

搜索空间是NAS的“棋盘”,它决定了算法能探索到的架构范围。一个设计良好的搜索空间应满足:紧凑性(避免冗余搜索)、表达性(包含足够多的优秀架构)、硬件友好性(支持延迟/内存预测)。

4.2.1 搜索空间的粒度与类型

  • 宏观搜索(Macro Search):搜索整个网络的深度、宽度、连接方式。例如,是否使用残差连接、每层通道数倍数。代表工作:NASNet(搜索Cell结构)。
  • 微观搜索(Micro Search):固定网络骨架,搜索每个Cell内部的操作。例如,Cell内是3×3卷积还是5×5深度可分离卷积。TinyNAS常用此方式,因为Cell结构易于在硬件上复用。
  • 混合搜索(Hybrid):同时搜索Cell结构和网络级配置(如分辨率、深度系数)。MnasNet和TinyNAS均采用此方式,将输入分辨率、通道数、层数作为可搜索维度。

4.2.2 硬件感知的搜索空间设计

在Edge AI中,搜索空间必须显式包含硬件约束。例如,对于Cortex-M4内核的MCU,不支持浮点运算,则搜索空间应排除需要FP32的层;对于NPU,应优先选择深度可分离卷积和逐点卷积,因为其硬件加速效率高。TinyNAS的搜索空间设计遵循以下原则:

搜索维度典型候选值硬件影响
卷积核尺寸3×3, 5×5, 7×7大核增加计算量,但可能减少层数
通道数倍数0.5×, 0.75×, 1.0×, 1.25×直接影响内存带宽和计算量
深度(层数)4~12层延迟与内存占用非线性增长
输入分辨率96×96, 128×128, 160×160分辨率平方级影响计算量
操作类型标准卷积、深度可分离、池化、恒等映射不同操作在硬件上的效率差异巨大
实战建议:在定义搜索空间时,先对目标硬件进行“算子基准测试”。例如,在树莓派4上测出3×3卷积的延迟是5×5的1.7倍,在Jetson Nano上可能只有1.2倍。将这些实测数据作为搜索空间的约束条件,能显著减少无效搜索。

4.3 搜索策略:如何高效探索架构空间

搜索策略是NAS的“导航仪”。它决定了从搜索空间中采样候选架构的顺序和方式。主流方法分为三类:进化算法、强化学习和梯度/代理优化。在TinyNAS中,进化算法因其并行性和对非连续目标的适应性而成为首选。

4.3.1 进化算法(Evolutionary Algorithm)

进化算法模拟自然选择过程:初始化一个种群(随机架构),通过变异(修改某层操作)、交叉(组合两个架构的片段)产生后代,根据适应度(精度+硬件惩罚项)选择优秀个体进入下一代。其优势在于:

  • 无需梯度信息,可处理非可微的硬件延迟目标。
  • 天然支持并行评估,适合多卡或多设备集群。
  • 能跳出局部最优(通过变异保持多样性)。
# 伪代码:TinyNAS中的进化搜索
population = init_random_archs(pop_size=50)
for gen in range(100):
    # 评估适应度(精度 + 硬件延迟惩罚)
    for arch in population:
        acc = train_and_eval(arch)  # 使用权重共享快速评估
        lat = predict_latency(arch) # 硬件查找表或测量
        fitness = acc - α * max(0, lat - T_max)
    # 选择、交叉、变异
    parents = select_top_k(population, k=10)
    offspring = crossover_and_mutate(parents, mutation_rate=0.2)
    population = offspring + random_new_archs(10)

4.3.2 强化学习(Reinforcement Learning)

强化学习使用一个RNN控制器,逐步生成网络描述(如“第1层用3×3卷积,通道数64”),然后根据生成的网络在验证集上的精度作为奖励信号,通过策略梯度更新控制器。虽然效果强大,但计算成本极高(通常需要数千GPU小时),不适合资源受限的Edge AI团队。

4.3.3 随机搜索与贝叶斯优化

随机搜索是基线方法,简单但效率低。贝叶斯优化通过高斯过程建模精度与架构超参数的关系,用采集函数(如EI)选择下一个采样点。它适合搜索空间较小(<100维)且评估成本高的场景,但在高维离散空间中表现不佳。

常见误区:不要盲目追求复杂的搜索策略。研究表明,在搜索空间设计合理的前提下,随机搜索配合权重共享可以达到进化算法80%以上的效果,但计算成本降低一个数量级。对于Edge AI项目,建议先用随机搜索跑通流程,再逐步引入进化算法。

4.4 评估策略:低成本预测候选架构的性能

评估策略是NAS的“裁判”。如果每个候选架构都从头训练到收敛(如250个epoch),则搜索1000个架构需要250,000个epoch,完全不可行。因此,NAS必须采用近似评估方法。

4.4.1 权重共享(Weight Sharing)

权重共享(又称One-shot NAS)是当前最主流的方法。它训练一个“超网络”(SuperNet),该网络包含搜索空间中所有可能的操作和连接。所有候选架构都从超网络中继承权重,只需微调少量参数即可评估。例如,在TinyNAS中,超网络包含所有候选卷积核尺寸和通道数的组合,训练一次后,每个子架构只需前向传播一次即可得到精度估计。

评估方法训练成本精度相关性适用场景
从头训练(Full Training)极高(每个架构250 epoch)最准确最终验证,不用于搜索过程
权重共享(One-shot)低(超网络训练1次)中等(排名可能偏差)搜索过程中的快速筛选
早停(Early Stopping)低(训练10-20 epoch)中等小规模搜索空间
代理指标(FLOPs/延迟)几乎为零低(仅反映计算量)预筛选,排除明显超限架构

4.4.2 硬件在环评估(Hardware-in-the-Loop)

对于Edge AI,仅用FLOPs或参数量预测延迟往往不准确。例如,深度可分离卷积在GPU上效率高,但在某些MCU上可能因内存访问模式不佳而变慢。因此,TinyNAS采用“查找表+实测校准”的方式:预先在目标硬件上测量所有候选操作的延迟和内存占用,建立查找表;在搜索过程中,通过查表累加预测整个网络的延迟。对于关键候选架构,再进行一次真实硬件测量以校准查找表。

案例拆解:TinyNAS在Cortex-M7上的搜索流程
背景:某智能传感器项目需要部署一个关键词唤醒模型,目标硬件为STM32H743(Cortex-M7 @480MHz,1MB RAM)。约束:延迟≤50ms,内存≤300KB,精度≥90%。
初始现象:人工设计的MobileNetV2量化后精度91.2%,但延迟78ms,内存420KB,超限。
操作步骤:
1. 定义搜索空间:层数4-8,通道数倍数{0.5,0.75,1.0},卷积核{3×3,5×5},操作{标准卷积,深度可分离}。
2. 在STM32H743上测量所有候选操作的延迟和内存,建立查找表。
3. 使用进化算法搜索,种群大小30,迭代50代。每个候选架构通过权重共享的超网络评估精度,通过查找表预测延迟。
4. 对排名前5的架构,在真实硬件上测量延迟和内存,并微调训练20个epoch。
结果对比:搜索出的架构(TinyNAS-A)延迟41ms,内存285KB,精度90.5%。相比人工设计,延迟降低47%,内存降低32%,精度仅下降0.7%。
风险与代价:权重共享的精度排名与真实排名存在偏差,导致最终选择的架构可能不是全局最优。解决方案是增加“精英重训”环节:对搜索出的Top-10架构进行完整训练,再选择最优者。
复盘经验:硬件查找表的准确性至关重要。建议在搜索前对每个算子进行至少10次测量取平均值,并考虑温度、电压波动的影响。

4.5 常见误区与总结复盘

在NAS的工程实践中,以下误区需要特别警惕:

  • 误区一:搜索空间越大越好。实际上,过大的搜索空间会导致搜索效率急剧下降,且权重共享的精度估计更不准确。建议从一个小而精的空间开始,逐步扩展。
  • 误区二:只关注精度,忽略硬件约束。在Edge AI中,一个精度高但延迟超标的模型毫无价值。必须将延迟、内存、功耗作为硬约束或惩罚项纳入适应度函数。
  • 误区三:权重共享的排名可以直接信任。研究表明,权重共享评估的精度与真实训练后的精度相关系数约为0.7-0.8。因此,搜索结束后必须进行“重训排名”环节。
  • 误区四:忽略量化感知。边缘设备通常使用INT8量化。如果搜索时只考虑FP32精度,量化后精度可能大幅下降。TinyNAS在搜索过程中会模拟量化误差,将量化损失作为惩罚项。
总结复盘:NAS的三大支柱——搜索空间、搜索策略、评估策略——是一个整体。在Edge AI场景下,建议遵循以下流程:
1. 先对目标硬件做算子基准测试,建立延迟/内存查找表。
2. 设计紧凑的搜索空间,包含硬件友好的操作(如深度可分离卷积、通道数缩放)。
3. 使用进化算法或随机搜索,配合权重共享超网络进行快速评估。
4. 对Top-K候选架构进行完整训练和硬件实测,选择最终模型。
5. 部署前进行量化感知微调,确保实际部署精度达标。