第 2 章 · 搜索空间 章节摘要:搜索空间是 NAS 的"零件库",它界定了算法能探索的架构集合,直接决定搜索的性能上限与成本下限。本章从搜索空间的定义与重要性切入,接着把两种粒度讲透:宏观搜索空间(网络整体结构,链式/多分支/基于图)与微观搜索空间(Cell 内部结构,Normal Cell 与 Reduction Cell、节点/边/操作)。最后一节专讲编码方式——架构怎么表示成算法能操作的字符串、图、矩阵或 DSL。读完本章,你能判断一个候选架构"在不在搜索空间里",并设计出可被搜索算法消费的架构表示。
章节摘要:搜索空间是 NAS 的"零件库",它界定了算法能探索的架构集合,直接决定搜索的性能上限与成本下限。本章从搜索空间的定义与重要性切入,接着把两种粒度讲透:宏观搜索空间(网络整体结构,链式/多分支/基于图)与微观搜索空间(Cell 内部结构,Normal Cell 与 Reduction Cell、节点/边/操作)。最后一节专讲编码方式——架构怎么表示成算法能操作的字符串、图、矩阵或 DSL。读完本章,你能判断一个候选架构"在不在搜索空间里",并设计出可被搜索算法消费的架构表示。
搜索空间是 NAS 里最容易被低估的一环——它不像搜索策略那样有"进化 vs 梯度"的戏剧冲突,也不像评估策略那样直接决定预算,但它是最先出错、也最难补救的一环:空间错了,后面所有的搜索与评估都是白费。本教程把它放在第 2 章,正是因为在读后面的策略与评估之前,你需要先建立"空间视角"——看任何一篇 NAS 论文,第一眼应该落在它的搜索空间上(搜什么、操作有哪些、用哪种编码),而不是急着看它的性能数字。
阅读完本章,你应当能够:
金句:搜索空间画多大,NAS 的天花板就有多高——但天花板越高,够到它的代价也越大。
这张全景图有三个值得注意的层次。第一层是类型轴(左侧):全网络、细胞、预定义模块三种类型不是进化关系而是粒度关系——从"搜整网"到"搜一个可复用的 Cell"再到"在已有模块间做组合",粒度越来越细、空间越来越小、先验越来越重。第二层是粒度轴(中部):宏观与微观是同一空间的两种观察尺度,实操中常常同时使用(宏观定骨架、微观定 Cell)。第三层是接口轴(右侧):编码方式决定空间与算法的"通信协议",选错编码,后面的一切搜索策略都无法正常工作。读完全章后,试着把 NASNet、DARTS、GraphNAS 各自放回这张图的节点上——它们分别用哪种类型、哪个粒度、哪类编码,能对上号说明空间概念已经内化了。
形式化定义搜索空间为架构集合,讨论为什么它被称为 NAS 的"基石",以及表达力、搜索效率、先验知识三个设计原则。
讲网络级搜索:深度、宽度、连接模式、宏观模块、拓扑结构五个维度,链式/多分支/Cell/模块/图五种常见类型,各配代表方法。
深入 Cell 内部:节点、边、操作、控制流四个概念,NASNet 与 AmoebaNet 的 Block 设计、DARTS 的连续松弛设计,以及"设计一次、复用多次"的迁移优势。
架构怎么"说"给算法听:直接编码(定长/变长)、图编码、DSL 语法编码、嵌入编码,以及完备性、有效性、可区分性、可扩展性四条评估标准。
2.1 定义与原则(为什么重要) │ ├──► 2.2 宏观(网络整体:深度/宽度/拓扑) │ └──► 2.3 微观(Cell 内部:节点/边/操作) │ ▼ 2.4 编码(把上面的一切表示成算法可操作的数据)
先回答"搜索空间是什么、好空间长什么样",再分宏观、微观两条粒度线展开,最后用编码把两种粒度统一成可计算的形式——编码是把空间"塞进"搜索策略的前提。值得注意的是 2.2 与 2.3 不是二选一,而是同一空间的两种视角:真实项目里往往先定宏观骨架(几段、每段多深多宽),再在骨架内搜索 Cell 的微观结构——DARTS 就是"宏观堆叠固定 + 微观搜索内部"的典型。2.4 的编码则决定这套结构怎么喂给第 3 章的搜索算法:梯度方法要连续编码,进化方法要可交叉的编码,选错编码等于选错算法。
搜索空间是 NAS 里"最不性感却最决定成败"的一章。判断你是否掌握本章的标准很简单:给你一个具体任务(比如移动端图像分类),你能不能说清你会在什么粒度上搜索、操作集合放哪些操作、用哪种编码——并且能解释每个选择的理由。阅读时把 2.2 和 2.3 当成"设计工具箱",把 2.4 当成"算法接口层":先知道有什么工具,再知道怎么把工具交到算法手里。第 2.1 节的"基线检验"(空间必须包含已知强基线)是贯穿全章的设计守则。