4、神经架构搜索(NAS)入门:NAS的定义、搜索空间、搜索策略与评估策略
在Edge AI模型架构搜索(如TinyNAS)的完整技术栈中,神经架构搜索(Neural Architecture Search, NAS)是核心引擎。NAS并非单一算法,而是一套自动化设计神经网络拓扑结构的方法论。它通过定义搜索空间、选择搜索策略、设计评估策略三个核心环节,替代人工试错式的网络设计。对于边缘计算场景,NAS的价值在于能够在功耗、延迟、内存占用等硬约束下,自动找到满足精度要求的轻量化模型。本章将系统拆解NAS的四大支柱:定义、搜索空间、搜索策略与评估策略,并揭示它们如何在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的研究重点在于设计紧凑的搜索空间、高效的搜索算法和低成本的评估方法。
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 搜索策略:如何高效探索架构空间
搜索策略是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维)且评估成本高的场景,但在高维离散空间中表现不佳。
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采用“查找表+实测校准”的方式:预先在目标硬件上测量所有候选操作的延迟和内存占用,建立查找表;在搜索过程中,通过查表累加预测整个网络的延迟。对于关键候选架构,再进行一次真实硬件测量以校准查找表。
背景:某智能传感器项目需要部署一个关键词唤醒模型,目标硬件为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在搜索过程中会模拟量化误差,将量化损失作为惩罚项。
1. 先对目标硬件做算子基准测试,建立延迟/内存查找表。
2. 设计紧凑的搜索空间,包含硬件友好的操作(如深度可分离卷积、通道数缩放)。
3. 使用进化算法或随机搜索,配合权重共享超网络进行快速评估。
4. 对Top-K候选架构进行完整训练和硬件实测,选择最终模型。
5. 部署前进行量化感知微调,确保实际部署精度达标。