015 《深度学习的神经架构搜索 (Neural Architecture Search - NAS) - 全面解析》


作者Lou Xiao, gemini创建时间2025-04-22 22:34:45更新时间2025-04-22 22:34:45

🌟🌟🌟本文由Gemini 2.5 Flash Preview 04-17生成,用来辅助学习。🌟🌟🌟

书籍大纲

▮▮ 1. 引言:为何需要神经架构搜索?
▮▮▮▮ 1.1 深度学习的演进与挑战
▮▮▮▮▮▮ 1.1.1 传统模型设计的局限性
▮▮▮▮▮▮ 1.1.2 模型复杂度与计算资源
▮▮▮▮ 1.2 什么是神经架构搜索 (NAS)?
▮▮▮▮▮▮ 1.2.1 NAS的定义与基本思想
▮▮▮▮▮▮ 1.2.2 NAS的关键优势
▮▮▮▮ 1.3 本书结构与内容概览
▮▮ 2. 神经架构搜索的核心组成
▮▮▮▮ 2.1 搜索空间 (Search Space)
▮▮▮▮▮▮ 2.1.1 整网结构搜索空间 (Whole Network Search Space)
▮▮▮▮▮▮ 2.1.2 基于单元的搜索空间 (Cell-based Search Space)
▮▮▮▮▮▮ 2.1.3 层级搜索空间 (Hierarchical Search Space)
▮▮▮▮▮▮ 2.1.4 搜索空间的设计权衡
▮▮▮▮ 2.2 搜索策略 (Search Strategy)
▮▮▮▮▮▮ 2.2.1 基于强化学习的搜索 (RL-based Search)
▮▮▮▮▮▮ 2.2.2 基于演化算法的搜索 (Evolutionary Algorithm-based Search)
▮▮▮▮▮▮ 2.2.3 基于梯度的搜索 (Gradient-based Search)
▮▮▮▮▮▮ 2.2.4 基于随机搜索与贝叶斯优化的搜索 (Random Search and Bayesian Optimization)
▮▮▮▮ 2.3 性能估计 (Performance Estimation)
▮▮▮▮▮▮ 2.3.1 从头训练 (Training from Scratch)
▮▮▮▮▮▮ 2.3.2 参数共享 (Parameter Sharing)
▮▮▮▮▮▮ 2.3.3 代理任务 (Proxy Tasks)
▮▮▮▮▮▮ 2.3.4 性能预测器 (Performance Predictors)
▮▮ 3. 经典与代表性NAS算法
▮▮▮▮ 3.1 基于强化学习的代表:NASNet
▮▮▮▮ 3.2 基于演化算法的代表:AmoebaNet
▮▮▮▮ 3.3 基于梯度搜索的代表:DARTS
▮▮▮▮ 3.4 基于参数共享的代表:ENAS
▮▮▮▮ 3.5 高效NAS方法:ProxylessNAS, Single Path One-Shot NAS等
▮▮ 4. 面向特定任务的NAS
▮▮▮▮ 4.1 图像分类 (Image Classification)
▮▮▮▮ 4.2 目标检测 (Object Detection)
▮▮▮▮ 4.3 语义分割 (Semantic Segmentation)
▮▮▮▮ 4.4 自然语言处理 (Natural Language Processing - NLP)
▮▮▮▮ 4.5 其他任务:语音、推荐系统等
▮▮ 5. 面向硬件约束的NAS
▮▮▮▮ 5.1 移动端与边缘设备上的挑战
▮▮▮▮ 5.2 考虑延迟和内存的搜索空间
▮▮▮▮ 5.3 多目标NAS (Multi-objective NAS)
▮▮▮▮ 5.4 硬件感知的NAS方法
▮▮ 6. 高效NAS技术与最新进展
▮▮▮▮ 6.1 超网与权重共享的深化研究
▮▮▮▮ 6.2 网络态射 (Network Morphism)
▮▮▮▮ 6.3 基于预测器的NAS (Predictor-based NAS)
▮▮▮▮ 6.4 零成本NAS (Zero-Cost NAS)
▮▮▮▮ 6.5 NAS与AutoML的集成
▮▮ 7. NAS的实践、工具与基准
▮▮▮▮ 7.1 实现NAS的考量
▮▮▮▮ 7.2 流行的NAS工具与框架
▮▮▮▮ 7.3 NAS基准数据集与搜索空间
▮▮▮▮ 7.4 NAS实验的复现性与评估
▮▮ 8. NAS的挑战与未来方向
▮▮▮▮ 8.1 计算成本与效率
▮▮▮▮ 8.2 搜索空间的泛化能力
▮▮▮▮ 8.3 理论理解与收敛性保证
▮▮▮▮ 8.4 多目标与约束优化
▮▮▮▮ 8.5 更广阔的自动化视野
▮▮ 附录A: 关键术语英汉对照与解释
▮▮ 附录B: 重要NAS论文列表
▮▮ 附录C: 常用的NAS开源库与资源


1. 引言:为何需要神经架构搜索?

欢迎来到本书的第一章。在这一章中,我们将一同探索神经架构搜索(Neural Architecture Search, NAS)的世界。深度学习(Deep Learning)在过去十多年间取得了举世瞩目的成就,彻底改变了计算机视觉(Computer Vision)、自然语言处理(Natural Language Processing, NLP)、语音识别(Speech Recognition)等众多领域。然而,这些突破性进展的背后,往往依赖于精心设计的神经网络(Neural Network)架构。设计出高性能的网络架构是一项极具挑战性的工作,需要深厚的领域知识、丰富的实践经验以及大量的反复试验。神经架构搜索正是应运而生,旨在自动化这一复杂且耗时的过程,为深度学习模型的开发提供一种全新的范式。本章将首先回顾深度学习的演进,探讨传统手动设计网络架构所面临的困境,然后正式定义神经架构搜索,阐述其核心理念与关键优势,最后概述本书的结构,为读者提供一个清晰的学习路径。

1.1 深度学习的演进与挑战

深度学习的兴起源于对多层感知机(Multi-layer Perceptron, MLP)的重新认识以及计算能力的飞跃。从最初的浅层网络到如今动辄数百层的深度模型,神经网络的结构变得越来越复杂,性能也越来越强大。

1.1.1 传统模型设计的局限性

在神经架构搜索出现之前,设计一个高性能的神经网络模型通常依赖于专家的经验和直觉。研究人员和工程师通过阅读最新的学术论文、分析现有模型的结构、进行大量的实验来逐步改进网络设计。

① 专家经验的依赖性:设计有效的网络需要对不同层类型(如卷积层 Convolutional Layer、循环层 Recurrent Layer、注意力层 Attention Layer)、激活函数(Activation Function)、连接方式(如跳跃连接 Skip Connection)、归一化技术(如批归一化 Batch Normalization)等有深入的理解,并知道如何将它们组合起来以解决特定问题。这使得模型设计成为一项高门槛的工作。
② 巨大的搜索空间:即使是对于一个特定任务,可能的网络结构组合也是天文数字。手动探索这个巨大的设计空间效率低下,往往只能在已知结构的变体中进行微调。
③ 试错成本高:每尝试一种新的架构,通常都需要在大型数据集上进行训练和评估,这个过程可能需要数小时、数天甚至数周,计算资源消耗巨大,且不保证能找到最优解。
④ 难以针对特定需求优化:传统方法难以系统地在性能(如准确率 Accuracy)与其他约束(如模型大小 Model Size、计算延迟 Latency、功耗 Power Consumption)之间进行权衡优化,特别是在需要部署到资源受限的设备(如移动端 Mobile Devices、嵌入式设备 Embedded Devices)时。

举例来说,ResNet [1] 的成功在于引入了残差连接(Residual Connection),有效解决了深层网络的梯度消失(Vanishing Gradient)问题。然而,发现这种连接方式以及确定其在网络中的具体应用位置和方式,很大程度上依赖于研究人员的洞察力和实验。再比如,设计一个用于图像识别(Image Recognition)的卷积神经网络(Convolutional Neural Network, CNN),你需要决定卷积核的大小、步长、通道数,池化层(Pooling Layer)的方式,层的堆叠顺序,以及全连接层(Fully Connected Layer)的设置等等。每一个决定都可能影响最终的性能。

1.1.2 模型复杂度与计算资源

随着深度学习模型在各种任务上达到 SOTA (State-of-the-Art) 性能,其结构也变得越来越复杂和庞大。例如,Transformer 模型在自然语言处理领域取得了巨大成功,但其参数量(Parameter Count)和计算量(FLOPs, Floating Point Operations Per Second)通常远超早期的循环神经网络(Recurrent Neural Network, RNN)模型。

① 计算资源瓶颈:训练大型复杂模型需要强大的计算能力,通常依赖于高性能的图形处理器(Graphics Processing Unit, GPU)或张量处理器(Tensor Processing Unit, TPU)。这限制了研究和应用的普惠性。
② 内存与延迟约束:部署模型时,尤其是在移动设备或边缘计算(Edge Computing)场景下,模型的内存占用(Memory Footprint)和推理延迟(Inference Latency)成为关键限制。大型模型可能无法在这些设备上运行,或者运行速度过慢。
③ 模型优化需求:为了适应不同的部署环境,通常需要对模型进行压缩(Model Compression)、量化(Quantization)、剪枝(Pruning)等操作。然而,这些操作往往依赖于特定的模型结构,且手动优化过程同样复杂。

因此,手动设计模型架构不仅耗时耗力,且难以系统地探索广阔的设计空间,更难以在多种相互冲突的目标(如高准确率与低延迟)之间找到最佳平衡。这正是自动化模型设计方法——神经架构搜索诞生的重要驱动力。

1.2 什么是神经架构搜索 (NAS)?

神经架构搜索(Neural Architecture Search, NAS)旨在自动化发现高性能的神经网络架构。它是自动化机器学习(Automated Machine Learning, AutoML)领域的一个重要分支。

1.2.1 NAS的定义与基本思想

简单来说,神经架构搜索就是利用算法来搜索一个由神经元(Neuron)、层(Layer)和连接(Connection)组成的最佳网络结构,以在特定任务和数据集上取得最优性能。

NAS的基本思想可以概括为一个搜索过程,它通常包含三个核心组成部分:

① 搜索空间(Search Space):定义了可以搜索的神经网络架构的集合。这是一个预先设定的、包含所有可能架构的集合。搜索空间的设计直接影响NAS的复杂性和最终找到的架构的质量。
② 搜索策略(Search Strategy):决定了如何在搜索空间中探索不同架构的算法。这可以是基于启发式的(Heuristic-based)、基于梯度的(Gradient-based)、基于演化的(Evolutionary-based)、基于强化的(Reinforcement Learning-based)等等。
③ 性能估计(Performance Estimation):评估搜索策略提出的候选架构的性能。由于从头开始训练每一个候选架构非常耗时,因此高效的性能评估方法对于加速NAS过程至关重要,例如权重共享(Weight Sharing)、性能预测器(Performance Predictor)等。

NAS的目标可以形式化为一个优化问题:在给定的搜索空间 \( \mathcal{A} \) 中,寻找一个架构 \( a^* \in \mathcal{A} \),使得其在目标数据集 \( D \) 上的性能指标 \( M(a, D) \) 最优(例如,最大化准确率或最小化损失)。
\[ a^* = \arg \max_{a \in \mathcal{A}} M(a, D) \]
整个NAS过程可以看作是一个迭代循环:搜索策略从搜索空间中采样一个或多个架构,性能估计器评估这些架构的性能,然后搜索策略根据评估结果更新搜索方向,重复此过程直到达到停止条件(如达到计算预算或找到满意性能的架构)。

1.2.2 NAS的关键优势

神经架构搜索的出现,为解决传统手动设计模型的挑战提供了有力工具,其主要优势包括:

① 自动化设计,降低门槛:NAS自动化了模型设计的复杂过程,减少了对领域专家经验的依赖,使得非专家也能在一定程度上获得高性能的网络架构。
② 探索新颖架构:NAS算法可以在人工设计难以触及或想象的巨大搜索空间中探索,有可能发现全新的、性能优异的架构。历史上许多高性能模型都有其人工设计的影子,而NAS可以打破这种束念。
③ 提升模型性能:通过对特定任务和数据集进行细致搜索,NAS通常能找到比人工设计更优的网络架构,从而提升模型的准确率、鲁棒性(Robustness)等性能指标。
④ 定制化与高效性:NAS可以根据特定的硬件平台(如移动端、FPGA等)和部署需求(如低延迟、低功耗、小模型大小)进行多目标优化,搜索出满足约束条件的定制化高效模型。
⑤ 加速研究与应用:一旦搜索完成,得到的架构可以直接用于训练和部署。虽然NAS本身的搜索过程可能耗时,但它为后续的研究和应用提供了强大的基础模型。

例如,NASNet [2] 在图像分类任务上搜索得到的网络单元结构,在多种图像数据集上取得了当时最先进的性能。ProxylessNAS [3] 则直接在目标硬件(如手机)上度量延迟,搜索出兼顾准确率和低延迟的高效模型。这些都证明了NAS在实际应用中的巨大潜力。

1.3 本书结构与内容概览

本书旨在为读者提供一个全面、系统且深入的神经架构搜索知识体系,无论您是初学者、渴望提升的中级研究者,还是寻求前沿洞察的专家。我们将从基础概念出发,逐步深入到核心算法、应用实践以及最新的研究进展。

本书共分为八章及附录,结构如下:

① 第一章(当前章节):引言,介绍NAS的背景、动机和核心优势。
② 第二章:详细解析NAS的三个核心组成部分——搜索空间、搜索策略和性能估计,这是理解后续算法的基础。
③ 第三章:深入分析几个具有里程碑意义和代表性的NAS算法,包括基于强化学习、演化算法、梯度搜索和参数共享的方法,帮助读者理解不同策略的原理和实现。
④ 第四章:探讨NAS如何应用于不同的深度学习任务,如图像分类、目标检测、自然语言处理等,分析不同任务带来的独特挑战和相应的NAS方法。
⑤ 第五章:关注如何在资源受限的硬件平台上进行NAS,介绍面向移动端和边缘设备的NAS技术,以及如何进行多目标优化以平衡性能和硬件约束。
⑥ 第六章:深入探讨各种旨在提高NAS效率和性能的先进技术和近期研究方向,如超网的深化研究、网络态射、预测器方法、零成本NAS等。
⑦ 第七章:提供NAS的实践指导,介绍常用的开源工具、框架以及用于评估和比较不同NAS算法的基准。
⑧ 第八章:总结当前NAS领域面临的挑战,并展望未来的研究和发展方向。

附录部分将提供关键术语的中英对照、重要研究论文列表以及常用的开源资源,方便读者查阅和进一步学习。

通过阅读本书,您将能够:

⚝ 掌握神经架构搜索的基本概念和原理。
⚝ 理解不同搜索空间和搜索策略的设计与优缺点。
⚝ 了解如何高效评估候选架构的性能。
⚝ 熟悉经典和前沿的NAS算法。
⚝ 学习如何将NAS应用于特定的深度学习任务和硬件平台。
⚝ 了解NAS领域的最新研究进展和未来发展趋势。
⚝ 获得进行NAS实践的工具和资源信息。

希望本书能激发您对神经架构搜索的兴趣,帮助您掌握这项强大的技术,并在您的学习和工作中取得成功!

参考文献
[1] He, Kaiming, et al. "Deep residual learning for image recognition." Proceedings of the IEEE conference on computer vision and pattern recognition. 2016.
[2] Zoph, Barret, et al. "Neural architecture search with reinforcement learning." arXiv preprint arXiv:1611.01578 (2016).
[3] Cai, Han, et al. "Proxylessnas: Direct neural architecture search on target hardware." arXiv preprint arXiv:1812.00332 (2018).

2. 神经架构搜索的核心组成

欢迎大家来到本书的第二章!在上一章,我们探讨了为什么神经架构搜索 (Neural Architecture Search - NAS) 在自动化深度学习模型设计中扮演着越来越重要的角色。手动设计高性能神经网络架构是一项耗时且需要专家经验的任务,而NAS的目标就是让这一过程自动化、高效化。

本章,我们将深入剖析任何一个神经架构搜索系统都必须包含的三个核心组成部分:搜索空间(Search Space)搜索策略(Search Strategy)性能估计(Performance Estimation)。理解这三者之间的相互关系和各自的设计选择,是掌握NAS技术的关键。

你可以将整个NAS过程想象成一场寻宝游戏:

搜索空间 (Search Space):这是宝藏可能藏匿的“地图”,它定义了我们允许搜索的神经网络架构的集合。地图的范围越大,可能藏有更珍贵宝藏的机会就越大,但也意味着寻找的难度更高。
搜索策略 (Search Strategy):这是我们寻找宝藏的“寻宝算法”或“探险路线”。我们可以随机地毯式搜索,可以使用更智能的策略如沿着“藏宝图线索”前进,或者根据之前找到的线索来预测下一个最有希望的位置。
性能估计 (Performance Estimation):这是用来快速判断挖到的是否是“宝藏”的方法。我们不能每次挖到一个东西都花大量时间去鉴定它是否真的有价值(比如完整训练一个模型),我们需要更快速的方法(比如只挖一小部分或者通过外观快速判断)来初步评估其潜力。

只有这三个组成部分协同工作,才能高效地找到高性能的神经网络架构。接下来,我们将逐一详细解析它们。

2.1 搜索空间 (Search Space)

搜索空间(Search Space),也称为架构空间(Architecture Space),是神经架构搜索算法能够探索的所有可能神经网络架构的集合。它的设计是NAS成功的基石之一,因为它直接决定了NAS能否找到优秀的架构。如果搜索空间没有包含潜在的最优架构,无论搜索策略和性能估计方法多么优秀,NAS也无法找到它。

搜索空间的设计需要在灵活性(Flexibility)搜索效率(Searchability)之间进行权衡。一个非常灵活的搜索空间可以包含几乎任意可能的网络结构,理论上它可能包含全局最优解,但这样的空间通常巨大无比,使得搜索变得异常困难。相反,一个受限的搜索空间虽然更容易搜索,但可能遗漏那些最优或接近最优的架构。

目前主流的搜索空间设计可以分为以下几类:

2.1.1 整网结构搜索空间 (Whole Network Search Space)

整网结构搜索空间直接定义了整个神经网络的层级结构。在这种空间中,我们可以定义网络的总层数、每一层的操作类型(例如卷积、池化、全连接等)、连接方式(例如顺序连接、跳跃连接 (skip connections))以及超参数(例如卷积核大小、步长、通道数)等。

特点:
▮▮▮▮⚝ 灵活性高:理论上可以构建任意形状的网络结构。
▮▮▮▮⚝ 搜索空间巨大:即使限制层数,操作和连接方式的组合也会导致指数级的可能性,使得搜索非常困难。
▮▮▮▮⚝ 难以迁移:为特定任务搜索到的整个网络结构可能难以直接应用于其他任务或数据集。

示例:
▮▮▮▮⚝ 在早期NAS研究中常用。例如,定义一个序列模型,每一层从预定义的操作集合中选择一个操作,并可能包含到前面某一层的跳跃连接。
▮▮▮▮⚝ 简单地允许在相邻层之间或跨层之间添加跳跃连接,选择不同类型的层(ReLU, Batch Norm, Conv, Pooling)等。

整网结构搜索空间直观且灵活,但巨大的搜索空间是对搜索策略和性能估计方法的严峻挑战。

2.1.2 基于单元的搜索空间 (Cell-based Search Space)

基于单元的搜索空间(Cell-based Search Space)是当前非常流行的一种设计方式,尤其在计算机视觉领域取得了巨大成功。其核心思想不是搜索整个网络的结构,而是搜索一个或几个小的、可堆叠的计算单元(Cell)的内部结构。整个网络由这些学到的单元按一定模式堆叠而成。这种设计受到了ResNet、Inception等成功手动设计网络的启发,它们也使用了类似的模块化思想。

设计通常包括:
▮▮▮▮⚝ 定义单元类型:通常有两种主要的单元类型:
▮▮▮▮▮▮▮▮⚝ 普通单元 (Normal Cell):输入和输出特征图维度保持不变。
▮▮▮▮▮▮▮▮⚝ 归约单元 (Reduction Cell):输入到输出特征图的空间维度减半(通常通过带步长2的卷积或池化实现),用于降低特征图分辨率并增加通道数。
▮▮▮▮⚝ 定义单元结构:每个单元通常被建模为一个有向无环图 (Directed Acyclic Graph - DAG)。图中的节点表示特征图(或中间表示),边表示对特征图应用的操作。
▮▮▮▮⚝ 搜索内容:搜索算法需要决定单元内的边连接(即哪些中间节点连接到哪些其他中间节点)以及每条边上的操作(例如 \(3 \times 3\) 卷积、 \(5 \times 5\) 卷积、最大池化 (max pooling)、平均池化 (average pooling)、恒等映射 (identity)、零化 (zeroization) 等操作集合中选择)。
▮▮▮▮⚝ 网络构建:将学到的普通单元和归约单元按预设的宏观结构堆叠起来,形成最终的网络。例如,先堆叠几层普通单元,然后一个归约单元,再堆叠几层普通单元,以此类推。

特点:
▮▮▮▮⚝ 大幅缩小搜索空间:通过搜索单元结构而不是整个网络,搜索空间规模显著减小,使得高效搜索成为可能。
▮▮▮▮⚝ 可迁移性强:学到的单元结构通常可以迁移到不同的数据集或任务上,只需调整堆叠单元的数量或宏观结构。
▮▮▮▮⚝ 性能优秀:许多基于单元搜索空间得到的架构(如NASNet, AmoebaNet, PNASNet, DARTS衍生的架构)在图像分类等任务上取得了与顶尖手动设计模型匹敌甚至超越的性能。
▮▮▮▮⚝ 仍需手动定义宏观结构和操作集合:搜索空间的质量很大程度上依赖于人工预设的单元结构框架和操作集合。

基于单元的搜索空间通过引入结构化的模块化设计,在搜索效率和性能之间取得了很好的平衡,是当前NAS研究和应用的主流方向之一。

2.1.3 层级搜索空间 (Hierarchical Search Space)

层级搜索空间(Hierarchical Search Space)试图结合整网结构搜索和基于单元搜索的优点,通过在不同的抽象层次上定义和搜索网络结构。例如,它可以在顶层搜索网络的宏观结构(如阶段数、每阶段重复的块数),在中层搜索每个阶段使用的块类型,在底层搜索块内的具体操作和连接方式。

特点:
▮▮▮▮⚝ 更精细的控制:可以在不同粒度上进行搜索,理论上能够捕捉更复杂的网络结构模式。
▮▮▮▮⚝ 搜索复杂度:取决于层级划分和各层搜索空间的设计,搜索复杂度介于整网搜索和纯粹的单元搜索之间。
▮▮▮▮⚝ 设计复杂:需要仔细定义不同层次的结构和它们之间的依赖关系。

示例:
▮▮▮▮⚝ 某些方法将网络结构分解为层、块 (blocks) 和操作 (operations) 三个层次,分别在不同层次上进行搜索。
▮▮▮▮⚝ 可以先确定网络有多少个“阶段”,每个阶段由多少个“单元”组成,然后再搜索每个“单元”的内部结构。

层级搜索空间提供了一种更细粒度的搜索方式,为探索更广泛且结构化的架构提供了可能性。

2.1.4 搜索空间的设计权衡

设计一个高效且有效的搜索空间是一项挑战。需要考虑的关键权衡包括:

空间大小 vs. 潜在性能:
▮▮▮▮⚝ 较大的搜索空间理论上包含更多样化的架构,可能找到性能更好的模型,但搜索难度和计算成本急剧增加。
▮▮▮▮⚝ 较小的搜索空间更容易搜索,但可能无法找到最优解。

灵活性 vs. 可搜索性:
▮▮▮▮⚝ 过于灵活的空间(如允许任意连接)可能难以定义有效的搜索策略和性能估计方法。
▮▮▮▮⚝ 结构化的空间(如基于单元的空间)通过限制结构类型提高了可搜索性,但牺牲了一定的灵活性。

包含先验知识 vs. 探索新颖结构:
▮▮▮▮⚝ 将已有的成功网络设计思想(如残差连接、Inception模块)融入搜索空间,可以提高找到高性能架构的可能性。
▮▮▮▮⚝ 过于依赖先验知识可能会限制探索全新的、可能更优的网络结构。

与搜索策略和性能估计方法的契合:
▮▮▮▮⚝ 搜索空间的设计应考虑到后续使用的搜索策略和性能估计方法的特点。例如,基于梯度的搜索策略需要搜索空间具有某种可微分的表示形式;参数共享的方法则要求搜索空间中的架构能够方便地共享权重。

总而言之,搜索空间的设计是NAS流程的第一步,也是至关重要的一步。一个精心设计的搜索空间能够显著提高NAS的效率和找到高性能架构的概率。

2.2 搜索策略 (Search Strategy)

搜索策略(Search Strategy)是神经架构搜索的“发动机”,它负责在定义的搜索空间中探索并找到具有期望性能的神经网络架构。不同的搜索策略采用不同的算法来指导搜索过程,每种策略都有其优点和局限性。本节我们将介绍几种主要的搜索策略。

搜索策略的目标是高效地探索巨大的搜索空间,尽快找到高性能的架构。这通常涉及在探索 (Exploration)(尝试搜索空间中未知的区域)和利用 (Exploitation)(利用已评估架构的信息去探索更有希望的区域)之间进行权衡。

2.2.1 基于强化学习的搜索 (RL-based Search)

基于强化学习的搜索(RL-based Search)是早期NAS研究中最具代表性的方法之一。它将架构搜索过程建模为一个强化学习问题。

基本思想:
▮▮▮▮⚝ 智能体 (Agent):通常是一个循环神经网络 (Recurrent Neural Network - RNN) 或 Transformer,称为控制器 (Controller)。
▮▮▮▮⚝ 环境 (Environment):是训练和评估候选架构的过程。
▮▮▮▮⚝ 动作空间 (Action Space):控制器在每一步生成一个网络架构的组成部分(例如,选择一个操作、一个连接)。通过一系列动作,控制器输出一个完整的网络架构描述。
▮▮▮▮⚝ 奖励信号 (Reward Signal):根据生成的架构在验证集上训练后的性能(如准确率)来定义。性能越高,奖励越大。

工作流程:
▮▮▮▮⚝ 控制器通过其策略(通常是一个参数化的概率分布)生成一个网络架构。
▮▮▮▮⚝ 将生成的架构实例化,并在数据集上进行训练。
▮▮▮▮⚝ 根据训练好的模型在验证集上的性能计算奖励。
▮▮▮▮⚝ 使用策略梯度(Policy Gradient,如REINFORCE算法)来更新控制器的参数,使其更有可能生成获得高奖励的架构。
▮▮▮▮⚝ 重复上述过程,控制器不断学习生成更好的架构。

代表性工作: NASNet。

特点:
▮▮▮▮⚝ 概念直观:将架构生成视为一个序列决策问题。
▮▮▮▮⚝ 灵活性:控制器理论上可以生成搜索空间中允许的任意结构。
▮▮▮▮⚝ 计算成本高昂:每次生成一个架构都需要从头训练评估,导致训练控制器需要评估大量的候选架构,非常耗时。
▮▮▮▮⚝ 探索效率问题:早期方法可能需要探索大量的架构才能找到好的结果。

2.2.2 基于演化算法的搜索 (Evolutionary Algorithm-based Search)

基于演化算法的搜索(Evolutionary Algorithm-based Search),也称为遗传算法 (Genetic Algorithm),模拟生物进化的过程来进行架构搜索。

基本思想:
▮▮▮▮⚝ 种群 (Population):维护一个包含多个不同网络架构的集合。
▮▮▮▮⚝ 适应度 (Fitness):评估种群中每个架构的性能(如准确率),作为其适应度。
▮▮▮▮⚝ 选择 (Selection):根据适应度选择表现较好的架构作为“父代”。
▮▮▮▮⚝ 变异 (Mutation):对父代架构进行随机的微小改变(如添加/删除一层、改变操作类型、添加/删除连接)产生“子代”。
▮▮▮▮⚝ 交叉 (Crossover) (可选):组合两个父代架构的部分结构生成子代。
▮▮▮▮⚝ 替换 (Replacement):用新生成的子代替换种群中适应度较低的架构。

工作流程:
▮▮▮▮⚝ 初始化一个随机架构组成的种群。
▮▮▮▮⚝ 评估种群中每个架构的适应度(训练并验证)。
▮▮▮▮⚝ 进入迭代循环:
▮▮▮▮▮▮▮▮⚝ 从当前种群中选择父代。
▮▮▮▮▮▮▮▮⚝ 对父代进行变异(和/或交叉)生成新的子代。
▮▮▮▮▮▮▮▮⚝ 评估子代的适应度。
▮▮▮▮▮▮▮▮⚝ 将子代加入种群,并移除适应度较低的架构以保持种群规模。
▮▮▮▮⚝ 循环直到收敛或达到预设迭代次数。

代表性工作: AmoebaNet。

特点:
▮▮▮▮⚝ 并行性好:种群中的架构可以并行评估。
▮▮▮▮⚝ 适用于离散搜索空间:演化操作(变异、交叉)自然适用于对离散结构的修改。
▮▮▮▮⚝ 探索能力强:变异操作有助于跳出局部最优。
▮▮▮▮⚝ 计算成本高昂:同样需要训练评估种群中的每个架构,特别是种群规模较大时。
▮▮▮▮⚝ 参数调整敏感:算法性能可能依赖于种群大小、选择策略、变异率等参数。

2.2.3 基于梯度的搜索 (Gradient-based Search)

基于梯度的搜索(Gradient-based Search)是近年来效率最高的搜索策略之一。其核心思想是将离散的架构选择问题松弛化(Relaxation)为连续可微的问题,从而可以使用梯度下降方法来联合优化网络权重和架构参数。

基本思想:
▮▮▮▮⚝ 连续松弛化 (Continuous Relaxation):在搜索空间的每个“选择点”(例如,在一个单元的两个节点之间选择操作),不是硬性选择一个操作,而是允许同时考虑所有可能的候选操作。通过为每个操作分配一个权重(或概率),将离散选择变为这些操作的加权和。例如,输出特征图是所有候选操作应用于输入特征图的加权求和,权重由可学习的架构参数控制。
▮▮▮▮⚝ 可微分性 (Differentiability):通过这种松弛化,网络前向传播和损失计算对架构参数是可微的。
▮▮▮▮⚝ 联合优化 (Joint Optimization):可以使用梯度下降同时优化网络的权重 \(w\) 和架构参数 \(\alpha\)。通常采用交替优化的方式:固定 \(\alpha\) 优化 \(w\),然后固定 \(w\) 优化 \(\alpha\)。优化 \(\alpha\) 的目标是最小化验证集损失(或最大化验证集性能),优化 \(w\) 的目标是最小化训练集损失。
▮▮▮▮⚝ 离散化 (Discretization):搜索过程结束时,根据学到的架构参数 \(\alpha\) 重新确定每个选择点上权重最大的操作,从而得到最终的离散网络架构。

代表性工作: DARTS (Differentiable Architecture Search)。

工作流程(以DARTS为例):
▮▮▮▮⚝ 构建一个超网 (Supernet) 或有向无环图,其中节点表示特征图,边表示连接。每条边不是一个单一操作,而是所有候选操作的加权求和(使用 Softmax 对架构参数进行归一化)。
▮▮▮▮⚝ 初始化网络权重 \(w\) 和架构参数 \(\alpha\)。
▮▮▮▮⚝ 进入优化循环:
▮▮▮▮▮▮▮▮⚝ 使用训练数据更新网络权重 \(w\)(固定 \(\alpha\))。
▮▮▮▮▮▮▮▮⚝ 使用验证数据更新架构参数 \(\alpha\)(固定 \(w\))。
▮▮▮▮⚝ 循环直到收敛。
▮▮▮▮⚝ 根据最终学到的 \(\alpha\) 确定每个选择点上的最优操作,构建离散架构。
▮▮▮▮⚝ (可选)从头训练得到的离散架构。

特点:
▮▮▮▮⚝ 效率高:将搜索问题转化为连续优化问题,可以使用高效的梯度下降,搜索时间大幅缩短(从几天/几周缩短到几小时/几天)。
▮▮▮▮⚝ 需要连续松弛化:搜索空间需要能够表示为可微分的结构。
▮▮▮▮⚝ 可能存在问题:松弛化和离散化之间的差距可能导致搜索到的连续最优解在离散化后性能下降(性能坍塌 (performance collapse));也可能出现某些操作的架构参数过度增长的问题。后来的许多工作致力于解决DARTS的这些问题。

2.2.4 基于随机搜索与贝叶斯优化的搜索 (Random Search and Bayesian Optimization)

随机搜索 (Random Search):
▮▮▮▮⚝ 基本思想: 在搜索空间中随机均匀地采样架构,评估其性能,并保留表现最好的架构。
▮▮▮▮⚝ 特点: 简单易实现,作为基线方法出人意料的有效(尤其是在高维空间中,随机采样更有可能落在重要参数附近);没有利用过去评估的信息,效率较低,需要评估大量架构才能找到好的结果。

贝叶斯优化 (Bayesian Optimization):
▮▮▮▮⚝ 基本思想: 利用历史评估结果构建一个性能预测模型(代理模型 Surrogate Model,通常使用高斯过程 Gaussian Process 或树形 Parzen 估计器 TPE)。这个模型估计搜索空间中每个点(即每个架构)的预期性能及其不确定性。然后使用一个采集函数 (Acquisition Function)(如预期提升 Expected Improvement)来决定下一个最有价值评估的点,平衡探索(在高不确定区域采样)和利用(在预测性能高区域采样)。
▮▮▮▮⚝ 特点: 比随机搜索更智能,能有效地利用历史信息指导搜索;在低维连续空间中表现优秀;在高维离散的NAS搜索空间中应用面临挑战,需要合适的代理模型和特征表示。

这些搜索策略各有优劣,适用于不同的搜索空间和计算资源条件。实际应用中,研究者们也在不断探索结合不同策略的混合方法,以期达到更高的搜索效率和更好的架构性能。

2.3 性能估计 (Performance Estimation)

性能估计(Performance Estimation),或称为架构评估(Architecture Evaluation),是神经架构搜索中最耗时的部分。搜索策略产生的每一个候选架构都需要被评估其在特定任务上的性能(通常是验证集上的准确率)。如何快速准确地估计一个架构的性能,是提高NAS整体效率的关键。

最直接的性能估计方法是将候选架构从头开始训练,但这计算成本极高,是早期NAS方法耗时巨大的主要原因。为了克服这一瓶颈,研究者们提出了各种高效的性能估计技术。

2.3.1 从头训练 (Training from Scratch)

基本思想: 对于搜索策略产生的每一个候选神经网络架构,都在训练数据集上从随机初始化的参数开始进行完整的训练,然后在验证集上评估其性能。

特点:
▮▮▮▮⚝ 准确性高: 这是评估架构真实性能最可靠的方法,因为模型参数完全针对该特定架构和任务进行了优化。
▮▮▮▮⚝ 计算成本极高: 训练一个大型神经网络通常需要数小时到数天,如果搜索策略需要评估成百上千甚至上万个架构,总计算时间将达到数周甚至数月,这是早期NAS的主要瓶颈。
▮▮▮▮⚝ 独立评估: 每个架构的训练是独立的,可以并行化。

从头训练作为性能估计的“黄金标准”,为其他更高效的方法提供了评估的基准。但其高昂的成本催生了对其他加速技术的强烈需求。

2.3.2 参数共享 (Parameter Sharing)

参数共享(Parameter Sharing)是近年来提高NAS效率最成功的方法之一。其核心思想是让搜索空间中的不同架构在训练过程中共享权重,避免了从头训练每个独立架构的巨大开销。

基本思想:
▮▮▮▮⚝ 构建一个“超网 (Supernet)”或“大型有向无环图”,这个超网的设计要能够“容纳”搜索空间中的所有候选架构。任何一个候选架构都可以看作是这个超网的一个“子网络 (Subnet)”,并且继承超网中对应连接上的权重。
▮▮▮▮⚝ 只需要训练一次这个大型的超网。在超网训练过程中,通过某种采样策略激活和训练不同的子网络。
▮▮▮▮⚝ 评估一个候选架构时,不再需要从头训练,而是直接从训练好的超网中提取对应的权重,然后在验证集上进行快速评估(通常只需要进行一次前向传播或少量微调)。

实现方式示例:
▮▮▮▮⚝ One-Shot NAS: 一次性训练一个包含所有可能操作的超网,每个候选架构都是超网的一个子图。评估时直接从超网继承权重。如何有效训练超网是关键挑战。
▮▮▮▮⚝ ENAS (Efficient NAS): 使用一个控制器 (Controller) 来采样子网络,并在训练超网的同时,利用强化学习信号(子网络的验证集准确率)来更新控制器,使其能采样到更高性能的子网络。子网络之间共享权重。
▮▮▮▮⚝ DARTS: 虽然主要是一种搜索策略,但其连续松弛化的形式也隐含了参数共享的思想。在一个超图上同时存在所有候选操作,优化过程相当于在学习这些操作的权重分配,也具有参数共享的效率优势。

特点:
▮▮▮▮⚝ 效率极高: 将总训练成本分摊到超网的一次训练中,评估单个架构的速度非常快。
▮▮▮▮⚝ 挑战: 如何有效地训练超网,使得继承的权重能够准确反映子网络的真实性能,是一个重要的研究问题。超网的训练 dynamics 可能与独立训练子网不同,可能存在“纠缠”问题,即不同子网络之间的权重相互影响。
▮▮▮▮⚝ 评估偏差: 从超网继承权重的子网络性能评估可能不如从头训练准确,存在评估偏差 (evaluation gap)。

参数共享是目前实现高效NAS的主流技术路线之一,许多最新的NAS方法都是基于这一思想的改进。

2.3.3 代理任务 (Proxy Tasks)

代理任务(Proxy Tasks)思想是,与其在完整、计算量大的任务上评估每个架构,不如在一个计算量更小的“代理任务”上进行评估。如果代理任务上的性能与最终任务上的性能有很强的相关性,那么代理任务的评估结果就可以作为架构潜力的快速估计。

常见的代理任务:
▮▮▮▮⚝ 更小的数据集: 在原始数据集的一个子集上进行训练和评估。
▮▮▮▮⚝ 更少的训练周期 (epochs): 只训练几个周期,而不是训练到收敛。
▮▮▮▮⚝ 更小的模型尺寸: 训练一个与候选架构具有相同拓扑结构但通道数(width)或层数(depth)较小的模型。
▮▮▮▮⚝ 更低分辨率的图像: 对于图像任务,在缩小的图像上训练。

特点:
▮▮▮▮⚝ 显著加速评估: 通过减少数据量或计算量,单次评估时间大大缩短。
▮▮▮▮⚝ 依赖相关性假设: 前提是代理任务上的性能能够很好地预测最终任务上的性能。如果相关性不强,那么基于代理任务找到的“最优”架构在真实任务上可能表现不佳。
▮▮▮▮⚝ 需要手动选择代理任务: 选择一个合适的代理任务需要经验,且其有效性依赖于具体任务和数据集。

代理任务方法简单直观,常与其他加速技术结合使用,尤其适用于初步筛选大量候选架构。

2.3.4 性能预测器 (Performance Predictors)

性能预测器(Performance Predictors)方法是训练一个独立的预测模型,该模型接收一个架构的表示作为输入,并输出该架构在目标任务上的预测性能(例如准确率或延迟)。一旦这个预测器训练好,评估一个新架构的速度就与运行一次预测器的前向传播一样快,通常是毫秒级别的。

基本思想:
▮▮▮▮⚝ 构建数据集: 需要一个包含(架构表示, 真实性能)对的数据集。这些数据通常是通过评估搜索空间中的一小部分随机采样的架构(可能使用从头训练或其他更准确的方法)来获得的。
▮▮▮▮⚝ 训练预测器: 使用这个数据集训练一个回归模型,该模型以架构的某种向量表示(例如,基于其结构特征或图形嵌入)作为输入,预测其性能值。常用的预测模型包括神经网络、高斯过程、支持向量回归 (Support Vector Regression - SVR) 或集合模型 (ensemble models)。
▮▮▮▮⚝ 指导搜索: 在NAS的搜索过程中,搜索策略不再需要训练和评估每个候选架构,而是将其输入到训练好的性能预测器中,根据预测的性能来选择或排序架构。

特点:
▮▮▮▮⚝ 评估速度极快: 一旦预测器训练完成,评估新架构的开销几乎可以忽略不计。
▮▮▮▮⚝ 需要预先评估数据: 训练预测器需要一定数量的(架构, 性能)数据对,获取这些数据本身是耗时的前期投入。
▮▮▮▮⚝ 预测准确性是关键: 预测器的准确性直接影响NAS找到最优架构的能力。预测器需要在未见过的架构上具有良好的泛化能力。
▮▮▮▮⚝ 搜索策略的集成: 性能预测器通常与各种搜索策略结合使用,例如贝叶斯优化、进化算法或基于采样的策略,用预测值代替真实评估值来指导搜索。

零成本NAS (Zero-Cost NAS) 可以视为性能预测器的一个极端形式,它试图找到无需任何训练即可估计架构性能的指标。

总结来说,性能估计是NAS效率的瓶颈所在。从头训练是准确但昂贵的基准,而参数共享、代理任务和性能预测器则是为了加速评估而提出的主要技术。实际应用中,常常结合使用这些方法来平衡评估的准确性和速度。

3. 经典与代表性NAS算法

在本章中,我们将深入探索神经架构搜索(Neural Architecture Search - NAS)领域中具有里程碑意义和广泛影响力的经典算法。通过剖析这些代表性方法,我们将理解如何将前面章节介绍的搜索空间(Search Space)、搜索策略(Search Strategy)和性能估计(Performance Estimation)这三个核心组成部分有机地结合起来,实现高效且有效的架构搜索。我们不仅会介绍它们的原理,还会探讨它们的创新点、优势以及局限性。

3.1 基于强化学习的代表:NASNet

强化学习(Reinforcement Learning - RL)是早期应用于神经架构搜索的一种重要策略,而NASNet [①] 便是这一方向上的代表性工作,它证明了通过自动化搜索可以超越人类专家的设计。NASNet 首次提出了基于单元(Cell-based)的搜索空间,极大地缩小了搜索范围并提高了可迁移性(Transferability)。

3.1.1 RL formulation of NASNet

NASNet 将寻找最佳网络架构的过程建模为一个序列决策问题,并使用一个循环神经网络(Recurrent Neural Network - RNN)作为控制器(Controller)。
① 控制器(Controller)的任务是生成(或者说预测)子网络的架构描述。
② 控制器通过与环境(Environment)交互来学习。这里的环境是训练子网络并评估其性能的过程。
③ 控制器根据子网络在验证集上的表现获得奖励(Reward)。奖励信号用于更新控制器的参数,使其更有可能生成高性能的架构。

具体来说,控制器生成的是构成整个网络的卷积单元(Convolutional Cell)的结构。整个网络由堆叠多个相同的单元构成,这大大减少了需要搜索的参数数量,并使得搜索结果可以更容易地迁移到其他数据集或任务上。

3.1.2 控制器 (Controller) 与搜索空间 (Search Space)

NASNet 使用了一个基于 LSTM 的 RNN 作为控制器。这个控制器以一种顺序的方式预测构成一个卷积单元的操作(Operations)和连接(Connections)。
基于单元(Cell-based)搜索空间: NASNet 搜索的是两种基本类型的卷积单元:
▮▮▮▮ⓑ 普通单元(Normal Cell): 输入和输出特征图尺寸相同。
▮▮▮▮ⓒ 归约单元(Reduction Cell): 输出特征图尺寸减半(通常通过步长为2的卷积或池化实现)。
▮▮▮▮ 每个单元的结构都是通过组合若干个操作(如卷积、池化、恒等映射等)和它们之间的连接来构建的。
▮▮▮▮ 控制器每次预测一个“块”(Block)的结构,每个块包含两个输入和通过某个操作组合输入。一个单元由 B 个这样的块组成,控制器需要生成 2B 个预测(每块两个输入操作)。

控制器生成过程: 控制器 RNN 接收一个嵌入向量(Embedding)作为输入,这个向量表示上一个预测的架构片段。然后,它输出下一个预测的架构片段。这个过程重复进行,直到生成完整的单元描述。
▮▮▮▮ 例如,控制器可能顺序生成:
▮▮▮▮ⓐ 选择第一个输入节点(来自前一层或前前一层)。
▮▮▮▮ⓑ 选择第二个输入节点。
▮▮▮▮ⓒ 选择对这两个节点执行的操作(如 SepConv 3x3, MaxPool 3x3 等)。
▮▮▮▮ⓓ 选择如何组合这两个操作的输出(如逐元素相加 Add)。
▮▮▮▮ 这个过程重复多次来构建单元中的多个块。

3.1.3 训练流程

NASNet 的训练过程是一个内外循环:
外循环:训练控制器: 控制器使用策略梯度(Policy Gradient)算法(如 REINFORCE [②])进行训练。
▮▮▮▮ⓑ 控制器采样一批候选架构。
▮▮▮▮ⓒ 对于每个候选架构,构建对应的子网络。
▮▮▮▮ⓓ 在代理任务(Proxy Task)上训练这个子网络。NASNet 在 CIFAR-10 数据集上搜索单元结构,然后迁移到 ImageNet。
▮▮▮▮ⓔ 评估子网络在验证集上的性能(如准确率 Accuracy),将其作为奖励信号。
▮▮▮▮ⓕ 使用累积的奖励信号更新控制器的参数,以增加产生高奖励架构的概率。
内循环:训练子网络: 对于控制器生成的每个架构,都需要从头开始训练对应的神经网络模型。
▮▮▮▮ 这是 NASNet 计算成本高昂的主要原因。每个采样的架构都需要完整的训练过程来评估其性能。

奖励函数: NASNet 使用简单的验证集准确率作为奖励信号。如果某个架构在验证集上达到 \(ACC\),则奖励 \(R = ACC\)。

NASNet 的主要贡献:
⚝ 首次成功地将基于单元(Cell-based)的搜索空间与强化学习结合,并在图像分类任务上取得了当时 SOTA (State-of-the-Art) 的结果。
⚝ 证明了自动化搜索出的架构可以迁移到更大的数据集和任务上(CIFAR-10 到 ImageNet),显示了搜索空间的有效性。
⚝ 开创了 NAS 的新范式,激发了后续大量研究。

局限性:
计算成本极高: 需要训练大量的子网络,即使使用代理任务(如在 CIFAR-10 上搜索)并进行分布式训练,也需要数百到数千个 GPU 天。
搜索效率低: 基于 RL 的采样和训练过程效率不高。
不可微分: 整个搜索过程涉及离散的架构选择,不可进行端到端(End-to-End)的梯度优化。

尽管有局限性,NASNet 作为早期成功的 NAS 方法,奠定了许多后续研究的基础。

3.2 基于演化算法的代表:AmoebaNet

演化算法(Evolutionary Algorithm - EA)是另一种启发式搜索策略,它模拟生物进化过程来寻找最优解。AmoebaNet [③] 是将演化算法应用于神经架构搜索的代表性工作。

3.2.1 演化算法框架

演化算法用于 NAS 的基本思想是维护一个候选架构的“种群”(Population)。在每一代(Generation),通过对种群中的个体(即网络架构)进行变异(Mutation)和选择(Selection),生成下一代的种群,期望种群的整体“适应度”(Fitness,即网络性能)不断提高。

AmoebaNet 使用了一种称为“锦标赛选择”(Tournament Selection)的演化策略:
初始化种群: 随机生成 N 个初始网络架构组成初始种群。
评估适应度: 对种群中的每个架构,训练对应的网络模型并评估其在验证集上的性能(通常是准确率),以此作为其适应度。
循环迭代: 重复以下步骤 M 次(M 远远大于 N):
▮▮▮▮ⓓ 选择父代: 从种群中随机选择 k 个(如 k=3 或 4)架构进行锦标赛。在这 k 个架构中,选择适应度最高的那个作为父代。
▮▮▮▮ⓔ 变异: 对选定的父代架构进行随机变异,生成一个新的子代架构。变异操作可能包括增加/删除一个连接、改变一个操作类型等。
▮▮▮▮ⓕ 评估子代: 训练新的子代架构并评估其适应度。
▮▮▮▮ⓖ 替换种群中的旧个体: 从种群中随机选择另一个 k 个架构进行锦标赛。选择适应度最低的那个,如果子代架构的适应度更高,则用子代替换这个适应度最低的个体。如果子代适应度不高,则不进行替换。这种“老年人淘汰”机制确保了种群的多样性并倾向于保留更好的个体。
结束: 迭代 M 次后,种群中适应度最高的架构被认为是搜索到的最优架构。

3.2.2 架构表示与变异

AmoebaNet 同样采用了基于单元(Cell-based)的搜索空间,与 NASNet 类似,搜索普通单元和归约单元的结构。
架构表示(Genotype): 每个单元的结构可以表示为一个有向无环图(Directed Acyclic Graph - DAG)。图的节点代表中间计算结果,边代表操作。
变异操作: AmoebaNet 定义了几种基本的变异操作,以随机的方式修改单元的 DAG 结构:
▮▮▮▮ⓒ 添加边(Add Edge): 在两个不直接相连的节点之间添加一条新的边,并随机选择一个操作赋给它。
▮▮▮▮ⓓ 删除边(Remove Edge): 随机删除一条已有的边。
▮▮▮▮ⓔ 改变操作(Alter Operation): 随机选择一条边,改变其对应的操作类型。

通过这些变异操作,演化算法可以在搜索空间中探索不同的架构变体。

3.2.3 优点与不足

优点:
概念直观: 模拟自然界的进化过程,易于理解。
适用于离散空间: 演化算法天然适合在离散的架构空间中搜索,不需要像 DARTS 那样进行松弛(Relaxation)。
多样性: 通过变异和选择,可以在搜索空间中维持一定程度的多样性,可能有助于跳出局部最优。

不足:
计算成本高: 类似于 NASNet,每个子代架构通常需要从头训练,计算开销巨大。
搜索效率: 相比于基于梯度的搜索方法,演化算法通常需要更多的评估次数才能找到好的架构。
调参复杂: 演化算法的超参数较多(种群大小、变异率、锦标赛大小等),调优相对复杂。

AmoebaNet 证明了演化算法在 NAS 中的有效性,其搜索到的架构在图像分类任务上也取得了具有竞争力的结果。

3.3 基于梯度搜索的代表:DARTS

基于梯度(Gradient-based)的神经架构搜索方法旨在将离散的架构选择过程转化为连续可优化的形式,从而可以使用高效的梯度下降方法进行搜索。DARTS (Differentiable Architecture Search) [④] 是这一领域的开创性工作,极大地提高了 NAS 的搜索效率。

3.3.1 核心思想:连续松弛 (Continuous Relaxation)

DARTS 的核心思想是将离散的架构选择问题转化为一个连续优化问题。
搜索空间的连续化: 在 DARTS 的基于单元(Cell-based)搜索空间中,一个节点(或边)可以选择多种不同的操作(如 SepConv 3x3, MaxPool 3x3 等)。DARTS 不直接选择一个操作,而是允许节点(或边)同时“连接”到所有可能的候选操作上。
引入架构参数: 对于每个节点(或边)和每个候选操作之间的连接,DARTS 引入一个权重或系数 \( \alpha \) 。这些 \( \alpha \) 参数是连续的。
Softmax 权重: 使用 Softmax 函数将这些 \( \alpha \) 参数转化为概率分布,即每个操作的选择概率:
\[ P(\text{op}_i) = \frac{\exp(\alpha_i)}{\sum_j \exp(\alpha_j)} \]
加权求和: 节点的输出不再是某个单一操作的输出,而是所有候选操作输出的加权求和,权重就是它们对应的 Softmax 概率:
\[ \text{Output} = \sum_i P(\text{op}_i) \cdot \text{Output}(\text{op}_i) \]
这样,原本离散的“选择哪个操作”的问题,就变成了连续的“如何加权组合所有操作”的问题,可以通过梯度下降来优化这些 \( \alpha \) 参数。

3.3.2 可微分搜索空间 (Differentiable Search Space)

DARTS 在单元结构上进行搜索。一个单元接收两个输入(通常是前一层和前前一层的输出),并通过一系列中间节点(Intermediate Nodes)和操作连接最终产生一个输出。
中间节点: 每个中间节点接收它之前所有节点(包括输入节点)的输出作为输入。
边上的操作: 每条连接(从节点 i 到节点 j)不再是一个确定的操作,而是所有候选操作的“混合体”。DARTS 在每条边上定义一个操作集 \( O\)。从节点 i 到节点 j 的输出 \( z_{i,j} \) 是通过对所有候选操作应用 Softmax 加权求和得到的:
\[ z_{i,j} = \sum_{o \in O} \frac{\exp(\alpha_{(i,j), o})}{\sum_{o' \in O} \exp(\alpha_{(i,j), o'})} \cdot o(x_i) \]
其中 \( x_i \) 是节点 i 的输出,\( \alpha_{(i,j), o} \) 是连接 \( (i, j) \) 上操作 \( o \) 对应的架构参数。
节点输出: 节点的输出是其所有输入边的加权求和(通常是简单的逐元素相加)。

通过这种方式,整个网络架构(具体来说是单元结构)由一组连续的架构参数 \( \alpha \) 来表示。

3.3.3 双层优化 (Bi-level Optimization)

DARTS 将 NAS 问题构建为一个双层优化问题:
上层优化: 优化架构参数 \( \alpha \) ,目标是在验证集(Validation Set)上最小化损失。
下层优化: 优化网络的权重 \( w \) ,目标是在训练集(Training Set)上最小化损失。

可以表示为:
\[ \min_{\alpha} \mathcal{L}_{val}(w^*(\alpha), \alpha) \]
\[ \text{s.t.} \quad w^*(\alpha) = \arg\min_{w} \mathcal{L}_{train}(w, \alpha) \]
其中 \( \mathcal{L}_{val} \) 是验证集损失,\( \mathcal{L}_{train} \) 是训练集损失,\( w^*(\alpha) \) 是在给定架构 \( \alpha \) 下的最优权重。

由于 \( w^*(\alpha) \) 的显式表达式很难获得,DARTS 采用了一种近似方法:交替优化。

3.3.4 交替优化过程

DARTS 通过梯度下降交替更新网络权重 \( w \) 和架构参数 \( \alpha \):
更新权重 \( w \): 固定架构参数 \( \alpha \),使用训练数据更新网络权重 \( w \) 以最小化 \( \mathcal{L}_{train} \)。这一步与标准的神经网络训练相同。
更新架构参数 \( \alpha \): 固定网络权重 \( w \),使用验证数据更新架构参数 \( \alpha \) 以最小化 \( \mathcal{L}_{val} \)。这一步需要计算 \( \mathcal{L}_{val} \) 对 \( \alpha \) 的梯度。由于 \( \mathcal{L}_{val} \) 依赖于 \( w^*(\alpha) \),而 \( w^*(\alpha) \) 又依赖于 \( \alpha \)(通过下层优化),这里需要使用链式法则和隐函数定理来计算梯度:
\[ \frac{\partial \mathcal{L}_{val}(w^*(\alpha), \alpha)}{\partial \alpha} = \frac{\partial \mathcal{L}_{val}(w, \alpha)}{\partial \alpha} + \frac{\partial \mathcal{L}_{val}(w, \alpha)}{\partial w} \frac{\partial w^*(\alpha)}{\partial \alpha} \]
计算 \( \frac{\partial w^*(\alpha)}{\partial \alpha} \) 比较复杂,DARTS 使用了一种近似方法,假设 \( w^*(\alpha) \) 是通过一步或几步梯度下降从某个 \( w \) 更新而来。最终 \( \alpha \) 的更新方向近似为:
\[ \nabla_{\alpha} \mathcal{L}_{val}(w, \alpha) \]
其中 \( w \) 是通过在训练集上训练得到的当前权重。更精确的实现会考虑 \( \frac{\partial w^*(\alpha)}{\partial \alpha} \) 项,这通常通过有限差分或更复杂的反向传播方式计算二阶导数。原始 DARTS 使用一步训练更新 \( w \) 后,计算验证集损失对 \( \alpha \) 的梯度来更新 \( \alpha \)。

搜索完成后: 在搜索过程结束时,对于每个连接,根据其 Softmax 概率最高的 \( \alpha \) 值,选择对应的单一操作作为最终的架构。然后,需要根据这个确定的离散架构从头训练最终模型。

DARTS 的主要贡献:
⚝ 将离散的 NAS 问题松弛为连续问题,并使用梯度下降进行优化,极大地提高了搜索效率,将搜索时间从几百 GPU 天缩短到几个 GPU 天。
⚝ 提出了双层优化框架来处理架构参数和模型权重之间的依赖关系。
⚝ 搜索到的单元结构在图像分类和序列任务上都取得了很好的效果。

局限性:
性能坍塌(Performance Collapse): 在搜索的后期,所有操作的 \( \alpha \) 值可能趋于集中在少数几种操作上,甚至出现跳跃连接(Skip Connection)占据主导地位的情况,导致搜索空间退化,最终搜索到的架构性能不如预期或在大型数据集上迁移性变差。
内存消耗: 需要同时维护所有候选操作的权重,对于大型搜索空间可能消耗大量内存。
近似梯度: 用于更新 \( \alpha \) 的梯度是近似的,可能不是最优方向。

尽管存在性能坍塌等问题,DARTS 的思想启发了大量后续的基于梯度的高效 NAS 方法研究。

3.4 基于参数共享的代表:ENAS

基于参数共享(Parameter Sharing)的 NAS 方法旨在通过在不同候选架构之间共享权重,来避免从头训练每个候选架构的昂贵过程。ENAS (Efficient Neural Architecture Search) [⑤] 是这一思想的代表性工作,它结合了参数共享和强化学习。

3.4.1 超网 (Supernet) 概念

ENAS 的核心是训练一个大型的“超网”(Supernet),这个超网包含了搜索空间中所有可能的子网络作为其子图。
超网结构: 超网是一个有向无环图(DAG),其节点代表计算层或操作的输出,边代表数据流。每个节点可能连接到多个后续节点,每条边可能代表多种候选操作。任何一个候选架构都是超网中的一条有效路径或子图。
权重共享: 超网中的所有候选操作和连接共享同一组权重。这意味着超网中的参数量远小于独立训练所有候选架构的总和。

3.4.2 RL 控制器与超网训练

ENAS 仍然使用一个 RNN 控制器,但与 NASNet 不同的是,控制器不再指导从头训练子网络,而是指导如何从已训练的超网中“采样”一个子网络。
训练超网权重: 首先,训练超网的权重。在训练过程中,每次迭代(Iteration)都从超网中随机采样一个子网络,并只更新这个子网络涉及到的超网权重。通过这种方式,超网中的权重被训练得能够适应其中采样出的各种子网络。
训练控制器: 控制器的任务是学习如何采样出在验证集上性能最佳的子网络。控制器根据采样的子网络在验证集上的表现获得奖励信号,并使用策略梯度更新自身的参数。
交替训练: 超网权重和控制器是交替训练的。通常先训练几步超网权重,再训练一步控制器,如此循环。

ENAS 的训练流程:
阶段 1:训练超网: 固定控制器,让其随机采样子网络,使用训练集数据训练这些子网络涉及到的超网权重。目标是让超网的权重对于其中大部分子网络都能表现良好。
阶段 2:训练控制器: 固定超网权重,使用训练集数据(或训练集的一个子集)更新超网中的 Batch Normalization 等统计量,然后使用验证集数据和强化学习训练控制器,使其倾向于采样出在验证集上奖励更高的子网络。

奖励函数: 控制器的奖励通常是采样的子网络在验证集上的准确率。

3.4.3 优点与不足

优点:
搜索效率高: 由于避免了从头训练每个子网络,通过共享权重,ENAS 大幅提高了搜索效率,通常只需要几十 GPU 小时或几天。
降低计算资源: 只需维护一个超网的权重,内存和计算开销远小于独立训练。

不足:
超网训练挑战: 训练一个能够有效表示所有子网络性能的超网本身是一个挑战。共享权重可能导致不同子网络之间的干扰。
参数共享的局限性: 共享权重可能并不能完美地反映子网络独立训练时的真实性能排名,可能导致找到的架构不是最优的。
RL 的采样过程: 仍然依赖于 RL 的采样,不如基于梯度的搜索那样直接。

ENAS 是参数共享思想的早期成功实践,其提出的超网概念对后续的高效 NAS 研究(尤其是 One-Shot NAS [⑥] 方向)产生了深远影响。

3.5 高效NAS方法:ProxylessNAS, Single Path One-Shot NAS等

在 NASNet 和 AmoebaNet 证明了自动化搜索的潜力、DARTS 和 ENAS 显著提升了搜索效率之后,研究人员继续探索更高效、更实用的 NAS 方法。本节将简要介绍几种代表性的高效 NAS 方法。

3.5.1 ProxylessNAS

ProxylessNAS [⑦] 是基于梯度搜索 DARTS 的改进,其核心思想是直接在目标硬件上进行搜索,并将硬件延迟等指标纳入搜索目标。
直接搜索: ProxylessNAS 避免了在代理任务(Proxy Task)上搜索(如 CIFAR-10),而是直接在目标数据集(如 ImageNet)上搜索。
路径级别的二值化架构参数: 不同于 DARTS 中每个操作都有一个连续权重,ProxylessNAS 在每条边上的操作选择上引入二值(Binary)的架构参数。在训练过程中,使用 Gumbel-Softmax 或 Straight-Through Estimator 等技术使得离散的二值选择近似可导。
硬件感知: 通过测量或预测不同操作在目标硬件上的延迟或内存占用,将这些硬件约束直接融入到损失函数或奖励函数中,从而搜索出满足硬件限制的架构。
内存效率: ProxylessNAS 通过仅激活和训练超网中的一条路径来减少内存消耗,而不是同时训练所有并行路径。

ProxylessNAS 使得 NAS 更贴近实际部署需求,能够直接搜索适用于特定硬件平台的模型。

3.5.2 Single Path One-Shot NAS (SPOS)

Single Path One-Shot NAS (SPOS) [⑧] 进一步简化了 One-Shot NAS 的超网训练过程。
单路径训练: SPOS 不训练一个包含所有可能路径的复杂超网,而是只训练一个超网,每次迭代只激活和更新超网中的一条随机采样路径的权重。
架构搜索: 在超网训练完成后,使用简单的搜索策略(如演化算法或随机搜索)在训练好的超网中搜索最佳路径(即子网络)。由于超网权重已经基本固定,评估一个子网络的性能只需在验证集上进行一次前向传播,而无需额外训练。
效率: SPOS 进一步降低了 One-Shot NAS 的训练和搜索成本。

SPOS 表明,即使是训练一个相对简单的共享权重的超网,也能为架构搜索提供一个有效的性能评估基础。

3.5.3 其他高效方法概述

除了上述方法,高效 NAS 领域还有许多其他进展:
ENAS 的改进: 对 ENAS 的超网训练和控制器优化进行改进,例如使用更好的超网结构、更稳定的 RL 训练或结合梯度信息。
更高效的 One-Shot NAS: 提出各种更有效的超网训练和子网络评估策略,如利用知识蒸馏(Knowledge Distillation)[⑨] 辅助超网训练,或改进权重共享方式。
零成本 NAS (Zero-Cost NAS): 探索不进行任何训练(甚至不进行一次前向传播)即可预测架构性能的指标 [⑩],从而实现超高速的架构筛选。这通常依赖于分析网络结构的初始化状态或基于图论的指标。
基于预测器的 NAS (Predictor-based NAS): 训练一个元模型(Meta-model)来预测给定架构的性能,然后使用这个预测器来指导搜索过程 [⑪]。这避免了对候选架构进行实际训练,但需要大量已训练的架构-性能对数据来训练预测器。

这些高效 NAS 方法的发展,使得 NAS 从一个纯粹的学术研究方向逐渐走向实用化,为自动化模型设计提供了更多可能性。


参考文献 (References):

① Zoph, Barret, and Quoc V. Le. "Neural architecture search with reinforcement learning." arXiv preprint arXiv:1611.01578 (2016).
② Williams, Ronald J. "Simple statistical gradient-following algorithms for connectionist reinforcement learning." Machine learning 8.3-4 (1992): 229-256.
③ Real, Esteban, et al. "AmoebaNet: Evolving scalable neuralnets." Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (2019): 8605-8614.
④ Liu, Hanxiao, Karen Simonyan, and Yiming Yang. "DARTS: Differentiable architecture search." arXiv preprint arXiv:1806.09055 (2018).
⑤ Pham, Hieu, et al. "Efficient neural architecture search via parameter sharing." arXiv preprint arXiv:1802.03268 (2018).
⑥ Bender, Gabriel, et al. "Understanding and improving one-shot neural architecture search." arXiv preprint arXiv:1810.05722 (2018).
⑦ Cai, Han, et al. "Proxylessnas: Direct neural architecture search on target task and hardware." arXiv preprint arXiv:1812.00332 (2018).
⑧ Guo, Zichao, et al. "Single Path One-Shot Neural Architecture Search." European Conference on Computer Vision. Springer, Cham, 2020.
⑨ Hinton, Geoffrey, Oriol Vinyals, and Jeff Dean. "Distilling the knowledge in a neural network." arXiv preprint arXiv:1503.02531 (2015).
⑩ Mellor, Jack, et al. "Neural architecture search without training." arXiv preprint arXiv:2006.04646 (2020).
⑪ Wen, Wei, et al. "Neural architecture search on imagenet with differentiable automl." arXiv preprint arXiv:1904.06058 (2019).

4. 面向特定任务的神经架构搜索 (NAS for Specific Tasks)

4.1 图像分类 (Image Classification)

神经网络架构搜索(NAS)在图像分类任务上取得了显著的成功,很大程度上是因为图像分类作为计算机视觉领域的基础任务,拥有大量公开数据集(如ImageNet),且模型性能评估标准相对明确(通常是 Top-1/Top-5 准确率)。许多早期的NAS方法都是在图像分类任务上进行验证和推广的,尤其是在 CIFAR-10 和 ImageNet 数据集上。图像分类任务的成功应用也为NAS在其他领域的发展奠定了基础。

4.1.1 NAS在图像分类上的成功应用

NAS最早期和最具影响力的成果之一就是在图像分类任务上,特别是通过搜索卷积神经网络(CNN)的结构。手动设计的CNN,如VGG、ResNet、Inception等,已经取得了巨大的成就,但设计一个高性能的CNN往往需要大量的专业知识和反复试验。NAS的出现,使得自动化寻找更优的CNN架构成为可能。

代表性成果: 许多NAS算法在 ImageNet 等标准数据集上搜索到的模型,其性能已经超越了当时许多顶尖的手动设计模型,同时可能在参数量或计算量上有所优化。例如,NASNet-A 在 ImageNet 上达到了很高的准确率,展示了NAS的潜力。

推动了高效模型设计: NAS不仅仅找到了高性能的大模型,也极大地推动了面向移动端和嵌入式设备的高效模型设计,如 MobileNet 系列、EfficientNet 系列等,这些模型的设计或灵感都受益于NAS的思想或直接通过NAS搜索得到。

4.1.2 常用搜索空间 (Search Space)

在图像分类任务中,常用的搜索空间主要集中在卷积神经网络的结构设计上。

整网结构搜索空间 (Whole Network Search Space):
▮▮▮▮这是一种直接搜索整个网络连接方式和层类型的搜索空间。早期的一些NAS方法采用了这种方式,例如直接搜索不同层之间的连接关系、层的类型(卷积、池化等)以及层的参数(滤波器数量、步长等)。
▮▮▮▮⚝ 优点: 理论上非常灵活,可以探索各种新颖的网络结构。
▮▮▮▮⚝ 缺点: 搜索空间巨大,搜索难度非常高,通常需要巨大的计算资源。

基于单元的搜索空间 (Cell-based Search Space):
▮▮▮▮这是当前图像分类NAS中最流行和高效的搜索空间设计。其核心思想是设计一个或几个基础的“细胞”或“单元”(Cell),然后在整个网络中重复堆叠这些单元来构建最终的网络。通常有两种类型的单元:
▮▮▮▮ⓐ 普通单元 (Normal Cell): 输入和输出特征图分辨率相同。
▮▮▮▮ⓑ 归约单元 (Reduction Cell): 输入特征图分辨率高于输出特征图,通常用于降低空间维度(例如通过带步长的卷积或池化)。
▮▮▮▮搜索的任务就变成了搜索这些单元内部的连接方式和操作类型。例如,一个单元可以看作是一个有向无环图(DAG),节点是特征图,边是操作(如各种类型的卷积、池化等)。
▮▮▮▮⚝ 优点: 极大地减小了搜索空间,因为只需要搜索少数几个单元的结构,然后通过重复堆叠来构建深层网络。搜索到的单元可以在不同数据集和任务上复用或迁移。
▮▮▮▮⚝ 缺点: 限制了网络结构的多样性,整个网络结构强依赖于单元的重复模式。

层级搜索空间 (Hierarchical Search Space):
▮▮▮▮结合了前两种方法的思想,在不同层级上定义搜索空间。例如,顶层搜索整个网络的宏观结构(如阶段数量、每阶段堆叠的单元数量),底层搜索单元内部的微观结构。

基于模块的搜索空间 (Block-based Search Space):
▮▮▮▮类似于基于单元的方法,但搜索的基本单位是更通用的网络模块,如ResNet中的残差块、Inception块等,搜索它们之间的连接或修改其内部结构。

4.1.3 NAS算法在图像分类中的具体应用案例

许多经典的NAS算法最初都是在图像分类任务上得到验证:

NASNet: 开创性的基于强化学习和单元搜索的方法,在CIFAR-10和ImageNet上取得了很好的效果。
AmoebaNet: 使用演化算法进行单元搜索,在ImageNet上也表现出色。
DARTS: 基于梯度的一阶/二阶方法,可以直接在CIFAR-10上搜索单元结构,然后迁移到ImageNet。这种方法极大地提高了搜索效率。
EfficientNet: 虽然不是一个纯粹的NAS算法,但它使用了NAS的思想(复合缩放 Compound Scaling)并在一个预定义的搜索空间中搜索网络宽度、深度和分辨率的最优组合,取得了state-of-the-art的图像分类性能,并在后续版本中使用NAS搜索了更强的骨干网络。

在图像分类任务中,NAS的成功应用证明了自动化搜索高性能网络架构的可行性,并为后续在更复杂任务上应用NAS奠定了基础。

4.2 目标检测 (Object Detection)

目标检测任务相比图像分类更为复杂,它不仅需要识别图像中的物体类别,还需要精确定位物体的位置(通常通过边界框)。这引入了更多的结构设计挑战,例如多尺度特征的处理、检测头的设计、锚框(Anchor Box)的设计等。NAS在目标检测领域的应用通常集中在搜索骨干网络(Backbone)、特征融合网络(如特征金字塔网络 - FPN)或检测头(Detection Head)的结构。

4.2.1 NAS在目标检测中的应用场景

目标检测模型通常由以下几个主要部分组成:
骨干网络 (Backbone): 通常是预训练好的图像分类网络(如ResNet, Darknet等),用于从输入图像中提取多尺度特征。
特征融合网络 (Feature Fusion Network): 将骨干网络提取的不同尺度的特征图进行融合,以便检测不同大小的物体,FPN是典型的代表。
检测头 (Detection Head): 根据融合后的特征图预测目标的类别和边界框偏移。

NAS可以应用于以上一个或多个部分的搜索。

4.2.2 搜索骨干网络 (Searching for Backbone Networks)

一种直接的应用方式是使用NAS搜索专门用于目标检测的骨干网络。这些骨干网络可能与图像分类骨干网络有所不同,例如需要保留更多的空间信息,或者更有效地产生多尺度特征。

方法:
迁移搜索到的分类骨干: 直接使用在ImageNet等数据集上通过NAS搜索到的高性能分类骨干网络作为检测模型的Backbone。这种方法利用了迁移学习(Transfer Learning),简单有效。
在目标检测任务上搜索骨干: 直接在目标检测数据集(如COCO)上进行NAS,优化目标是检测性能(如mAP)。这通常需要更多计算资源,但也可能找到更适合检测任务的骨干结构。搜索空间通常仍然基于单元或模块。

4.2.3 搜索检测头和特征融合网络 (Searching for Detection Heads and Feature Fusion Networks)

除了骨干网络,检测头和特征融合网络的设计对目标检测性能也至关重要。NAS也可以用于搜索这些部分的结构。

检测头搜索: 搜索检测头中卷积层、全连接层(或其他自定义层)的数量、连接方式和参数。例如,搜索用于分类和回归的两个分支的结构。
特征融合网络搜索: 搜索如何融合来自骨干网络的不同尺度的特征图。例如,在FPN结构中,搜索不同层级特征图之间的连接方式、融合操作(如加法、 concatenation)、以及融合后特征图的处理方式。

4.2.4 目标检测任务带来的特有挑战

在目标检测任务上应用NAS面临一些额外的挑战:

多尺度问题: 目标检测需要处理不同大小的物体,要求网络能够有效地提取和利用多尺度特征。搜索空间需要能够表示和优化处理多尺度信息的结构(如FPN)。
计算成本高昂: 目标检测模型的训练和评估通常比图像分类更耗时,特别是对于大型数据集如COCO。这使得在目标检测任务上直接进行从头训练的NAS搜索变得计算成本极高。
评估指标复杂: 目标检测的评估指标(如mAP - mean Average Precision)比图像分类的准确率更复杂,且对边界框的精度敏感。这可能影响基于梯度的NAS方法,因为mAP是不可微的。通常需要在搜索过程中使用可微的代理损失,或者在性能评估阶段进行完整的mAP计算。
搜索空间设计: 如何设计一个既灵活又能表示多样化检测模型结构的搜索空间是一个挑战。需要考虑骨干、特征融合和检测头之间的协同优化。

为了应对这些挑战,研究者们提出了许多面向目标检测的NAS方法,例如 MnasFPN、EfficientDet(结合EfficientNet和NAS搜索的特征网络/检测头),这些方法通常会结合硬件感知(Hardware-aware)或多目标优化的思想,平衡检测精度和计算效率。

4.3 语义分割 (Semantic Segmentation)

语义分割任务要求对图像中的每一个像素进行分类,识别它属于哪个预定义的类别。这同样需要网络具备精细的空间感知能力和丰富的上下文信息。典型的语义分割网络(如FCN, U-Net, DeepLab系列)通常包含一个编码器(Encoder)用于提取特征并逐步减小空间分辨率,以及一个解码器(Decoder)用于恢复空间分辨率并将特征映射回像素级别的类别预测。NAS在语义分割领域的应用主要集中在搜索编码器和解码器的结构。

4.3.1 NAS在语义分割中的应用场景

与目标检测类似,语义分割模型也可以被分解为不同的模块,NAS可以针对这些模块进行搜索:

搜索编码器 (Searching for Encoder):
▮▮▮▮通常使用在图像分类任务上预训练好的网络作为编码器,或者使用NAS搜索得到的分类骨干。但为了语义分割任务,可能需要对编码器进行修改,例如调整下采样率(Stride),使用空洞卷积(Dilated Convolution / Atrous Convolution)来扩大感受野而不损失分辨率。NAS可以搜索这些修改的方式或搜索专门的编码器结构。

搜索解码器 (Searching for Decoder):
▮▮▮▮解码器是语义分割任务中的关键部分,负责将编码器提取的低分辨率、高语义特征恢复到原始图像分辨率,并进行像素级别的分类。解码器的设计多种多样,包括简单的上采样、跳跃连接(Skip Connections)、特征融合模块(如 ASPP - Atrous Spatial Pyramid Pooling)等。NAS可以在解码器部分探索不同的上采样策略、特征融合方式、模块连接等。

搜索跳跃连接 (Searching for Skip Connections):
▮▮▮▮U-Net等结构的成功表明,将编码器中的早期、高分辨率特征与解码器中的晚期、低分辨率特征相结合(跳跃连接)对于提升分割精度至关重要。NAS可以搜索不同编码器层与解码器层之间的跳跃连接模式以及连接上进行的操作。

4.3.2 语义分割任务带来的特有挑战

在语义分割任务上应用NAS也面临一些特定的挑战:

保留空间信息: 语义分割对空间精度要求很高,需要网络在提取高级语义信息的同时,尽可能保留空间细节。过度下采样或不当的特征融合都可能损害性能。搜索空间需要能够表示那些有助于保持空间信息的结构。
上下文信息聚合: 有效聚合不同尺度的上下文信息对于识别图像中的物体和场景至关重要。空洞卷积、空间金字塔池化等技术被广泛应用。NAS需要搜索这些上下文聚合模块的最优结构和组合方式。
计算与内存成本: 高分辨率输入图像和逐像素预测导致语义分割模型通常需要较高的计算和内存。在大型数据集(如Cityscapes)上进行NAS搜索计算成本也很高。
复杂的数据集与评估: 语义分割数据集通常包含精细的像素级标注,数据集规模可能很大。评估指标(如Mean IoU - Intersection over Union)同样对空间精度敏感。

针对语义分割的NAS研究也在不断发展,例如 Auto-DeepLab 等方法尝试联合搜索骨干网络和ASPP等模块的结构,在 Cityscapes 等数据集上取得了不错的效果。这些方法通常也会借鉴图像分类NAS中的高效搜索策略,如基于单元或参数共享的方法。

4.4 自然语言处理 (Natural Language Processing - NLP)

自然语言处理(NLP)任务涉及处理文本和序列数据,与图像处理任务的网络结构有显著差异。在NLP领域,循环神经网络(RNN)、长短期记忆网络(LSTM)、门控循环单元(GRU)以及近些年大放异彩的Transformer及其变种是主流模型。NAS在NLP领域的应用主要集中在搜索循环单元的结构、序列模型层之间的连接方式、以及Transformer模型中的关键组件(如注意力机制、前馈网络)。

4.4.1 NAS在NLP中的应用场景

搜索循环单元结构: 早期的NLP模型大量使用RNN及其变体。NAS可以用来搜索更高效或性能更好的循环单元结构,例如搜索LSTM或GRU中门控机制的连接方式和激活函数,以取代手动设计的单元。RL-based NAS(如第一个NAS论文)就曾应用于搜索RNN单元。

搜索序列模型结构: 搜索RNN或LSTM层之间的连接方式,如堆叠多层、使用跳跃连接等。

搜索Transformer结构: Transformer模型是当前NLP领域的主流。它的结构非常灵活,包括多头注意力机制、位置编码、前馈网络、残差连接和层归一化等。NAS可以用于搜索:
▮▮▮▮⚝ 注意力机制的变体:例如搜索局部注意力、稀疏注意力等不同的注意力模式。
▮▮▮▮⚝ 前馈网络结构:搜索前馈网络中层的数量、隐藏单元数量、激活函数等。
▮▮▮▮⚝ 层之间的连接:搜索Encoder或Decoder内部不同块之间的连接方式,或者不同Encoder/Decoder层之间的连接(如果不是简单的顺序堆叠)。
▮▮▮▮⚝ 整个Transformer模型的缩放:类似于EfficientNet,NAS可以用于搜索模型深度、宽度、注意力头数等的最佳组合。

4.4.2 NLP任务带来的特有挑战

将NAS应用于NLP任务面临一些与图像任务不同的挑战:

序列数据处理: 文本数据是变长的、序列依赖性强。传统的NAS方法可能需要调整以适应序列模型的特性。
计算成本: 大型预训练语言模型(如BERT, GPT系列)计算成本极高,直接在这些模型上进行端到端NAS搜索通常不可行。研究往往集中在搜索部分关键模块的结构,或者利用参数共享、性能预测等高效NAS技术。
搜索空间设计: 如何设计一个既能表示多样化序列模型结构(RNN/LSTM变体、Transformer变体)又相对紧凑的搜索空间是一个挑战。
任务多样性: NLP任务非常多样化,包括文本分类、机器翻译、问答、文本生成等。为特定任务搜索最优结构可能比搜索通用骨干更有效,但也增加了搜索的复杂度。

尽管面临挑战,NAS在NLP领域的应用也取得了一些进展。例如,通过NAS搜索得到的Transformer变体在某些任务上表现优异,或者搜索得到更高效的模型以适应部署需求。

4.5 其他任务:语音、推荐系统等 (Other Tasks: Speech, Recommender Systems, etc.)

神经架构搜索的理念是通用的,可以应用于任何需要设计神经网络结构的深度学习任务。除了上述典型的计算机视觉和自然语言处理领域,NAS也在语音处理(Speech Processing)、推荐系统(Recommender Systems)、图神经网络(Graph Neural Networks - GNNs)、医学影像分析、时间序列预测等众多领域得到了探索和应用。

4.5.1 语音处理 (Speech Processing)

语音处理任务包括语音识别(Automatic Speech Recognition - ASR)、语音合成(Text-to-Speech - TTS)、说话人识别等。这些任务通常处理序列数据(声学特征序列或文本序列),并可能结合CNN(用于局部特征提取)、RNN/LSTM(用于序列建模)和Transformer(用于全局上下文建模)等多种网络结构。

应用场景: NAS可以用于搜索声学模型或语言模型的结构。例如,搜索ASR系统中声学模型的卷积层、循环层或注意力层的数量和连接方式;搜索TTS系统中声学模型或声码器的结构。

挑战: 语音数据的变长性和领域特有的声学特性。实时性要求高的应用还需要考虑模型的计算延迟。

4.5.2 推荐系统 (Recommender Systems)

推荐系统通常处理高度稀疏、高维的用户-物品交互数据,并可能融合用户、物品的特征。神经网络在推荐系统中用于学习用户和物品的表示、预测用户偏好等。

应用场景: NAS可以用于搜索推荐模型的核心结构,如用户/物品特征的Embedding层维度、交互层的连接方式、预测网络的层数和宽度等。特别是在深度学习推荐模型(如Wide & Deep, DeepFM, DLRM)中,NAS可以优化模型的Embedding部分、多层感知机(MLP)部分或特征交互模块。

挑战: 数据稀疏性、高维特征、以及对实时性/召回率/排序精度的多目标优化要求。搜索空间的设计需要考虑推荐系统特有的数据结构和模型组成。

4.5.3 其他领域

图神经网络 (GNNs): NAS可以用于搜索GNNs中的图卷积层、聚合函数、跳跃连接等,以优化在图结构数据上的任务性能(如节点分类、图分类、链接预测)。
时间序列预测 (Time Series Forecasting): 搜索适用于时间序列建模的网络结构,如RNN、LSTM、Transformer变体或专门设计的时序卷积网络。
医学影像分析 (Medical Image Analysis): 应用于医学图像的分类、分割、目标检测等任务,通常需要处理三维数据,搜索空间和计算成本是重要挑战。

4.5.4 总结

NAS的普适性使其能够被应用于各种需要定制神经网络结构的任务。核心思想是根据任务的特点定义合适的搜索空间,并结合高效的搜索策略和性能估计方法来寻找最优架构。不同任务带来的数据特性、模型需求、评估指标和计算约束都要求在设计NAS系统时进行相应的调整和优化。

5. 面向硬件约束的神经架构搜索

本章将聚焦于神经架构搜索(Neural Architecture Search - NAS)如何适应并优化模型以在资源受限的硬件平台上高效运行。随着深度学习模型日益复杂,如何在移动设备、嵌入式系统或边缘计算(Edge Computing)设备上部署这些模型成为一个关键挑战。手动调整模型以满足这些平台的延迟、内存或能耗限制既耗时又需要大量的专业知识。面向硬件约束的NAS应运而生,旨在自动化地发现既能保持高性能又满足特定硬件限制的神经网络架构。

5.1 移动端与边缘设备上的挑战

移动设备和边缘计算平台具有与服务器级硬件(如高性能GPU集群)截然不同的计算环境。理解这些挑战是进行面向硬件的NAS的基础。

5.1.1 计算、内存和能耗限制

① 计算能力(Computation Capacity)
▮▮▮▮⚝ 服务器级GPU通常具有数千个核心,提供强大的并行计算能力。
▮▮▮▮⚝ 移动端或边缘设备(如手机、智能摄像头、物联网设备)上的处理器(CPU、DSP、NPU、小型GPU等)计算能力相对有限,原始浮点运算速度、缓存大小和带宽都远不及服务器硬件。
▮▮▮▮⚝ 执行一个复杂操作(如卷积)所需的实际时间(延迟 - Latency)在不同硬件上差异巨大。仅仅依靠浮点运算次数(FLOPs)或乘加操作数(MACs)来衡量模型复杂度是不够的,需要考虑硬件平台特定的运行效率。

② 内存限制(Memory Constraint)
▮▮▮▮⚝ 服务器通常配备数百GB甚至数TB的内存(RAM)以及大容量显存(VRAM)。
▮▮▮▮⚝ 移动设备和边缘设备的内存资源通常非常有限,可能只有几百MB甚至几十MB。
▮▮▮▮⚝ 这限制了模型可以使用的参数数量(模型大小)以及运行时需要占用的内存(激活值、中间结果等)。大型模型可能根本无法加载或运行在这些设备上。

③ 能耗限制(Energy Consumption)
▮▮▮▮⚝ 服务器在功耗方面相对宽松,可以消耗较高的功率。
▮▮▮▮⚝ 移动设备和边缘设备通常依赖电池供电或具有严格的能耗预算。高能耗的模型会迅速耗尽电池,或导致设备过热、不稳定。
▮▮▮▮⚝ 模型执行的计算量与能耗直接相关,但不同操作的能耗效率在不同硬件上也有差异。

5.1.2 传统模型设计的局限性与迁移的挑战

① 手动优化困难:
▮▮▮▮⚝ 专家需要深入了解硬件架构的特性,并对模型结构进行细粒度的调整(如修改层类型、核大小、通道数等)以优化性能指标(延迟、能耗)。这是一个耗时且需要高度专业知识的过程。
▮▮▮▮⚝ 针对一个硬件平台优化的模型可能在另一个平台上表现不佳,需要重复优化过程。

② 性能指标不匹配:
▮▮▮▮⚝ 传统的NAS主要以准确率(Accuracy)或计算量(FLOPs)为主要优化目标。然而,FLOPs与真实硬件延迟之间并非线性关系,且忽略了内存访问、并行度、特定硬件指令集等因素。
▮▮▮▮⚝ 一个低FLOPs的模型在某些硬件上可能比预期的要慢,反之亦然。直接以FLOPs或MACs为代理指标进行搜索,找到的模型可能并非真实硬件上的最优解。

5.2 考虑延迟和内存的搜索空间

为了让NAS能够找到适用于特定硬件的架构,搜索空间的设计需要进行调整,以包含那些在目标硬件上表现高效的操作和结构,并能直接或间接地反映硬件约束。

5.2.1 硬件相关的操作和结构

① 引入硬件高效操作:
▮▮▮▮⚝ 一些操作在特定硬件上可能比其他操作效率更高。例如,分组卷积(Group Convolution)和深度可分离卷积(Depthwise Separable Convolution)通常在移动端硬件上比标准卷积更高效,因为它们减少了计算量和内存访问。
▮▮▮▮⚝ 搜索空间可以优先包含或仅包含这些操作。例如,DARTS或其变种中的操作集可以被替换为移动端友好的操作。

② 细粒度结构调整:
▮▮▮▮⚝ 搜索空间可以允许更细粒度的结构调整,例如搜索每一层的通道数(Channel Number)、核大小(Kernel Size)、步长(Stride)等。
▮▮▮▮⚝ 还可以搜索不同类型的连接,例如残差连接(Residual Connection)、跳跃连接(Skip Connection)等,以及它们的应用位置。

5.2.2 将硬件指标融入搜索空间设计

① 结构编码:
▮▮▮▮⚝ 传统的搜索空间编码可能只关注逻辑结构。面向硬件的搜索空间编码需要能够方便地映射到硬件性能指标。
▮▮▮▮⚝ 例如,一个架构的编码不仅包含层类型和连接方式,还可以隐含或显式地包含其参数量和预估的计算量。

② 基于模块的设计:
▮▮▮▮⚝ 设计由硬件友好模块组成的搜索空间。这些模块本身可能已经在目标硬件上进行过基准测试(Benchmark),知道它们的近似延迟和能耗。
▮▮▮▮⚝ NAS搜索的是如何组合这些模块,从而更容易控制整体模型的硬件性能。

③ 考虑带宽和内存访问模式:
▮▮▮▮⚝ 搜索空间设计时需要考虑数据在内存和计算单元之间移动的成本。例如,一个宽度较窄但深度较深的网络可能比一个宽度较宽但深度较浅的网络更节省内存带宽。
▮▮▮▮⚝ 一些研究尝试将内存访问成本(Memory Access Cost - MAC)作为搜索空间的约束或评估指标之一。

5.3 多目标NAS (Multi-objective NAS)

传统的NAS通常以单一目标(如准确率)进行优化。面向硬件约束时,我们需要同时优化至少两个甚至更多相互冲突的目标,例如最大化准确率同时最小化延迟或模型大小。这构成了多目标NAS问题。

5.3.1 准确率与硬件指标的权衡

① 帕累托最优解(Pareto Optimal Solutions):
▮▮▮▮⚝ 在多目标优化中,通常不存在一个单一的最优解,而是存在一组帕累托最优解。
▮▮▮▮⚝ 一个解是帕累托最优的,如果在不降低任一目标(如准确率)的情况下,无法提升其他任一目标(如降低延迟)。
▮▮▮▮⚝ 多目标NAS的目标是找到靠近帕累托前沿(Pareto Front)的架构集合,为用户提供在不同权衡点上的选择。

② 优化策略:
▮▮▮▮⚝ 加权求和法(Weighted Sum):将多个目标函数通过加权合并成一个单一目标函数进行优化。
▮▮▮▮\[ L_{total} = L_{accuracy} + \alpha \cdot L_{latency} + \beta \cdot L_{size} \]
▮▮▮▮▮▮▮▮❶ 其中 \( L_{accuracy} \) 是基于准确率的损失,\( L_{latency} \) 是基于延迟的损失,\( L_{size} \) 是基于模型大小的损失,\( \alpha \) 和 \( \beta \) 是权重系数。
▮▮▮▮▮▮▮▮❷ 缺点是难以确定合适的权重系数,且这种方法不一定能找到帕累托前沿上的所有解,特别是对于非凸前沿。
▮▮▮▮⚝ 基于约束的方法(Constraint-based Method):将一个目标作为主要优化目标,其他目标作为约束条件。例如,最大化准确率,但要求延迟低于某个阈值 \( D_{max} \) 且模型大小小于 \( M_{max} \)。
▮▮▮▮\[ \max Accuracy \quad s.t. \quad Latency \le D_{max}, \quad Size \le M_{max} \]
▮▮▮▮⚝ 演化算法(Evolutionary Algorithms):自然支持多目标优化。可以维持一个种群,每次迭代中基于多个目标对个体(架构)进行评估、选择、交叉和变异,逐步逼近帕累托前沿。例如,NSGA-II等算法常用于多目标NAS。

5.3.2 如何在搜索过程中评估硬件指标

① 直接测量(Direct Measurement):
▮▮▮▮⚝ 最准确的方法是在目标硬件上实际部署并运行候选架构,测量其真实的延迟、能耗或内存占用。
▮▮▮▮⚝ 挑战:部署和测量单个架构的成本非常高,尤其是对于大型搜索空间和迭代式搜索策略。需要在NAS循环中频繁进行。

② 代理模型(Proxy Models)/性能预测器:
▮▮▮▮⚝ 训练一个预测模型来预测给定架构在目标硬件上的性能指标(如延迟)。
▮▮▮▮⚝ 构建过程:
▮▮▮▮▮▮▮▮❶ 收集一组不同的网络架构样本及其在目标硬件上的实际测量指标,形成数据集。
▮▮▮▮▮▮▮▮❷ 设计架构的特征表示(如层类型、连接方式、通道数、参数量、FLOPs等)。
▮▮▮▮▮▮▮▮❸ 训练一个预测模型(可以是线性回归、树模型、神经网络等)来学习从架构特征到硬件指标的映射。
▮▮▮▮⚝ 在NAS搜索过程中,对于每个候选架构,使用训练好的预测器快速估计其硬件指标,避免昂贵的实际测量。
▮▮▮▮⚝ 挑战:预测器的准确性依赖于训练数据的覆盖度和特征表示的有效性;预测器本身也需要计算资源。

③ 硬件模型(Hardware Models)/分析模型:
▮▮▮▮⚝ 构建一个目标硬件的性能模型,通过分析给定架构在该硬件上的计算图和数据流来理论或近似地计算延迟或能耗。
▮▮▮▮⚝ 这种方法不需要实际运行,但需要深入了解硬件架构细节,且模型的准确性可能受限于其抽象程度。

④ 操作延迟查找表(Operation Latency Lookup Table):
▮▮▮▮⚝ 预先在目标硬件上测量各种基本操作(如不同核大小、步长、通道数的卷积、池化、激活函数等)的延迟,构建一个查找表。
▮▮▮▮⚝ 对于一个复杂的网络架构,通过累加其组成操作的延迟来估计总延迟。
▮▮▮▮⚝ 这种方法简单高效,但忽略了操作之间的依赖性、并行度、内存访问模式以及硬件加速器的调度方式,可能不够准确。

5.4 硬件感知的NAS方法

为了有效地进行面向硬件的NAS,需要将硬件约束或指标深度集成到搜索策略和性能评估过程中,形成硬件感知的NAS方法。

5.4.1 将硬件指标融入搜索过程

① 奖励函数设计(Reward Function Design):
▮▮▮▮⚝ 在基于强化学习的NAS中,控制器的奖励函数可以同时包含准确率和硬件指标项。
▮▮▮▮\[ Reward = Accuracy - \lambda \cdot Latency - \mu \cdot Size \]
▮▮▮▮▮▮▮▮❶ 其中 \( \lambda \) 和 \( \mu \) 是权衡准确率与硬件指标的系数。
▮▮▮▮▮▮▮▮❷ 控制器通过最大化这个综合奖励来学习生成架构的策略。

② 适应度函数设计(Fitness Function Design):
▮▮▮▮⚝ 在基于演化算法的NAS中,个体(架构)的适应度函数也可以是准确率和硬件指标的组合,或者使用多目标演化算法直接处理多个目标。

③ 可微分搜索空间中的硬件约束:
▮▮▮▮⚝ 在基于梯度的NAS(如DARTS)中,可以在优化目标中加入硬件指标的正则项。
▮▮▮▮\[ L_{total} = L_{task} (\alpha, w) + \gamma \cdot Latency(\alpha) \]
▮▮▮▮▮▮▮▮❶ 其中 \( L_{task} \) 是任务损失(如交叉熵),\( w \) 是模型权重,\( \alpha \) 是架构参数(表示操作的选择),\( Latency(\alpha) \) 是对架构 \( \alpha \) 延迟的估计,\( \gamma \) 是权衡系数。
▮▮▮▮▮▮▮▮❷ 延迟估计函数 \( Latency(\alpha) \) 需要是可微分的或可以通过梯度近似。常用的做法是使用一个可微分的延迟预测器。

5.4.2 考虑硬件指标的性能评估

① 硬件感知的权重共享(Hardware-aware Weight Sharing):
▮▮▮▮⚝ 在One-Shot NAS方法中,超网(Supernet)的训练方式可以考虑硬件指标。
▮▮▮▮⚝ 例如,在训练超网时,可以采样不同延迟或大小约束下的子网络进行训练,使得超网的权重对各种硬件约束下的子网络都能有较好的泛化能力。

② 硬件感知的预测器训练(Hardware-aware Predictor Training):
▮▮▮▮⚝ 专门为特定硬件平台训练高性能预测器,以更准确地估计候选架构的性能。
▮▮▮▮⚝ 预测器可以预测多个指标(延迟、能耗、内存),支持多目标优化。

③ 采样策略的偏置(Sampling Strategy Bias):
▮▮▮▮⚝ 在搜索过程中,可以设计采样策略,优先探索那些根据现有信息预测具有潜在高性能和满足硬件约束的架构区域。例如,在RL或演化搜索中,倾向于选择那些预测延迟低且准确率尚可的父代或探索邻近区域。

④ 渐进式搜索(Progressive Search):
▮▮▮▮⚝ 从简单的、计算量小的架构开始搜索,逐步增加复杂度,并在不同阶段评估硬件指标,剪枝掉那些明显不符合要求的方向。

通过将硬件约束或指标融入搜索空间的设计、多目标优化策略以及性能评估过程,硬件感知的NAS能够更有效地找到在目标硬件上实际高效运行的神经网络架构,显著降低了在边缘设备上部署高性能深度学习模型的难度。

6. 高效NAS技术与最新进展

本章将深入探讨神经架构搜索(NAS)领域在追求更高效率和性能方面涌现出的各种先进技术和研究方向。尽管早期的NAS方法展现了强大的架构搜索能力,但其高昂的计算成本一直是制约其广泛应用的主要瓶颈。因此,研究界和工业界持续投入精力,探索如何加速NAS过程,使其更加实用、可伸缩,并能适应多样化的应用场景。我们将详细剖析几种重要的技术路线,包括基于超网和权重共享的方法、网络态射、基于性能预测器的方法以及极具潜力的零成本NAS,最后探讨NAS在更广阔的自动化机器学习(AutoML)框架下的定位与融合。

6.1 超网与权重共享的深化研究

在第二章的性能估计部分,我们简要介绍了参数共享(Parameter Sharing)的思想,尤其是“一次性NAS”(One-Shot NAS)或基于超网(Supernet)的方法。其核心思想是构建一个包含搜索空间内所有可能子网络的巨大网络(即超网),并训练这个超网。训练完成后,任意一个子网络都可以通过从超网中继承权重而无需从头训练,从而极大地加速了子网络的性能评估过程。然而,超网训练本身面临诸多挑战,相关的深化研究旨在解决这些问题,进一步提升效率和性能。

6.1.1 超网训练的挑战

超网训练的有效性基于一个关键假设:从训练好的超网中提取的子网络的性能,应该与其独立从头训练时的性能高度相关。然而,在实践中,实现这一目标并非易事,面临以下主要挑战:

子网络之间的干扰 (Interference between Subnetworks): 超网中的不同子网络共享参数。当训练超网时,对某个子网络的参数更新可能会对其他子网络的性能产生不利影响。这种参数的相互干扰,可能导致某些子网络无法充分学习,其在超网中的表现无法真实反映其独立性能。

训练不公平性 (Training Unfairness): 在超网训练过程中,不同的子网络被采样和训练的频率可能不同,或者它们对共享参数的贡献程度不同。某些子网络路径可能因为训练更充分而表现更好,但这不一定是因为它们的结构本身更优,而是因为训练过程赋予了它们“不公平”的优势。这使得基于超网评估的子网络性能不再可靠。

共同适应 (Co-adaptation): 超网中的参数可能会共同适应于超网的特定训练策略和采样方式,而非适应于子网络的独立训练。这可能导致在超网中表现优秀的子网络,独立训练时性能反而下降。

灾难性遗忘 (Catastrophic Forgetting): 如果超网训练过程中,子网络的采样顺序或分布不当,后续训练的子网络可能会覆盖或“遗忘”前面训练好的子网络学到的有用信息,类似于连续任务学习中的灾难性遗忘问题。

6.1.2 改进的超网训练策略

针对上述挑战,研究者提出了多种改进的超网训练策略:

公平采样策略 (Fair Sampling Strategies): 为了确保不同子网络都能得到公平的训练机会,提出了各种采样方法。
▮▮▮▮ⓑ 均匀采样 (Uniform Sampling): 简单地从搜索空间中均匀随机采样子网络进行训练。
▮▮▮▮ⓒ 基于性能的采样 (Performance-based Sampling): 优先采样在验证集上表现较差的子网络,或者根据子网络在超网中的历史表现来调整采样概率,试图平衡训练进度。
▮▮▮▮ⓓ 渐进式训练 (Progressive Training): 从较小的子网络开始训练超网,然后逐渐增加更大、更复杂的子网络,或者从训练更重要的层(如靠近输出层)开始。

弹性网络 (Elastic Networks): 弹性网络是超网思想的一种深化和推广,尤其关注如何在一个训练好的网络中灵活地调整网络的宽度(通道数)、深度(层数)和分辨率(输入尺寸)。
▮▮▮▮ⓑ 概念: 训练一个“最大”网络,其中包含了不同宽度、深度、分辨率的子网络。通过特定的训练方法(如Once-for-All - OFA),使得训练完成后,可以从这个最大网络中快速提取出在不同硬件约束下(例如,不同的延迟、内存预算)最优的子网络,无需重新训练。
▮▮▮▮ⓒ 关键技术: 包括权重解耦、层采样、通道采样等技术,旨在让不同的子网络路径都能得到有效训练,并使其性能在提取后与独立训练相似。这种方法特别适用于面向硬件约束的NAS(详见第五章),因为它可以一次性训练出一个适用于多种硬件需求的“弹性”模型。

解耦架构搜索与权重训练 (Decoupling Architecture Search and Weight Training): 部分方法试图将架构搜索过程与超网的权重训练过程解耦。例如,先用一种策略训练超网,然后在搜索阶段固定超网权重,只搜索子网络结构,并直接评估其在固定超网上的性能。这简化了搜索过程,但依然依赖于超网权重的质量。

这些深化研究使得基于超网和权重共享的NAS方法更加高效和有效,成为当前NAS研究和应用的主流方向之一。

6.2 网络态射 (Network Morphism)

网络态射(Network Morphism)是一种在不破坏网络原有功能(或仅产生可接受的轻微变化)的前提下修改网络结构的技术。它提供了一种不同于随机初始化或从头训练的方式来生成新的网络架构。

6.2.1 定义与基本思想

定义: 网络态射是一组操作,可以将一个已训练好的神经网络 \(N\) 转换为另一个神经网络 \(N'\),同时保持 \(N\) 的输入-输出映射关系 \(f_N\) 与 \(N'\) 的输入-输出映射关系 \(f_{N'}\) 尽可能接近,即 \(f_{N'}(x) \approx f_N(x)\) 对于任意输入 \(x\) 成立。

基本思想: 核心在于通过一些“无损”或“近似无损”的结构修改操作来生成新的网络结构。这些操作通常基于恒等映射(identity mapping)的概念。例如,如果在一个网络层后面插入一个新的层,可以通过初始化新层的权重使其实现恒等映射,从而不改变网络的输出。如果需要调整通道数或神经元数量,则使用能够保持功能等价的方式进行(如复制或平均权重)。

6.2.2 常见的网络态射操作

添加层 (Add Layer): 在现有层之间插入新的层。新层的权重被初始化,使其执行恒等映射或近似恒等映射。例如,插入一个卷积层,其权重可以设置为一个能实现恒等映射的卷积核(如中心为1,其余为0的滤波器)。
添加神经元/通道 (Add Neuron/Channel): 在一个全连接层中增加神经元数量,或在一个卷积层中增加输出通道数。新增的神经元或通道的权重可以通过复制现有神经元/通道的权重并进行微小扰动,或者以其他方式初始化,以尽量不改变原有输出。
分裂神经元/通道 (Split Neuron/Channel): 将一个神经元或通道分裂成多个。例如,将一个神经元分裂成两个,并调整后续层的连接权重,使得这两个新神经元的输出之和等于原神经元的输出。
合并层 (Merge Layer): 合并两个相邻的层(如果功能允许)。这通常用于优化网络结构,使其更紧凑。

6.2.3 网络态射在NAS中的应用

网络态射本身不是一个完整的NAS算法,而是一种生成或修改架构的“工具”或“操作集”。它通常与其他搜索策略结合使用,尤其是在基于演化算法的NAS中:

作为变异操作 (Mutation Operation): 在演化算法中,从当前的“种群”中选择性能较好的父代网络,然后应用网络态射操作(如添加层、分裂神经元)生成新的子代网络。由于态射操作保持了父代网络的知识,子代网络往往会有一个良好的起点,可能只需要少量微调或继续训练,而不是从头开始。
结合权重继承 (Combined with Weight Inheritance): 网络态射生成的子代网络可以直接继承父代网络的权重(经过适当转换),这比随机初始化或简单的权重共享更直接地利用了已学习的知识。

网络态射的优势在于,它可以生成具有良好初始权重的候选架构,从而加速性能评估过程。然而,设计有效的态射操作需要仔细考虑,以确保功能保持和性能提升的可能性。

6.3 基于预测器的NAS (Predictor-based NAS)

基于预测器(Predictor-based NAS)的方法将NAS问题分解为两个阶段:首先,训练一个性能预测模型;然后,利用这个预测模型快速评估大量候选架构,从而指导搜索过程。

6.3.1 基本原理

核心思想: 避免对每个候选架构都进行完整的训练和验证,而是训练一个代理模型(Proxy Model),这个代理模型能够根据架构的描述(如结构信息)快速预测其在目标任务上的最终性能(如准确率、F1分数等)。
流程:
▮▮▮▮ⓒ 数据收集: 选择一部分有代表性的架构,对其进行完整训练,并记录其最终性能。构建一个数据集,其中每个样本包含一个架构的编码表示及其对应的真实性能。
▮▮▮▮ⓓ 预测器训练: 使用收集到的数据集训练一个预测模型 \(P\)。输入是架构的编码,输出是预测的性能值。预测器可以是任何回归模型,例如:
▮▮▮▮▮▮▮▮❺ 基于手工特征的线性模型或树模型。
▮▮▮▮▮▮▮▮❻ 基于序列模型(如RNN)处理架构的拓扑序列。
▮▮▮▮▮▮▮▮❼ 基于图神经网络(GNN)处理架构的图表示。
▮▮▮▮▮▮▮▮❽ 基于Transformer等更先进的模型。
▮▮▮▮ⓘ 搜索阶段: 使用某种搜索策略(如随机搜索、演化算法、贝叶斯优化等)在搜索空间中生成大量候选架构。对于每个生成的架构,不再进行完整训练,而是将其输入到训练好的预测器 \(P\) 中,快速获得其预测性能。
▮▮▮▮ⓙ 架构选择: 根据预测器给出的预测性能,选择预测性能最高的架构进行最终的完整训练和评估,以验证预测结果的准确性。

6.3.2 关键要素与挑战

架构编码 (Architecture Encoding): 如何将复杂的神经网络结构有效地编码成预测器能够理解的输入表示是一个关键问题。常见的编码方法包括:
▮▮▮▮ⓑ 序列编码: 将架构表示为操作序列或节点连接序列。
▮▮▮▮ⓒ 图编码: 将架构表示为计算图,其中节点代表操作,边代表数据流。
▮▮▮▮ⓓ 矩阵编码: 使用邻接矩阵等表示层之间的连接。

预测模型的选择与训练: 预测模型的选择取决于架构编码方式和任务。模型的复杂性需要权衡,过于简单的模型可能无法捕捉复杂的架构-性能关系,而过于复杂的模型可能容易过拟合小规模的架构-性能数据集。训练预测器的数据集规模通常远小于搜索空间的大小,预测器的泛化能力是重要挑战。

数据集偏差 (Dataset Bias): 用于训练预测器的数据集需要具有代表性。如果数据集中的架构分布与搜索空间中的实际最优架构分布存在偏差,预测器可能无法准确预测那些“有趣”的、未充分采样的区域的性能。

性能预测的准确性与相关性 (Accuracy and Correlation): 预测器不一定要精确预测绝对性能值,但其预测排序(即预测性能高的架构在真实性能上也高)对于指导搜索至关重要。如何提高预测器预测排序的相关性是研究重点。常用的评估指标是Kendall's Tau Rank Correlation。

6.3.3 优势与劣势

优势:
▮▮▮▮⚝ 显著加速搜索过程,因为预测评估远快于完整训练。
▮▮▮▮⚝ 允许在更大的搜索空间内探索。
▮▮▮▮⚝ 预测器可以学习到关于架构性能的一般规律,有助于理解架构设计。

劣势:
▮▮▮▮⚝ 需要一个初始的、耗时的数据收集阶段来训练预测器。
▮▮▮▮⚝ 预测器的准确性和泛化能力是瓶颈,错误的预测可能导致搜索方向错误。
▮▮▮▮⚝ 预测器本身的选择和训练引入了新的超参数调优问题。

基于预测器的NAS是一种有效的提速手段,特别是在搜索空间较大或目标任务训练成本很高的情况下。

6.4 零成本NAS (Zero-Cost NAS)

零成本NAS(Zero-Cost NAS),顾名思义,旨在实现无需任何训练(甚至无需一次梯度更新)即可评估候选架构的潜在性能。这是对传统NAS方法效率瓶颈的一种极端挑战和创新。

6.4.1 基本概念

核心思想: 假设一个良好的网络架构在其初始化状态下就应该表现出某些可测量的特性,这些特性与最终的训练性能高度相关。通过计算这些“零成本”指标,可以快速筛选掉潜在性能较差的架构。
实现方式: 对于一个给定的候选架构,在它未经训练(随机初始化)的状态下,使用少量(通常是一个或几个batch)输入数据进行一次前向和可能的后向计算,并基于网络权重、激活值、梯度等计算一个或多个指标。这些指标的计算成本远低于一次完整的训练迭代,更远低于完整训练周期。

6.4.2 关键零成本指标示例

研究者提出了多种不同的零成本指标,它们试图从不同角度捕捉架构的“优劣”:

连接敏感度 / SynFlow:
▮▮▮▮ⓑ 思想: 衡量网络在初始化状态下信息传递的效率或重要性。SynFlow计算的是一条路径上权重绝对值的乘积,并对所有路径求和(或近似计算)。
▮▮▮▮ⓒ 原理: 认为一个好的架构应该有清晰、重要的信息流路径,这些路径在训练前就能通过权重大小体现出来。对网络进行剪枝直到只剩一条路径,然后计算这条路径的指标。

NASWOT (Neural Architecture Search without Training):
▮▮▮▮ⓑ 思想: 分析网络在初始化状态下对输入数据的高维表达能力或线性可分性。
▮▮▮▮ⓒ 原理: 基于未经训练网络的输出在输入数据上的线性度(或通过核函数映射后的线性度)。具体可能涉及计算网络输出对输入的Jacobian矩阵的某些属性(如对数行列式)。认为具有更好线性可分能力的初始架构更容易通过训练收敛到高性能。

Jacobs Score:
▮▮▮▮ⓑ 思想: 衡量网络在初始化状态下提取丰富特征的能力。
▮▮▮▮ⓒ 原理: 基于网络某一层的输出对输入的Jacobian矩阵的对数行列式。高对数行列式意味着输入微小变化能导致输出较大、更独立的变化,暗示该层能产生多样化的特征。

GradNorm (Gradient Norm):
▮▮▮▮ⓑ 思想: 分析网络在初始化时梯度传播的特性。
▮▮▮▮ⓒ 原理: 计算网络在初始化时对某个输入和损失函数的梯度范数。认为合理的梯度范数和传播特性与易于训练和高性能相关。

6.4.3 优势与挑战

优势:
▮▮▮▮⚝ 极致的评估效率,评估一个架构只需极少的计算资源和时间。
▮▮▮▮⚝ 无需训练数据(或只需少量数据用于计算指标),对数据依赖性低。
▮▮▮▮⚝ 使在超大搜索空间内进行初步筛选或排序成为可能。

挑战:
▮▮▮▮⚝ 零成本指标与最终训练性能之间的相关性通常不如基于训练的评估方法高,且可能随数据集、任务或搜索空间变化较大。
▮▮▮▮⚝ 指标的理论基础尚不完善,解释性有待提高。
▮▮▮▮⚝ 找到一个普适性强、在各种场景下都能有效预测性能的零成本指标仍然是一个开放问题。

尽管存在挑战,零成本NAS代表了一个充满前景的方向,尤其是在资源受限或需要快速迭代搜索的场景下。它可以作为其他NAS方法(如超网、预测器)的预筛选步骤,进一步提升效率。

6.5 NAS与AutoML的集成

神经架构搜索(NAS)是自动化机器学习(AutoML)领域的一个重要组成部分。AutoML旨在自动化机器学习模型开发过程中的多个耗时且需要专家经验的环节,包括数据预处理、特征工程、模型选择、超参数优化以及模型部署等。将NAS与其他AutoML组件有效集成,能够构建更全面、更强大的自动化建模流水线。

6.5.1 AutoML管道中的NAS定位

在一个典型的AutoML工作流程中,NAS主要处于“模型选择”(或更精确地说,“模型结构搜索”)这一环节。它负责找到一个适合特定任务和数据的神经网络架构。然而,一个高性能的模型不仅依赖于优秀的架构,还需要合适的超参数(如学习率、批次大小、优化器类型)以及可能的数据增强策略。

6.5.2 NAS与其他AutoML组件的协同

与超参数优化 (Hyperparameter Optimization - HPO) 的集成:
▮▮▮▮ⓑ 串行集成: 最简单的方式是先用NAS找到最优架构,然后对这个固定架构进行超参数优化。或者,先用HPO找到一组好的训练超参数范围,再将这些超参数用于NAS过程中的架构评估。
▮▮▮▮ⓒ 联合优化: 更高级的集成方式是同时搜索架构和超参数。这可以视为一个更高维度的搜索问题。可以通过扩展搜索空间,或者使用能够同时探索架构和超参数的贝叶斯优化、演化算法等策略来实现。例如,某些One-Shot NAS方法可以在超网训练过程中引入超参数的弹性。

与数据增强 (Data Augmentation) 的集成:
▮▮▮▮ⓑ 自动化数据增强 (Automated Data Augmentation): 除了搜索模型架构,AutoML也关注搜索最优的数据增强策略。著名的工作如AutoAugment和PBA (Population Based Augmentation) 使用搜索算法(如强化学习或演化算法)来找到对特定任务最优的数据增强组合和参数。
▮▮▮▮ⓒ 联合搜索: 可以同时搜索架构和数据增强策略。一个找到的优秀架构可能与一套特定的数据增强方法更匹配。这同样增加了搜索空间的复杂度,需要更高效的搜索策略。

与特征工程和模型选择的集成:
▮▮▮▮⚝ 在更传统的机器学习中,AutoML也负责特征选择和模型类型选择(如选择线性模型、树模型或神经网络)。在深度学习背景下,NAS是神经网络模型选择和设计的自动化。一个更全面的AutoML系统可能首先决定是否使用深度学习,如果使用,再启动NAS。

6.5.3 构建全面的AutoML系统

将NAS、HPO、自动化数据增强等组件有机结合,目标是构建端到端的自动化机器学习平台。用户只需提供数据和任务定义,平台即可自动完成从数据预处理、模型搜索与优化到最终模型输出的整个流程。这大大降低了机器学习应用的门槛,加速了AI在各行业的落地。未来的研究将更加关注如何设计统一的搜索空间和搜索策略,能够高效地联合优化机器学习管道中的多个环节。

本章深入探讨了提升NAS效率的多种前沿技术,从改进的超网训练到无需训练的零成本评估。这些技术极大地推动了NAS的实用化进程。同时,理解NAS在AutoML大框架下的位置及其与其他组件的协同,对于构建未来的自动化AI系统至关重要。随着这些技术的不断发展和融合,我们离真正意义上的“自动化深度学习”又近了一步。

好的,同学们,很高兴能和大家一起深入探讨神经架构搜索(NAS)这个令人兴奋的领域。在本章节中,我们将放下前面章节中对理论和算法的深入剖析,转而关注NAS的实践层面。正如一名优秀的工程师或研究者,不仅要理解原理,更要知道如何将理论付诸实践,以及如何评估和比较不同方法的优劣。因此,我们将一同探索如何实现一个NAS系统、有哪些现成的工具可以使用,以及如何利用基准来客观评估NAS算法。

7. NAS的实践、工具与基准

7.1 实现NAS的考量

从头开始构建一个神经架构搜索(NAS)系统是一个复杂但极具启发性的过程。它不仅需要你对NAS的核心组件有深刻理解,还需要扎实的编程功底和丰富的实验管理经验。本节将讨论在实现NAS算法时需要考虑的关键方面。

7.1.1 定义并编码搜索空间 (Search Space)

实现NAS的第一步是确定并编码你想要探索的网络结构集合,即搜索空间(Search Space)。这通常涉及到定义构建块(building blocks)和它们之间的连接方式。

基于整网结构的搜索空间(Whole Network Search Space):
▮▮▮▮⚝ 这种空间定义比较直接,你可以定义诸如层类型(卷积层、全连接层、循环层等)、层参数(核大小、步长、通道数、激活函数等)以及层之间的连接关系(顺序、跳跃连接等)。
▮▮▮▮⚝ 实现时,你需要一种方式来表示一个完整的网络结构,例如使用列表、树结构或图结构。控制器或搜索算法需要能够生成这些表示。
▮▮▮▮⚝ 挑战: 整个网络的搜索空间通常非常巨大,难以高效搜索。

基于单元的搜索空间(Cell-based Search Space):
▮▮▮▮⚝ 这是目前非常流行的一种方式。你定义几种基本单元(例如,Normal Cell 和 Reduction Cell),然后在单元内部搜索最佳的操作组合和连接方式。整个网络由这些单元堆叠而成。
▮▮▮▮⚝ 实现时,你需要定义一个单元内部的图结构,节点代表特征图(feature maps),边代表操作(operations)(如卷积、池化、跳跃连接等)。搜索目标是在这些可能的边上选择具体操作。
▮▮▮▮⚝ 优势: 通过共享单元结构,大大减小了搜索空间的大小,提高了可搜索性。许多成功的NAS模型(如NASNet, PNASNet, DARTS)都采用了这种方法。

编码表示:
▮▮▮▮⚝ 无论哪种搜索空间,都需要将其编码成搜索算法能够处理的格式。例如,在RL-based NAS中,控制器可能生成一个表示网络结构的字符串或序列;在Gradient-based NAS中,搜索空间可能被表示为一个包含所有可能操作的“超网”(Supernet)。

7.1.2 实现搜索策略 (Search Strategy)

搜索策略负责在定义的搜索空间中探索,并找到表现较好的架构。不同的策略有不同的实现方式。

基于强化学习(RL):
▮▮▮▮⚝ 你需要实现一个控制器(通常是一个循环神经网络 RNN 或 Transformer),它根据当前状态(已生成的网络部分)预测下一个操作或连接。
▮▮▮▮⚝ 环境(Environment)是模型训练和评估的过程,奖励信号(Reward)通常是模型在验证集上的性能指标(如准确率 Accuracy)。
▮▮▮▮⚝ 你需要实现一个RL算法(如策略梯度 Policy Gradient)来训练这个控制器,使其能够生成更高奖励的网络架构。

基于演化算法(Evolutionary Algorithms):
▮▮▮▮⚝ 你需要维护一个种群(Population)的网络架构。
▮▮▮▮⚝ 实现变异(Mutation)和交叉(Crossover)操作来生成新的候选架构。变异可能包括随机改变层类型、连接方式、参数等;交叉可能涉及交换两个网络的部分结构。
▮▮▮▮⚝ 实现选择(Selection)机制,根据网络的性能(适应度 Fitness)来选择下一代种群。常用的有锦标赛选择(Tournament Selection)等。

基于梯度(Gradient-based):
▮▮▮▮⚝ 这是实现最复杂但通常最高效的方法之一。你需要构建一个“可微分”的搜索空间,通常是通过构建一个超网,其中包含所有可能的候选项,并通过一个权重(或称为架构参数 Architecture Parameters)来表示每个候选项被选择的概率。
▮▮▮▮⚝ 实现一个双层优化(Bi-level Optimization)过程:外层循环优化架构参数(通过验证集上的梯度),内层循环优化网络权重(通过训练集上的梯度)。
▮▮▮▮⚝ 这要求你的实现能够计算关于架构参数的梯度,这通常涉及一些技巧,如Gumbel-Softmax或可微分松弛(Differentiable Relaxation)。

基于随机搜索与贝叶斯优化:
▮▮▮▮⚝ 随机搜索(Random Search)实现最简单:只需随机生成架构并评估。
▮▮▮▮⚝ 贝叶斯优化(Bayesian Optimization)需要实现一个代理模型(Surrogate Model)(如高斯过程 Gaussian Process)来拟合“架构-性能”之间的关系,并实现一个采集函数(Acquisition Function)来选择下一个最有希望评估的架构点。

7.1.3 构建性能评估机制 (Performance Estimation)

评估候选架构的性能是NAS中最耗时的部分。高效的性能估计是加速NAS的关键。

从头训练(Training from Scratch):
▮▮▮▮⚝ 最直接的方法,每次生成一个新架构,就在数据集上从头开始训练并评估。
▮▮▮▮⚝ 实现: 编写标准的模型训练和评估代码,将其封装成一个函数或类,供搜索策略调用。
▮▮▮▮⚝ 挑战: 计算成本极高,通常不可行。

参数共享(Parameter Sharing):
▮▮▮▮⚝ 实现一个大型超网(Supernet),包含搜索空间中所有可能的连接和操作。训练超网,使得其中包含的任何子网络(Subnetwork)都能表现良好。评估时,从超网中抽取子网络,只需少量或无需额外训练即可评估。
▮▮▮▮⚝ 实现: 构建一个能够表示超网的数据结构,并实现超网的训练流程。根据具体的参数共享策略(如One-Shot NAS),训练方式可能有所不同。提取子网络的逻辑也需要实现。

代理任务(Proxy Tasks):
▮▮▮▮⚝ 在更小的数据集、更小的模型规模或更少的训练周期上训练候选架构来估计其在完整任务上的性能。
▮▮▮▮⚝ 实现: 调整你的训练代码,使其能够在缩小的规模下运行。确定代理任务的结果与最终任务结果的相关性。

性能预测器(Performance Predictors):
▮▮▮▮⚝ 训练一个回归模型或分类模型,以网络架构的特征(如层数、连接类型、操作类型等)作为输入,预测其性能指标(如准确率)。
▮▮▮▮⚝ 实现: 需要收集大量“架构-性能”数据对来训练预测器。实现特征提取方法来表示网络架构,以及一个预测模型(可以是简单的线性模型,也可以是更复杂的神经网络)。搜索策略可以利用预测器来快速筛选候选架构,只对高预测性能的架构进行实际评估。

7.1.4 工程与实验管理

实现一个健壮的NAS系统还需要考虑许多工程和管理细节。

分布式训练: NAS通常需要巨大的计算资源。实现分布式训练(例如使用多GPU、多机器)来并行评估候选架构或训练超网是必要的。
实验跟踪与管理: 由于NAS涉及大量实验(不同的搜索策略、搜索空间、超参数组合),你需要一个系统来记录每次实验的配置、结果、日志等。TensorBoard, MLflow, Weights & Biases 等工具都很有用。
超参数调优: NAS过程本身也有很多超参数(如RL控制器的学习率、演化算法的种群大小、DARTS中的\(\alpha\)和\(w\)的学习率等),这些都需要仔细调优。
代码复用与模块化: 将搜索空间定义、搜索策略逻辑、性能评估代码等模块化,便于复用、修改和调试。

7.2 流行的NAS工具与框架

幸运的是,社区已经开发了许多开源工具和框架,极大地降低了实现和应用NAS的门槛。利用这些工具,你可以更快速地开展NAS研究或将其应用于实际问题。

7.2.1 AutoKeras

简介: AutoKeras是一个基于Keras API的开源自动化机器学习(AutoML)库。它提供了一系列高级API,旨在让用户无需深入了解底层算法细节即可自动构建和部署机器学习模型。NAS是AutoKeras的核心功能之一。
特点:
▮▮▮▮⚝ 易于使用,与Keras无缝集成。
▮▮▮▮⚝ 提供了预定义的任务接口,如ImageClassifier, ObjectDetector, TextClassifier等。
▮▮▮▮⚝ 内部实现了多种搜索算法和性能评估技术,如神经元结构搜索(Neural Architecture Search)、超参数优化(Hyperparameter Optimization)等。
▮▮▮▮⚝ 允许用户自定义搜索空间和组件。
适用场景: 快速尝试AutoML,特别是对于图像、文本等常见任务,适合初学者和应用开发者。

7.2.2 NNI (Neural Network Intelligence)

简介: NNI是微软开源的一个工具包,旨在帮助用户自动化机器学习模型的开发、训练和部署,包括超参数调优(Hyperparameter Tuning)、神经架构搜索(Neural Architecture Search)以及模型压缩(Model Compression)等。
特点:
▮▮▮▮⚝ 提供统一的框架来管理不同的自动化任务。
▮▮▮▮⚝ 支持多种搜索算法(如Grid Search, Random Search, TPE, SMAC, Evolution, PPO, DARTS等)。
▮▮▮▮⚝ 支持多种性能评估平台(如单机、多机、云平台)。
▮▮▮▮⚝ 提供友好的Web界面,用于可视化实验过程和结果。
▮▮▮▮⚝ 良好的扩展性,用户可以轻松集成自己的搜索算法、评估器和模型。
适用场景: 希望在一个统一平台进行多种自动化机器学习任务,需要灵活选择算法和平台,适合研究人员和工程团队。

7.2.3 PyTorch/TensorFlow 生态中的NAS工具

深度学习框架本身也提供了实现NAS所需的基础组件,并且涌现了一些基于这些框架构建的NAS库。

PyTorch 生态:
▮▮▮▮⚝ PyTorch提供了动态图机制,使得构建可变结构的网络更加方便,这为实现多种NAS算法(特别是基于RL和演化的)提供了灵活性。
▮▮▮▮⚝ 一些第三方库或研究项目提供了基于PyTorch实现的经典NAS算法(如DARTS、ENAS等)。例如,很多论文的开源代码都是基于PyTorch实现的。
▮▮▮▮⚝ 优势: 社区活跃,易于定制和修改算法细节,适合研究人员深入探索新算法。

TensorFlow 生态:
▮▮▮▮⚝ TensorFlow (特别是TensorFlow 2.x with Keras) 也提供了构建和训练复杂模型的能力。
▮▮▮▮⚝ TensorFlow Model Garden 中包含了许多经典模型的实现,可以作为构建搜索空间的参考。
▮▮▮▮⚝ AutoKeras是基于Keras (可以运行在TensorFlow上) 的一个高级工具。
▮▮▮▮⚝ TensorFlow Research (TFR) 也发布了一些NAS相关的研究代码和工具。
优势: 成熟的工业级框架,有强大的生态系统和部署能力。

7.2.4 其他NAS工具与库

除上述之外,还有一些专注于特定NAS方法或提供特定功能的工具。

⚝ 例如,专注于One-Shot NAS的库可能提供超网的构建和训练功能。
⚝ 一些基准数据集(如NAS-Bench系列)通常也伴随有相应的代码库,用于加载数据、查询架构性能等。

选择合适的工具取决于你的具体需求、技术栈以及你希望在哪个抽象级别上进行工作(是直接应用AutoML工具,还是深入研究并实现NAS算法)。

7.3 NAS基准数据集与搜索空间

NAS实验通常计算成本高昂且难以复现。为了促进领域发展、公平比较不同NAS算法的效率和性能,研究者们提出了标准化的NAS基准数据集和搜索空间。这些基准预先计算或存储了搜索空间中大量甚至全部架构在标准数据集上的性能,使得研究者无需从头训练即可快速评估算法的优劣。

7.3.1 为何需要NAS基准?

促进公平比较:
▮▮▮▮⚝ NAS算法的性能受到搜索空间、训练数据、超参数、硬件环境等多种因素影响。没有标准化的基准,很难公平地比较不同论文提出的算法。
▮▮▮▮⚝ 基准提供了一个固定的测试平台,所有算法都在相同的搜索空间和评估条件下运行,结果更具可比性。

加速研究进程:
▮▮▮▮⚝ 在大型数据集(如ImageNet)上进行NAS搜索非常耗时(几天到几周)。使用基准,研究者可以瞬间查询某个架构的性能,从而快速迭代和测试新的搜索策略或效率提升技术。
▮▮▮▮⚝ 这使得研究的门槛大大降低,促进了更多关于搜索策略、效率提升、可解释性等方向的研究。

理解搜索空间的性质:
▮▮▮▮⚝ 对于一些包含搜索空间中所有架构性能的基准(如NAS-Bench-101),研究者可以分析搜索空间的整体性质,例如性能分布、局部最优点的数量等,从而更好地理解NAS问题的难点。

7.3.2 重要的NAS基准

NAS-Bench-101:
▮▮▮▮⚝ 这是第一个“可查询”的NAS基准。它定义了一个基于单元(Cell-based)的、离散且有限的搜索空间,包含了超过42万个独特的卷积单元。
▮▮▮▮⚝ 对于这个搜索空间中的每一个可能的单元,NAS-Bench-101都在CIFAR-10数据集上使用固定的训练配置(如训练周期、批量大小等)训练了三次,并记录了训练集准确率、验证集准确率、测试集准确率、训练时间和模型参数量等指标的平均值。
▮▮▮▮⚝ 使用方式: 提供API,用户输入一个架构的编码,即可立即查询其在CIFAR-10上的性能。
▮▮▮▮⚝ 意义: 第一次提供了一个无需训练即可评估架构性能的标准化平台,对NAS研究产生了深远影响。

NAS-Bench-201:
▮▮▮▮⚝ NAS-Bench-101虽然有所有架构的性能,但其搜索空间相对特殊。NAS-Bench-201定义了一个更接近DARTS等算法中常用的、基于单元的搜索空间,其中每个节点对之间的操作是搜索目标。
▮▮▮▮⚝ 它包含了15,625个独特的架构,并在CIFAR-10、CIFAR-100和ImageNet16-120三个数据集上预先训练并记录了性能。
▮▮▮▮⚝ 特点: 搜索空间更贴近实际应用中的某些场景,提供了在多个数据集上的性能数据。

DARTS 搜索空间基准:
▮▮▮▮⚝ 虽然DARTS本身是一个搜索算法,但其定义的可微分搜索空间也成为了一个事实上的基准,许多后续的梯度基NAS算法都在这个空间上进行实验和比较。
▮▮▮▮⚝ 一些工作基于DARTS搜索空间构建了可查询基准,例如使用DARTS论文中的搜索空间和训练设置,对空间中采样出的架构进行训练和记录。

其他基准:
▮▮▮▮⚝ 还有针对特定任务(如NLP、目标检测)或特定约束(如低延迟)的NAS基准,它们定义了相应的搜索空间并在相关数据集上评估性能。例如,NAS-Bench-NLP、NAS-Bench-ASR (自动语音识别)、NAS-Bench-For-Macro (宏结构搜索) 等。

7.3.3 如何使用NAS基准?

⚝ 使用NAS基准通常涉及:
① 安装基准提供的库。
② 定义你的搜索策略。
③ 让你的搜索策略在基准定义的搜索空间中生成候选架构(或其编码)。
④ 调用基准库的API,输入架构编码,查询其预先计算的性能指标。
⑤ 根据查询到的性能来指导搜索策略(例如,更新RL控制器的策略、计算梯度、选择演化算法的下一代等)。
⑥ 记录搜索过程中评估的架构数量、总查询时间、最终找到的最佳架构及其性能等指标,用于与现有算法进行比较。

7.4 NAS实验的复现性与评估

尽管有了基准,NAS实验的复现性仍然是一个挑战。理解影响复现性的因素以及如何进行恰当的评估,对于进行严谨的NAS研究至关重要。

7.4.1 影响复现性的因素

随机性(Randomness):
▮▮▮▮⚝ 深度学习训练本身就存在随机性(如权重初始化、数据增强顺序、Dropout、优化器随机性等)。
▮▮▮▮⚝ NAS搜索过程也可能引入随机性(如随机搜索、演化算法的变异和选择、RL算法的探索过程等)。
▮▮▮▮⚝ 这些随机性使得即使使用相同的代码和配置,多次运行结果也可能不同。

实现细节(Implementation Details):
▮▮▮▮⚝ 论文通常只描述算法核心思想,但具体的实现细节(如学习率调度、优化器选择和参数、正则化技巧、训练周期数、批量大小、梯度裁剪等)对最终结果影响很大。
▮▮▮▮⚝ 不同框架(PyTorch vs. TensorFlow)甚至不同版本、不同硬件平台(GPU型号)上的实现差异也可能导致结果不一致。

计算资源与时间预算(Compute Resources and Time Budget):
▮▮▮▮⚝ NAS结果通常与可用的计算资源和搜索时间密切相关。给定的算法在更多资源下可能找到更好的架构。
▮▮▮▮⚝ 实验条件(如用了多少块GPU、搜索了多久)需要清晰说明,否则结果无法比较。

搜索空间定义(Search Space Definition):
▮▮▮▮⚝ 即使是基于单元的搜索,具体的单元定义、操作集合、连接规则等也可能不同,导致搜索空间差异。

7.4.2 如何进行公平的评估与比较?

使用标准基准:
▮▮▮▮⚝ 如果可能,优先在公认的NAS基准上进行实验。如前所述,这提供了最公平的比较平台。
▮▮▮▮⚝ 报告在基准上的搜索成本(评估了多少架构、总训练/查询时间)和找到的最佳架构的性能。

明确实验设置:
▮▮▮▮⚝ 如果不能使用基准,或者在新的任务上进行实验,务必详细描述你的实验设置。
▮▮▮▮⚝ 必须说明: 搜索空间定义、搜索策略、性能估计方法(如代理任务的设置)、训练和评估网络的详细超参数、使用的数据集、计算资源(硬件、数量)、搜索时间或评估次数等。
▮▮▮▮⚝ 最好提供代码实现,这是提高复现性的最有效方式。

报告多个重复实验的结果:
▮▮▮▮⚝ 由于随机性,只运行一次实验并报告最佳结果是不够的。
▮▮▮▮⚝ 建议进行多次(例如3到5次)独立的完整搜索实验,并报告平均性能和标准差。这能更真实地反映算法的鲁棒性。
▮▮▮▮⚝ 对于找到的最佳架构,应该在完整的训练设置下(如果搜索时使用了代理任务或参数共享)从头训练几次,并报告其最终性能的平均值和标准差。

关注搜索效率与最终性能:
▮▮▮▮⚝ 评估NAS算法通常需要同时考虑两个主要指标:
▮▮▮▮⚝ 搜索效率: 花费了多少时间和计算资源来找到好的架构?可以用总FLOPS、GPU小时数、评估的架构数量等来衡量。
▮▮▮▮⚝ 最终性能: 找到的最佳架构在目标任务上的表现如何?例如,在测试集上的准确率、延迟、模型大小等。
▮▮▮▮⚝ 有时需要在效率和性能之间进行权衡。

可视化与分析:
▮▮▮▮⚝ 可视化搜索过程中的性能曲线(例如,随时间或评估次数增加,找到的最佳架构的性能如何变化),这有助于理解算法的收敛速度和稳定性。
▮▮▮▮⚝ 分析搜索到的架构的性质,例如它们共享的特征、与手动设计模型的异同等。

通过以上这些实践,我们可以使得NAS研究更加严谨,结果更加可靠,并更好地推动这个领域的进步。在结束本章之前,我想再次强调,实践是掌握任何技术的关键。尝试使用本章介绍的工具,或者在一个基准上实现一个简单的搜索策略,你将对NAS有更深刻的理解。

8. NAS的挑战与未来方向 🤔


本章将对当前神经架构搜索 (Neural Architecture Search - NAS) 领域面临的主要挑战进行总结,并在此基础上展望未来可能的研究和发展方向。尽管NAS在自动化模型设计方面取得了显著进展,但它仍然是一个活跃且充满挑战的研究领域。理解这些挑战对于推动NAS技术进一步发展、使其更加实用和普惠至关重要。

8.1 计算成本与效率


当前NAS方法最突出的问题之一是其高昂的计算成本 💸。搜索高性能的神经网络架构通常需要大量的计算资源和时间,这限制了NAS技术的广泛应用,尤其是在资源有限的环境中。

8.1.1 分析当前NAS方法的高成本根源


计算成本主要来自两个方面:

搜索过程本身 (Search Process)
▮▮▮▮⚝ 大多数搜索策略需要在巨大的搜索空间 (Search Space) 中探索大量的候选架构。
▮▮▮▮⚝ 基于强化学习 (Reinforcement Learning - RL) 或演化算法 (Evolutionary Algorithms) 的方法通常需要多次迭代,每次迭代可能评估多个架构。
▮▮▮▮⚝ 基于梯度 (Gradient-based) 的方法(如DARTS)虽然看似高效,但也需要优化一个庞大的超网 (Supernet),其内存和计算消耗可能很大。

性能评估 (Performance Estimation)
▮▮▮▮⚝ 评估一个候选架构的性能通常需要对其进行训练和验证,这通常是最耗时的步骤。
▮▮▮▮⚝ 尽管存在参数共享 (Parameter Sharing)、代理任务 (Proxy Tasks) 等加速评估的方法,但从头训练 (Training from Scratch) 仍然是衡量最终性能的黄金标准,且这些加速方法本身也引入了额外的复杂性和开销。

8.1.2 提高效率的现有尝试与局限性


第二章中介绍了一些提高NAS效率的方法,例如:

参数共享 (Parameter Sharing):允许不同候选架构共享权重,显著减少训练开销。
▮▮▮▮⚝ 尝试:ENAS、One-Shot NAS方法等。
▮▮▮▮⚝ 局限性:超网的训练本身具有挑战性,共享权重可能导致评估不准确,且共享模式的设计可能引入新的偏差。

性能预测器 (Performance Predictors):训练一个模型来预测架构性能,避免实际训练。
▮▮▮▮⚝ 尝试:使用图神经网络 (Graph Neural Networks - GNN) 或其他回归模型预测性能。
▮▮▮▮⚝ 局限性:需要大量标注数据(架构-性能对)来训练预测器,预测器的准确性有限,且在不同数据集或任务上的泛化能力有待提升。

代理任务 (Proxy Tasks):在小数据集、少轮次或低分辨率图像上评估。
▮▮▮▮⚝ 尝试:NASNet等早期方法。
▮▮▮▮⚝ 局限性:在代理任务上表现好的架构不一定在最终任务上表现最好,存在性能排序的偏差。

零成本NAS (Zero-Cost NAS):尝试在无需训练或仅进行少量训练的情况下评估架构潜力。
▮▮▮▮⚝ 尝试:使用网络连通性、核范数等指标。
▮▮▮▮⚝ 局限性:这些指标的有效性和普适性仍在研究中,可能无法完全捕捉网络的复杂性能特征。

尽管这些方法显著降低了NAS的门槛,但相较于手动设计或使用预训练模型,NAS的计算成本仍然相对较高,特别是在搜索大型模型或在新的、复杂的任务上进行搜索时。未来的研究需要进一步探索更高效、更准确的性能评估方法,以及能够更快收敛到优质架构的搜索策略。

8.2 搜索空间的泛化能力


搜索空间 (Search Space) 的设计是NAS成功的关键,但如何设计一个既包含高性能架构又不过于庞大、且能泛化到不同任务和数据集的搜索空间是一个持续的挑战。

8.2.1 手工设计搜索空间的局限性


当前许多成功的NAS工作依赖于手工设计的搜索空间(例如基于单元的搜索空间)。这些空间往往受到现有优秀网络结构(如ResNet、Inception)的启发,并预设了某些结构模式。

局限性
▮▮▮▮⚝ 引入归纳偏置 (Inductive Bias):手工设计的空间限制了可以被发现的架构类型,可能遗漏完全新型或更优的结构。
▮▮▮▮⚝ 任务或数据集依赖性 (Task/Dataset Dependency):针对特定任务(如图像分类)或数据集设计的搜索空间可能无法很好地泛化到其他任务(如目标检测)或数据集。
▮▮▮▮⚝ 专家知识依赖 (Expert Knowledge Dependency):设计一个好的搜索空间本身就需要深厚的领域知识和经验,这与NAS自动化模型设计的初衷相悖。

8.2.2 设计更通用或可学习的搜索空间


未来的研究方向之一是探索更具通用性或可以自动学习的搜索空间。

潜在方向
▮▮▮▮⚝ 更灵活的基元操作 (More Flexible Primitives):允许搜索不仅仅是在一组固定操作中选择,而是能组合或修改基本操作。
▮▮▮▮⚝ 分层或模块化搜索空间 (Hierarchical or Modular Search Spaces):在不同抽象级别上进行搜索,或者搜索如何组合预定义或可学习的模块。
▮▮▮▮⚝ 元学习搜索空间 (Meta-learning Search Spaces):学习如何根据任务或数据集的特性自动构建或调整搜索空间。
▮▮▮▮⚝ 联合搜索 (Joint Search):同时搜索架构和相关的优化设置(如学习率策略、数据增强方法)。

设计能够平衡灵活性和可搜索性的通用搜索空间,是提高NAS效率和泛化能力的关键。这需要深入理解不同网络结构如何影响性能,以及如何用系统化的方式表示和探索这些结构。

8.3 理论理解与收敛性保证


尽管NAS在实践中取得了成功,但其理论基础相对薄弱。我们对于为什么某些搜索策略有效、搜索过程是否能收敛到最优解、以及搜索到的架构的理论性质等问题,缺乏足够的理论理解和保证。

8.3.1 当前理论基础的不足


NAS可以被看作是在一个离散或混合的搜索空间中进行优化。然而,传统的优化理论很多是针对连续、凸或满足特定光滑性条件的函数,这些理论难以直接应用于NAS问题。

挑战
▮▮▮▮⚝ 非凸和离散性 (Non-convexity and Discreteness):神经网络性能函数关于架构参数通常是非凸且离散的,使得理论分析困难。
▮▮▮▮⚝ 黑箱评估 (Black-box Evaluation):许多NAS方法将性能评估视为一个黑箱过程,难以获得关于梯度或函数性质的信息。
▮▮▮▮⚝ 多重随机性 (Multiple Sources of Stochasticity):搜索策略(如RL、演化算法)和性能评估(训练过程)都引入了随机性,使得收敛性分析复杂。
▮▮▮▮⚝ 搜索空间结构 (Search Space Structure):不同搜索空间的拓扑结构对搜索过程的影响尚不完全清楚。

8.3.2 加强理论研究的方向


加强NAS的理论研究对于提高其可靠性和可解释性至关重要。

未来方向
▮▮▮▮⚝ 将NAS连接到优化理论 (Connecting to Optimization Theory):探索如何应用或扩展组合优化、离散优化、贝叶斯优化等理论来分析NAS。
▮▮▮▮⚝ 分析搜索空间的性质 (Analyzing Search Space Properties):研究不同搜索空间的景观 (landscape) 特征,例如是否存在许多局部最优、全局最优的分布等。
▮▮▮▮⚝ 搜索策略的收敛性与效率分析 (Convergence and Efficiency Analysis of Search Strategies):证明或分析不同搜索策略在特定条件下找到高质量架构的概率和所需资源。
▮▮▮▮⚝ 架构-性能关系的理论建模 (Theoretical Modeling of Architecture-Performance Relationship):尝试建立模型来预测或理解架构属性如何影响性能,为搜索提供理论指导。
▮▮▮▮⚝ 理解参数共享和预测器的理论 (Theory of Parameter Sharing and Predictors):深入理解这些加速技术如何影响性能评估的准确性和搜索过程。

理论上的突破有望为设计更有效、更可靠、具有理论保证的NAS算法提供指导。

8.4 多目标与约束优化


现实世界的应用往往不仅仅追求模型的高准确率 (Accuracy),还需要考虑其他重要的指标,例如模型大小 (Model Size)、计算延迟 (Latency)、内存消耗 (Memory Usage)、能耗 (Energy Consumption) 等。此外,未来可能还需要考虑隐私、公平性等非传统约束。如何在NAS中有效地进行多目标优化和满足复杂约束是一个重要挑战。

8.4.1 多目标优化在NAS中的必要性


在面向硬件受限的设备(如移动端、边缘设备)部署模型时,模型的效率指标与性能指标同等重要。

挑战
▮▮▮▮⚝ 目标冲突 (Conflicting Objectives):通常情况下,提高模型准确率可能需要更大的模型和更多的计算量,这与降低模型大小和延迟的目标相冲突。
▮▮▮▮⚝ 搜索复杂性 (Search Complexity):从单目标优化扩展到多目标优化会显著增加搜索的复杂性,需要找到帕累托前沿 (Pareto Front) 而不是单一最优解。
▮▮▮▮⚝ 指标评估 (Metric Evaluation):硬件相关的指标(如延迟)通常需要在目标硬件上进行测量,这增加了评估的复杂性和耗时。

8.4.2 整合约束与未来方向


目前的硬件感知NAS (Hardware-aware NAS) 已经开始探索在搜索过程中考虑硬件指标,但未来的NAS需要能够处理更广泛、更复杂的约束。

未来方向
▮▮▮▮⚝ 高效的多目标搜索策略 (Efficient Multi-objective Search Strategies):研究能有效探索多目标帕累托前沿的NAS算法,例如基于多目标演化算法或多目标贝叶斯优化。
▮▮▮▮⚝ 可微分的多目标优化 (Differentiable Multi-objective Optimization):探索将多目标指标整合到可微分搜索框架中。
▮▮▮▮⚝ 硬件和系统感知的搜索 (Hardware and System-aware Search):更深入地将硬件体系结构、编译器行为等系统级信息融入到NAS搜索和评估过程中。
▮▮▮▮⚝ 非传统约束的集成 (Integration of Non-traditional Constraints):研究如何在NAS中考虑模型的隐私保护属性(如差分隐私 Differential Privacy)、公平性 (Fairness)、可解释性 (Interpretability) 等,搜索满足特定“负责任AI”要求的架构。

多目标与约束优化是推动NAS从实验室研究走向实际应用的关键。未来的NAS系统需要能够根据用户的多样化需求,自动生成满足多种性能和效率权衡的定制化模型。

8.5 更广阔的自动化视野 ✨


神经架构搜索 (NAS) 是自动化机器学习 (Automated Machine Learning - AutoML) 领域的一个重要组成部分。AutoML旨在自动化机器学习管道 (ML Pipeline) 中的多个环节,而不仅仅是模型架构设计。将NAS与AutoML的其他组件有效集成,是实现端到端自动化ML的关键。

8.5.1 NAS在AutoML管道中的位置


典型的AutoML管道可能包括数据清洗、特征工程 (Feature Engineering)、模型选择 (Model Selection)、超参数优化 (Hyperparameter Optimization - HPO)、模型评估和部署等环节。NAS主要负责模型选择(具体是架构选择)的部分。

现有联系
▮▮▮▮⚝ NAS搜索到的架构的性能强烈依赖于训练过程中的超参数(如学习率、批大小、优化器)。
▮▮▮▮⚝ 数据预处理和数据增强 (Data Augmentation) 的方式也会显著影响模型的最终性能。

8.5.2 与其他AutoML组件的协同


未来的AutoML系统需要实现NAS与其他组件之间的更紧密协同和联合优化。

未来方向
▮▮▮▮⚝ 联合架构和超参数搜索 (Joint Architecture and Hyperparameter Search):同时搜索最优的网络架构和训练该架构所需的超参数。这是一个更大的搜索空间,需要更高效的搜索策略。
▮▮▮▮⚝ 联合架构和数据增强搜索 (Joint Architecture and Data Augmentation Search):搜索与特定架构最匹配的数据增强策略,例如AutoAugment就探索了自动化数据增强。将其与NAS结合可以找到更强大的模型。
▮▮▮▮⚝ 端到端可微分的AutoML (End-to-End Differentiable AutoML):探索构建一个完全可微分的ML管道,通过梯度下降优化从数据预处理到模型预测的整个过程。
▮▮▮▮⚝ 元学习驱动的AutoML (Meta-learning driven AutoML):利用元学习从过去的任务和数据中学习如何快速找到适合新任务的架构、超参数和数据处理方法。
▮▮▮▮⚝ AutoML for Systems: 不仅自动化模型设计,还自动化模型部署、推理优化等系统级任务。

将NAS置于更广阔的AutoML背景下,并与其他自动化技术相结合,有望构建出能够更高效、更智能地解决复杂AI问题的自动化系统。这代表了未来AI研究和应用的一个重要方向,旨在降低AI技术的使用门槛,加速AI在各行业的落地。

Appendix A: 关键术语英汉对照与解释

本书全面深入地解析了深度学习中的神经架构搜索(NAS)技术。为了帮助读者更好地理解书中的概念,本附录提供了书中出现的关键术语及其简要解释,并附有中英文对照。这些术语涵盖了深度学习基础、神经架构搜索的核心概念、主要算法以及相关应用领域。

深度学习 (Deep Learning)
▮▮▮▮现代人工智能领域的核心技术之一。它是一种基于人工神经网络(Artificial Neural Network)的学习方法,通过构建具有多个隐藏层(即“深度”)的网络结构,自动从大规模数据中学习抽象的、高层次的特征表示。相比于传统的机器学习方法,深度学习在图像识别、语音识别、自然语言处理等领域取得了突破性进展。

神经网络 (Neural Network)
▮▮▮▮受生物神经元结构启发的计算模型。一个神经网络由多层神经元(或称节点)组成,层与层之间通过带有权重的连接相连。输入数据通过这些连接传递,并在每个神经元中进行加权求和与激活函数处理,最终产生输出。通过训练(即调整连接权重和偏置),神经网络可以学习完成特定任务。

神经架构 (Neural Architecture)
▮▮▮▮指一个神经网络的具体结构,包括网络的层数、每层的类型(如卷积层、全连接层、循环层等)、每层的参数(如卷积核大小、步长、通道数等)、层与层之间的连接方式以及激活函数的选择等。设计高效且高性能的神经架构是构建优秀深度学习模型的关键。

神经架构搜索 (Neural Architecture Search - NAS)
▮▮▮▮自动化机器学习(AutoML)的一个子领域,旨在自动发现适用于特定任务和数据集的高性能神经网络架构。它将网络架构本身视为一个可搜索的空间,并利用各种搜索策略(如强化学习、演化算法、梯度下降等)在其中寻找最优解,以减少人工设计网络架构所需的时间和专业知识。

自动化机器学习 (Automated Machine Learning - AutoML)
▮▮▮▮旨在自动化机器学习模型开发流程的各个阶段,包括数据预处理、特征工程、模型选择、超参数调优以及神经架构搜索等。AutoML的目标是让非专家用户也能构建高性能的机器学习模型,并提高专家用户的工作效率。

搜索空间 (Search Space)
▮▮▮▮在神经架构搜索中,搜索空间定义了所有可能被搜索到的网络架构的集合。搜索空间的设计是NAS的关键一步,它决定了NAS能够找到的架构的类型和复杂性。常见的搜索空间包括整网结构搜索空间、基于单元的搜索空间和层级搜索空间。

搜索策略 (Search Strategy)
▮▮▮▮指在定义的搜索空间中寻找最优神经架构的方法或算法。不同的搜索策略有不同的探索(Exploration)和利用(Exploitation)机制,以平衡发现新颖高性能架构与快速收敛到已知优秀架构。常见的策略包括基于强化学习、演化算法、基于梯度和基于随机/贝士优化(Bayesian Optimization)的方法。

性能估计 (Performance Estimation)性能评估 (Performance Evaluation)
▮▮▮▮指评估一个候选神经架构在特定任务上的性能(通常是验证集上的准确率或其他指标)的过程。由于训练一个完整的深度学习模型通常非常耗时,如何高效准确地估计候选架构的性能是加速NAS的关键挑战。方法包括从头训练(Training from Scratch)、参数共享(Parameter Sharing)、代理任务(Proxy Task)和性能预测器(Performance Predictor)。

单元 (Cell)
▮▮▮▮在基于单元的搜索空间中,单元是构成整个神经网络的基本构建块。常见的有普通单元(Normal Cell)和降维单元(Reduction Cell),它们通常是DAG(有向无环图 - Directed Acyclic Graph)结构,由一系列预定义的操作(如卷积、池化、恒等映射等)及其连接组成。整个网络通过简单地堆叠这些搜索到的单元来构建。

整网结构搜索空间 (Whole Network Search Space)
▮▮▮▮一种搜索空间设计方法,直接搜索整个网络的层级结构,例如确定每层的类型、连接和参数。这种空间的灵活性较高,但搜索难度和计算成本通常也更高。

基于单元的搜索空间 (Cell-based Search Space)
▮▮▮▮一种流行的搜索空间设计方法,将网络结构分解为可重复使用的基本单元。NAS的任务是搜索最优的单元结构(例如单元内的操作和连接),然后通过重复堆叠这些单元来构建最终网络。这种方法大大缩小了搜索空间,提高了搜索效率,并且搜索到的单元可以在不同的任务或数据集上重复使用。

层级搜索空间 (Hierarchical Search Space)
▮▮▮▮一种搜索空间设计方法,同时在不同的抽象级别(如层级别、块级别、网络级别)上进行搜索。这种方法试图结合整网结构搜索和基于单元的搜索的优点,通过层级结构来管理搜索空间的复杂度。

强化学习 (Reinforcement Learning - RL)
▮▮▮▮机器学习的一个分支,智能体(Agent)通过与环境的交互学习如何做出决策以最大化累积奖励。在基于RL的NAS中,智能体(通常是一个循环神经网络控制器)通过一系列动作生成一个架构,环境则通过评估该架构的性能给出奖励,智能体根据奖励信号更新策略以生成更好的架构。

控制器 (Controller)
▮▮▮▮在基于强化学习的NAS方法中,控制器通常是一个循环神经网络(RNN),它的作用是根据当前的隐藏状态生成一系列离散的动作,这些动作共同定义了一个候选的神经架构。

演化算法 (Evolutionary Algorithm)
▮▮▮▮一类受生物演化过程启发的优化算法,包括遗传算法(Genetic Algorithm)、遗传规划(Genetic Programming)等。在基于演化算法的NAS中,一组候选架构被视为一个“种群”,通过选择、变异、交叉等操作生成新的架构,并根据它们的性能进行优胜劣汰,使得种群中的架构性能逐渐提高。AmoebaNet是这类方法的代表。

遗传算法 (Genetic Algorithm)
▮▮▮▮一种最常见的演化算法。它将待优化问题的解编码为“染色体”,通过模拟自然选择和遗传机制(如选择、交叉、变异)来逐步优化染色体,从而找到最优解。在NAS中,架构可以被编码为染色体。

基于梯度的搜索 (Gradient-based Search)
▮▮▮▮一种通过构建一个可微分的搜索空间,并利用梯度下降等优化方法来联合优化网络权重和架构参数的NAS策略。代表性方法是DARTS(Differentiable Architecture Search)。这种方法通常比基于RL或EA的方法效率更高。

可微分架构搜索 (Differentiable Architecture Search - DARTS)
▮▮▮▮一种高效的基于梯度的NAS算法。它将搜索空间建模为一个超网(Supernet),其中每个连接都是候选操作的加权组合。通过定义架构参数,使得搜索空间中的操作选择成为可微分的。DARTS通过交替优化网络权重和架构参数来找到最优架构。

随机搜索 (Random Search)
▮▮▮▮一种最简单的搜索策略,随机地从搜索空间中采样架构进行评估。尽管简单,但在某些高维搜索空间中,随机搜索可以作为强大的基线,甚至在相同计算预算下优于某些更复杂的方法。

贝叶斯优化 (Bayesian Optimization)
▮▮▮▮一种序列模型优化的方法,适用于评估成本较高的黑盒函数优化问题。它通过建立一个关于目标函数的概率模型(如高斯过程 - Gaussian Process),并使用采集函数(Acquisition Function)来指导下一次采样的位置,从而高效地探索搜索空间。可以用于优化架构的超参数或直接搜索架构。

从头训练 (Training from Scratch)
▮▮▮▮评估候选架构最直接的方法,即使用完整的训练数据集从随机初始化的权重开始训练该架构,并在验证集上评估其性能。这种方法准确度高,但计算成本巨大,是早期NAS的主要瓶颈之一。

参数共享 (Parameter Sharing)
▮▮▮▮一种加速性能估计的技术,核心思想是让搜索空间中的不同候选架构共享一部分或全部权重。例如,构建一个包含所有可能操作的超网,不同的子网络架构通过选择超网中的不同路径来表示,训练超网后,评估子网络的性能无需从头训练。ENAS(Efficient Neural Architecture Search)和单次NAS(One-Shot NAS)是基于参数共享的方法。

超网 (Supernet)
▮▮▮▮在基于参数共享的NAS方法中,超网是一个大型网络结构,包含了搜索空间中所有候选架构的可能操作和连接。搜索过程通常转化为在训练好的超网中寻找最优的子网络(即最优架构)。

单次NAS (One-Shot NAS)
▮▮▮▮一类基于参数共享的高效NAS方法。其核心思想是只训练一次包含所有候选操作和连接的超网(即“一次性”训练),然后通过不同的策略(如权重继承、子网络采样)从训练好的超网中评估或选择最优架构。

代理任务 (Proxy Task)
▮▮▮▮为了加速性能估计,不在完整数据集或完整训练周期上评估候选架构,而是在一个规模更小的数据集、更小的模型尺寸或更少的训练轮次上进行评估。这种简化版的任务称为代理任务。一个有效的代理任务应该能够反映架构在原始任务上的真实性能排名。

性能预测器 (Performance Predictor)
▮▮▮▮一个机器学习模型(通常是回归模型),输入是候选架构的描述(如结构特征),输出是预测的该架构在目标任务上的性能。NAS搜索策略可以使用性能预测器来快速筛选候选架构,避免昂贵的实际训练或评估。

图像分类 (Image Classification)
▮▮▮▮计算机视觉中的基本任务,旨在将图像归类到预定义的类别标签中。NAS在图像分类任务上取得了早期和显著的成功,许多经典的NAS算法(如NASNet, AmoebaNet, DARTS)最初都是在该任务上验证的。

目标检测 (Object Detection)
▮▮▮▮计算机视觉中的任务,旨在识别图像中物体的类别并定位它们的位置(通常用边界框 - Bounding Box 表示)。NAS已被用于搜索目标检测模型(如Faster R-CNN, SSD)的骨干网络(Backbone)以及检测头(Detection Head)结构。

语义分割 (Semantic Segmentation)
▮▮▮▮计算机视觉中的任务,旨在将图像中的每个像素分类到其所属的物体类别。NAS已被用于搜索语义分割网络(如U-Net, DeepLab)的编码器(Encoder)和解码器(Decoder)结构。

自然语言处理 (Natural Language Processing - NLP)
▮▮▮▮涉及计算机理解、处理和生成人类语言的领域。NAS已被用于搜索循环神经网络(RNN)、卷积神经网络(CNN)以及Transformer等用于文本分析、机器翻译、语言建模等NLP任务的模型结构。

移动端 (Mobile) / 边缘设备 (Edge Device)
▮▮▮▮计算资源(计算能力、内存、能耗)非常有限的硬件平台,如智能手机、物联网设备等。在这些平台上部署深度学习模型需要模型具有体积小、速度快、能效高等特点。面向硬件约束的NAS应运而生。

硬件约束 (Hardware Constraint)
▮▮▮▮指目标硬件平台对部署模型提出的限制,如计算延迟(Latency)、模型大小(Model Size)、内存占用(Memory Usage)、能耗(Energy Consumption)等。

延迟 (Latency)
▮▮▮▮指模型在给定硬件平台上处理一个输入样本所需的时间。对于实时应用(如自动驾驶、语音助手),低延迟是关键约束。硬件感知的NAS常常将延迟作为搜索或评估的目标之一。

模型大小 (Model Size)
▮▮▮▮指模型参数的数量或存储模型所需的字节数。对于内存受限的设备,模型大小是一个重要约束。

多目标优化 (Multi-objective Optimization)
▮▮▮▮同时优化两个或更多相互冲突的目标的过程。在面向硬件约束的NAS中,常见的多目标优化问题包括在最大化模型性能(如准确率)的同时最小化硬件指标(如延迟或模型大小)。

硬件感知NAS (Hardware-aware NAS)
▮▮▮▮一种将目标硬件平台的特性(如延迟、内存)直接集成到搜索过程或性能评估中的NAS方法。例如,在搜索过程中使用真实的硬件测量值或硬件预测模型来评估候选架构。

网络态射 (Network Morphism)
▮▮▮▮指在保持网络原有功能(如输入-输出映射)的同时修改网络结构的技术。例如,增加或删除层、改变层的宽度等。这些技术可以在NAS中用于生成新的候选架构,或者在搜索过程中平滑地过渡网络结构。

零成本NAS (Zero-Cost NAS)
▮▮▮▮一类非常高效的NAS方法,旨在无需训练候选架构即可评估其潜在性能。它们通常依赖于计算架构初始化时的某些特征或统计量(如连接性、梯度范数、单元输出多样性等)来预测其最终性能。

超参数优化 (Hyperparameter Optimization)
▮▮▮▮调整机器学习模型中那些在训练前设定的参数(如学习率、批次大小、正则化系数等)的过程。NAS是AutoML的一部分,常常与超参数优化结合,构成更完整的自动化流程。

数据增强 (Data Augmentation)
▮▮▮▮通过对训练数据进行各种变换(如裁剪、翻转、颜色抖动等)来扩充训练集,以提高模型的泛化能力。自动数据增强(AutoAugment)是NAS思想在数据预处理领域的应用,搜索最优的数据增强策略。

基准 (Benchmark)
▮▮▮▮用于公平比较不同算法或模型性能的标准数据集或任务。在NAS领域,出现了一系列标准化的NAS基准(如NAS-Bench-101, NAS-Bench-201),它们预先计算并存储了搜索空间中所有架构的性能,极大地加速了NAS算法的评估和比较研究。

Appendix B: 重要NAS论文列表

本附录列出了神经架构搜索(NAS)领域中一些具有里程碑意义和代表性的研究论文。这些论文涵盖了NAS从早期探索到高效、面向应用的演进过程,是理解NAS核心思想、主要算法和前沿进展的重要资源。对于希望深入研究NAS的读者,建议优先阅读这些经典文献。本列表按大致时间顺序或方法类别组织,并提供简要的中文说明。

本列表旨在为不同层次的读者提供一个有益的参考。对于初学者,可以先重点阅读引言性论文和综述;对于中级读者,可以深入理解各种搜索策略的代表性工作;对于专家,本列表可作为进一步探索特定子领域或最新进展的起点。

① Neural Architecture Search with Reinforcement Learning
▮▮▮▮作者:Barret Zoph, Quoc V. Le
▮▮▮▮发表:International Conference on Learning Representations (ICLR), 2017
▮▮▮▮说明:这篇开创性的论文首次将强化学习(Reinforcement Learning - RL)应用于神经架构搜索问题。它使用一个循环神经网络(Recurrent Neural Network - RNN)作为控制器(Controller),通过预测符号序列来生成子网络(Child Network)的描述。通过在验证集(Validation Set)上的表现作为奖励信号(Reward Signal),训练控制器以生成更高性能的架构。该方法在图像分类(Image Classification)任务上取得了很好的结果,但计算成本极高。

② Large-Scale Evolution of Image Classifiers
▮▮▮▮作者:Esteban Real, Sherry Moore, Andrew Selle, Saurabh Saxena, Yutaka Leon Suematsu, Quoc Le, Alex Kurakin
▮▮▮▮发表:Proceedings of the 34th International Conference on Machine Learning (ICML), 2017
▮▮▮▮说明:本文提出了基于演化算法(Evolutionary Algorithm)的NAS方法。通过维护一个候选架构种群(Population),并不断通过突变(Mutation)和选择(Selection)操作来生成新的、性能更好的架构。该方法是除强化学习外,另一类重要的搜索策略的早期代表。

③ Hierarchical Representations for Efficient Architecture Search
▮▮▮▮作者:Hanxiao Liu, Karen Simonyan, Yiming Yang, Koray Kavukcuoglu
▮▮▮▮发表:International Conference on Learning Representations (ICLR), 2018
▮▮▮▮说明:提出了AmoebaNet,一种基于锦标赛选择(Tournament Selection)演化算法的NAS方法。它引入了基于单元(Cell-based)的搜索空间(Search Space),即将整个网络构建为若干个可堆叠的单元(如普通单元Normal Cell和归约单元Reduction Cell),搜索重点放在单元的内部结构上,大大减小了搜索空间。这是单元搜索空间思想的代表作之一。

④ ENAS: Efficient Neural Architecture Search via Parameter Sharing and Gradient Estimation
▮▮▮▮作者:Hieu Pham, Melody Guan, Barret Zoph, Quoc V. Le, Jeff Dean
▮▮▮▮发表:Proceedings of the 35th International Conference on Machine Learning (ICML), 2018
▮▮▮▮说明:为了解决早期NAS计算成本过高的问题,ENAS(Efficient Neural Architecture Search)提出了参数共享(Parameter Sharing)的思想。它训练一个大型的超网(Supernetwork),该超网包含了搜索空间中所有可能的子网络作为其子图(Subgraph)。然后,通过一个强化学习控制器从超网中采样(Sample)子网络并评估其性能,但不同子网络之间共享超网的权重。这极大地提高了搜索效率。

⑤ DARTS: Differentiable Architecture Search
▮▮▮▮作者:Hanxiao Liu, Karen Simonyan, Yiming Yang
▮▮▮▮发表:International Conference on Learning Representations (ICLR), 2019
▮▮▮▮说明:DARTS(Differentiable Architecture Search)是基于梯度(Gradient-based)的NAS方法的代表作。它将离散的架构选择问题松弛(Relax)为连续的变量优化问题,构建了一个可微分的搜索空间。通过联合优化架构参数(Architecture Parameter)和网络权重(Network Weights),可以使用梯度下降(Gradient Descent)来寻找最优架构,显著提升了搜索效率。这是该领域的一个重要突破。

⑥ ProxylessNAS: Direct Neural Architecture Search on Target Task and Hardware
▮▮▮▮作者:Mingxing Tan, Xin Cui, Quoc V. Le
▮▮▮▮发表:International Conference on Learning Representations (ICLR), 2019
▮▮▮▮说明:ProxylessNAS进一步发展了基于参数共享和梯度的方法,提出了一种更直接(Proxyless)的搜索方式,即直接在目标任务和硬件上进行搜索,避免了在代理任务(Proxy Task)上搜索然后迁移(Transfer)的潜在问题。它也使用可微分的方式,通过路径级别的二元门(Path-level Binary Gates)来实现架构选择的可微分性。

⑦ MnasNet: Platform-Aware Neural Architecture Search for Mobile
▮▮▮▮作者:Mingxing Tan, Bo Chen, Ruoming Pang, Vijay Vasudevan, Mark Sandler, Andrew Howard, Quoc V. Le
▮▮▮▮发表:IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR), 2019
▮▮▮▮说明:MnasNet是一项面向移动端硬件(Mobile Hardware)的NAS工作。它引入了多目标奖励函数(Multi-objective Reward Function),同时考虑模型的准确率(Accuracy)和在目标硬件上的实际延迟(Latency),使用强化学习进行搜索。这项工作强调了在设计适用于特定硬件的模型时,直接考虑硬件指标的重要性。MobileNetV3等模型的设计就受到了MnasNet的启发。

⑧ EfficientNet: Rethinking Model Scaling for Convolutional Networks
▮▮▮▮作者:Mingxing Tan, Quoc V. Le
▮▮▮▮发表:Proceedings of the 36th International Conference on Machine Learning (ICML), 2019
▮▮▮▮说明:尽管EfficientNet主要是一篇关于模型缩放(Model Scaling)的论文,但其基础架构(EfficientNet-B0)是通过NAS方法(具体是AutoML MnasNet)搜索得到的。更重要的是,它系统地研究了网络深度(Depth)、宽度(Width)和分辨率(Resolution)对模型性能的影响,并提出了一个复合缩放(Compound Scaling)的方法,使得模型能够在不同计算约束下高效扩展。这展示了NAS发现的结构与模型缩放技术的结合潜力。

⑨ NAS-Bench-101: Towards Reproducible Neural Architecture Search
▮▮▮▮作者:Yingqing Xu, Renqian Luo, Jianxin Wu, Wenjun Zeng, Tieyong Cao, Qing He, Jie Wang
▮▮▮▮发表:International Conference on Machine Learning (ICML), 2019
▮▮▮▮说明:这篇论文提出了第一个重要的NAS基准(Benchmark)数据集NAS-Bench-101。它构建了一个固定且可枚举的搜索空间,并预先计算了该空间中所有架构在不同训练设置下的性能指标。这使得研究人员可以更快速、公平、可复现地评估和比较不同的NAS算法,极大地推动了NAS领域的研究进展。

⑩ Single Path One-Shot Neural Architecture Search with Uniform Sampling
▮▮▮▮作者:Zichao Guo, Xiangxiang Chu, Zhuang Liu, Xiaoming Wei, Meng Hao, Jianfeng Feng
▮▮ gilded CVPR 2020 (checked reference, it's CVPR 2020)
▮▮▮▮发表:IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR), 2020
▮▮▮▮说明:Single Path NAS是一种高效的单路径(Single Path)单次(One-Shot)NAS方法。它通过构建一个所有操作都合并在一个单一计算图(Single Computational Graph)中的超网,并使用均匀采样(Uniform Sampling)的方式来训练超网。在搜索阶段,通过选择每一步的最优操作来得到最终架构,进一步提高了搜索效率。

⑪ Zero-Cost Proxies for Neural Architecture Search
▮▮▮▮作者:Omar Abdelfattah, Gaurav Parmar, Zhuang Liu, Mannat Singh, Haider Mustafa, Joseph Anthony Ignatious, Hyeji Kim, Aidan Swope, Jonghyun Choi
▮▮▮▮发表:International Conference on Learning Representations (ICLR), 2021
▮▮▮▮说明:这篇论文系统地研究并提出了一系列“零成本”(Zero-Cost)或称“无需训练”(Training-Free)的NAS代理(Proxy)指标。这些指标可以在不进行任何模型训练的情况下,通过分析网络的随机初始化权重或输入数据流形来预测网络的潜在性能。这为超高效的NAS提供了新的可能性,特别是在计算资源极度受限的场景下。

Appendix C: 常用的NAS开源库与资源

本附录旨在为读者提供一些在实践中进行神经架构搜索(NAS)时常用的开源库、框架和在线资源。掌握这些工具能够帮助读者更高效地实现、实验和比较不同的NAS方法,或者直接应用已有的高效搜索结果。无论您是初学者希望快速体验NAS,还是研究者需要实现前沿算法,亦或是工程师想将NAS集成到实际开发流程中,这些资源都能提供宝贵的帮助。

Appendix C1: 流行的NAS工具与框架

目前已有不少优秀的开源项目致力于简化和加速NAS的实现和应用。它们通常提供预定义的搜索空间、实现了一些经典的搜索策略或性能评估方法,并提供了友好的API接口。

① AutoKeras
▮▮▮▮⚝ 介绍: AutoKeras 是一个基于 Keras 构建的自动化机器学习(AutoML)库,它使用神经架构搜索来自动寻找深度学习模型的架构和超参数(Hyperparameters)。它的目标是让不具备深度学习专业知识的用户也能快速构建高性能模型。
▮▮▮▮⚝ 特点:
▮▮▮▮▮▮▮▮⚝ 用户友好:提供简洁的 API,类似于 Scikit-learn。
▮▮▮▮▮▮▮▮⚝ 支持多种任务:包括图像分类(Image Classification)、回归(Regression)、文本分类(Text Classification)等。
▮▮▮▮▮▮▮▮⚝ 集成了多种搜索策略:虽然底层是 NAS,但也结合了其他 AutoML 技术。
▮▮▮▮⚝ 适用人群: 深度学习初学者、希望快速构建基线模型或解决特定任务的用户。
▮▮▮▮⚝ 资源链接: 通常可以在 GitHub 上找到其官方仓库和文档。

② NNI (Neural Network Intelligence)
▮▮▮▮⚝ 介绍: NNI 是微软亚洲研究院开源的一个工具包,旨在帮助用户自动化机器学习模型的开发,包括神经架构搜索、超参数调优(Hyperparameter Tuning)、模型压缩(Model Compression)等。它提供了统一的框架来管理和调度不同的自动化算法。
▮▮▮▮⚝ 特点:
▮▮▮▮▮▮▮▮⚝ 统一平台:支持多种自动化技术,而不仅仅是 NAS。
▮▮▮▮▮▮▮▮⚝ 丰富的算法实现:内置了多种 NAS 算法(如 DARTS, ENAS, PNAS 等)和其他搜索策略。
▮▮▮▮▮▮▮▮⚝ 分布式训练支持:可以方便地在多台机器上进行搜索和训练。
▮▮▮▮▮▮▮▮⚝ 扩展性强:用户可以方便地集成自定义的搜索空间、搜索策略或评估方法。
▮▮▮▮⚝ 适用人群: 需要进行系统性 AutoML 实验的研究者和工程师,特别是希望比较不同算法性能的用户。
▮▮▮▮⚝ 资源链接: 可以在 GitHub 上找到 NNI 的官方仓库、详细文档和教程。

③ PyTorch/TensorFlow 生态中的 NAS 工具
▮▮▮▮⚝ 介绍: 虽然 PyTorch 和 TensorFlow 核心库本身不直接提供一个开箱即用的通用 NAS 工具,但它们的强大灵活性和庞大的社区催生了许多基于这些框架实现的 NAS 开源项目。这些项目通常专注于实现特定的 NAS 论文算法,或者提供构建自定义 NAS 系统的基础组件。
▮▮▮▮⚝ 特点:
▮▮▮▮▮▮▮▮⚝ 紧随研究前沿:许多最新的 NAS 算法的官方或第三方实现都首先出现在这些生态中。
▮▮▮▮▮▮▮▮⚝ 灵活性高:用户可以基于这些实现进行修改、组合,或者构建自己的 NAS 系统。
▮▮▮▮▮▮▮▮⚝ 与现有代码易于集成:如果你的模型是基于 PyTorch 或 TensorFlow 构建的,使用同生态的 NAS 工具会更方便。
▮▮▮▮⚝ 适用人群: 熟悉 PyTorch 或 TensorFlow 并希望深入研究或实现特定 NAS 算法的研究者和工程师。
▮▮▮▮⚝ 资源链接: 需要根据具体的 NAS 论文查找其对应的 PyTorch 或 TensorFlow 实现代码库,通常在论文发布时的 GitHub 仓库中可以找到。

④ Keras Tuner
▮▮▮▮⚝ 介绍: Keras Tuner 是一个易于使用的、可扩展的超参数调优库,它与 Keras 和 TensorFlow 紧密集成。虽然主要目标是超参数调优,但它的搜索空间概念和搜索策略(如 Random Search, Hyperband, Bayesian Optimization)也可以用于搜索一些简单的网络结构变化,或者作为更复杂 NAS 系统的一部分。
▮▮▮▮⚝ 特点:
▮▮▮▮▮▮▮▮⚝ 易于使用:简洁的 API,与 Keras 模型构建流程无缝对接。
▮▮▮▮▮▮▮▮⚝ 支持多种搜索算法。
▮▮▮▮▮▮▮▮⚝ 可视化:提供工具来分析搜索过程和结果。
▮▮▮▮⚝ 适用人群: Keras 用户,希望在超参数调优的同时探索一些简单的结构变化。
▮▮▮▮⚝ 资源链接: TensorFlow 官方 GitHub 组织下的 Keras Tuner 仓库。

Appendix C2: NAS基准数据集与搜索空间库

为了更公平、高效地比较不同的NAS算法,研究者们构建了一些标准化的基准(Benchmarks)。这些基准通常预先计算了搜索空间中所有或大量候选架构的性能,从而避免了重复昂贵的训练过程,使得算法比较聚焦于搜索策略本身的效率和有效性。

① NAS-Bench-101
▮▮▮▮⚝ 介绍: 第一个广泛采用的NAS基准,定义了一个固定但丰富的基于单元(Cell-based)的搜索空间,并提供了该空间中所有423k个独特架构在 CIFAR-10 数据集上的训练性能数据。
▮▮▮▮⚝ 特点:
▮▮▮▮▮▮▮▮⚝ 全面:包含了整个搜索空间的性能数据。
▮▮▮▮▮▮▮▮⚝ 标准化:提供统一的评估环境。
▮▮▮▮▮▮▮▮⚝ 易于使用:提供 Python API 方便查询。
▮▮▮▮⚝ 适用人群: 希望快速评估新搜索策略或比较现有策略的研究者。
▮▮▮▮⚝ 资源链接: 通常可以在其官方网站或 GitHub 仓库找到数据集下载和 API 使用说明。

② NAS-Bench-201
▮▮▮▮⚝ 介绍: NAS-Bench-201 定义了一个更小、更易于理解的单元搜索空间,并提供了在该空间中所有 15625 个独特架构在多个数据集(如 CIFAR-10, CIFAR-100, ImageNet16-120)上的性能数据。
▮▮▮▮⚝ 特点:
▮▮▮▮▮▮▮▮⚝ 更小巧:搜索空间规模适中,易于理解和实验。
▮▮▮▮▮▮▮▮⚝ 多任务/数据集:可以在不同设置下评估算法。
▮▮▮▮▮▮▮▮⚝ 包含训练曲线:除了最终性能,还提供了完整的训练过程数据。
▮▮▮▮⚝ 适用人群: NAS 算法开发者,特别是希望进行快速原型设计和测试的用户。
▮▮▮▮⚝ 资源链接: 可以在其官方 GitHub 仓库找到数据集和相关代码。

③ NAS-Bench-NLP11
▮▮▮▮⚝ 介绍: 少数面向自然语言处理(NLP)任务的 NAS 基准之一,针对循环神经网络(RNN)的单元结构搜索。
▮▮▮▮⚝ 特点:
▮▮▮▮▮▮▮▮⚝ 面向 NLP:填补了图像领域基准的空白。
▮▮▮▮▮▮▮▮⚝ 专注于 RNN 单元搜索。
▮▮▮▮⚝ 适用人群: NLP 领域的 NAS 研究者。
▮▮▮▮⚝ 资源链接: 相关论文或项目页面通常会提供链接。

④ ZenNAS / Zero-Cost NAS Benchmarks
▮▮▮▮⚝ 介绍: 一些项目提供了实现或评估零成本 NAS 指标的工具和基准。零成本指标可以在不训练模型的情况下预测其潜在性能。
▮▮▮▮⚝ 特点:
▮▮▮▮▮▮▮▮⚝ 极高效率:评估成本几乎为零。
▮▮▮▮▮▮▮▮⚝ 专注于指标本身的研究。
▮▮▮▮⚝ 适用人群: 研究高效甚至零成本 NAS 方法的研究者。
▮▮▮▮⚝ 资源链接: 可以搜索相关的论文和代码库。

Appendix C3: 在线资源与论文集

除了具体的工具和基准,还有许多在线资源和论文集合对于学习和追踪NAS领域的最新进展非常有帮助。

① Papers With Code (paperswithcode.com)
▮▮▮▮⚝ 介绍: 一个汇集了机器学习论文及其对应开源代码的网站。它按照不同的任务和领域对论文进行分类,并提供了排行榜(Leaderboards)展示各个算法在标准基准上的表现。
▮▮▮▮⚝ 特点:
▮▮▮▮▮▮▮▮⚝ 覆盖广泛:包含了大量 NAS 相关的论文和代码。
▮▮▮▮▮▮▮▮⚝ 排行榜:方便了解当前最佳的模型和方法。
▮▮▮▮▮▮▮▮⚝ 链接到代码:可以直接找到论文的开源实现。
▮▮▮▮⚝ 适用人群: 所有希望查找特定论文代码或了解领域最新进展的学习者和研究者。

② ArXiv (arxiv.org)
▮▮▮▮⚝ 介绍: 预印本论文库,许多最新的研究成果都会首先发布在这里。通过搜索关键词“Neural Architecture Search”或“NAS”,可以找到大量前沿研究论文。
▮▮▮▮⚝ 特点:
▮▮▮▮▮▮▮▮⚝ 最新研究:能够及时获取领域内的最新突破。
▮▮▮▮▮▮▮▮⚝ 免费开放。
▮▮▮▮⚝ 适用人群: 希望追踪 NAS 领域最前沿进展的研究生和研究人员。

③ GitHub Trending / Search
▮▮▮▮⚝ 介绍: GitHub 是开源代码的主力平台。通过搜索“Neural Architecture Search”、“NAS”、“AutoML”等关键词,可以找到各种相关的项目、代码实现、教程等。关注 GitHub Trending 中的机器学习或深度学习项目,有时也能发现新的 NAS 工具或算法实现。
▮▮▮▮⚝ 特点:
▮▮▮▮▮▮▮▮⚝ 海量资源:包含从研究原型到工程实践的各种代码。
▮▮▮▮▮▮▮▮⚝ 社区活跃:可以找到很多高质量的项目和贡献者。
▮▮▮▮⚝ 适用人群: 所有希望获取 NAS 代码、学习实现细节或参与开源贡献的用户。

④ NAS 相关的 Awesome Lists
▮▮▮▮⚝ 介绍: 在 GitHub 上有许多由社区维护的“Awesome”列表,它们精选和整理了特定领域的重要论文、代码库、工具和资源。搜索“awesome neural architecture search”或“awesome NAS”可能会找到这样的列表。
▮▮▮▮⚝ 特点:
▮▮▮▮▮▮▮▮⚝ 精选:通常包含了领域内最重要和最常用的资源。
▮▮▮▮▮▮▮▮⚝ 结构清晰:按类别组织资源,易于查找。
▮▮▮▮⚝ 适用人群: 希望快速了解并获取 NAS 领域核心资源的用户。

掌握这些工具和资源,将极大地加速您在神经架构搜索领域的学习和实践进程。祝您在自动化模型设计的道路上取得成功! 🚀