神经架构搜索 (NAS) 是一种自动化设计人工神经网络的方法。开发者无需手动构建网络架构,而是使用算法探索和评估不同的模型结构,从而找到针对特定任务表现最佳的结构。其目标是减少设计高效模型所需的时间和专业知识,同时提高准确性、推理速度或内存使用等指标上的性能。NAS 在预定义的可能架构搜索空间内运行,并依赖优化技术来高效地导航此空间。当处理人类直觉可能不足的复杂任务时,它尤其有用,例如针对特定的硬件约束进行优化,或平衡模型大小和准确性。
NAS 通常包含三个主要组成部分:搜索空间、搜索策略和性能评估方法。搜索空间定义了算法可以探索的层类型(例如,卷积层、循环层)、连接和超参数(例如,滤波器大小)。例如,搜索空间可能包含 ResNet 风格块或 Transformer 层的变体。搜索策略决定了算法如何探索该空间——常见的方法包括强化学习(例如,训练控制器来提出架构)、进化算法(例如,变异并选择表现最佳的模型)或基于梯度的优化(例如,可微分 NAS,其中架构选择被视为连续参数)。性能评估通常涉及在验证数据集上训练候选模型,尽管这可能计算成本高昂。为了降低成本,会使用权重共享(多个架构共享参数)或代理任务(例如,在较小数据集上训练)等技术。
NAS 的实际应用涵盖图像分类、目标检测和自然语言处理等领域。例如,NAS 已用于设计 EfficientNet(一个在计算资源最少的情况下实现高准确度的模型系列)和 MobileNetV3(针对移动设备优化的模型)。然而,NAS 也存在局限性。即使经过优化,该过程仍然需要大量的计算资源,这使得一些团队无法使用。此外,生成的架构可能缺乏可解释性,这使得调试或调整它们更加困难。开发者可以利用现有的 NAS 框架,如 AutoKeras、Google 的 Vertex AI 或 NNI(神经网络智能)等开源工具,将 NAS 集成到其工作流程中,而无需构建自定义解决方案。虽然 NAS 自动化了架构设计,但它并不能消除对领域知识的需求——理解问题、数据和硬件约束对于有效指导搜索仍然至关重要。