Ultralytics YOLO27: 加入候补名单。
获取 YOLO 许可
返回 Ultralytics 术语表

Neural Architecture Search (NAS)

神经架构搜索 (NAS) 通过搜索网络层和连接方式来自动设计神经网络。了解相关方法、计算成本以及通过 NAS 构建的模型。

神经架构搜索 (NAS) 是自动化机器学习 (AutoML)的一个分支,用于自动设计神经网络的结构。搜索算法会提出候选架构,估算每种架构在任务上的表现,并根据结果提出更好的架构,而不是由工程师手动选择卷积和其他层类型、网络深度、宽度及连接方式。优化目标通常是准确率,也常结合推理延迟、参数数量或目标硬件上的 FLOPs等成本指标。NAS 促成了多种广泛使用的计算机视觉主干网络,包括 EfficientNet 和 MobileNetV3。

NAS 的工作原理#

《机器学习研究杂志》中的一篇综述从三个维度对 NAS 方法进行分类:

  1. 搜索空间: 可以构建的架构集合,例如允许使用哪些操作类型、卷积核大小和跳跃连接,以及如何连接这些组件。许多方法会搜索一个小型重复单元,并将其堆叠多次,这样既能缩小搜索空间,也能让在小数据集上找到的单元迁移到大数据集。
  2. 搜索策略: 决定尝试哪些候选方案的算法,包括强化学习控制器、进化算法、基于梯度的方法和简单的随机采样。
  3. 性能估算策略: 如何在不完整训练的情况下为候选架构打分,例如减少训练轮数、使用更小的图像或数据集、预测最终准确率,或让候选架构共享权重。

从数千 GPU 日缩短到数小时#

早期 NAS 成本高昂,因为每个候选架构都要训练到收敛。在 Zoph 和 Le 2016 年的研究中,使用强化学习训练的循环控制器生成网络,搜索同时运行在 800 个 GPU 上;后续的 NASNet 工作使用 500 个 GPU、耗时四天,在 CIFAR-10 上找到一个可迁移到 ImageNet 的单元。AmoebaNet 通过正则化进化算法获得了相近结果,计算成本约为 3,150 GPU 日。ENAS让所有候选架构共享模型权重,并将候选架构视作一个大型网络的子图,将搜索时间缩短到单个 GPU 上不到 16 小时;DARTS则将离散的操作选择放宽为连续权重,使架构本身可以通过梯度下降在数个 GPU 日内完成优化。基准测试也让这一领域的热度有所降温:带提前停止的随机搜索在 Penn Treebank 和 CIFAR-10 基准上至少与 ENAS 表现相当。

硬件感知 NAS 与 NAS 构建的模型#

NAS 对实际应用影响最大的是面向边缘 AI的高效模型;这类模型必须在特定设备上平衡准确率和速度。MnasNet将真实手机上测得的延迟纳入搜索目标,在 Pixel 手机上实现了 75.2% 的 ImageNet top-1 准确率,耗时 78 毫秒;与 MobileNetV2 相比,速度快 1.8 倍,准确率高 0.5%。EfficientNet-B0 也来自类似的搜索,之后通过复合缩放扩展为 B1-B7 系列;MobileNetV3 则将硬件感知 NAS 与 NetAdapt 算法结合,为移动 CPU 进行调优。在目标检测方面,Deci 的 YOLO-NAS 模型通过其 AutoNAC 搜索引擎发现,并针对 INT8 量化后的低准确率损失进行设计;这些模型可通过 NAS 类在 Ultralytics 软件包中执行推理、验证和导出,但不支持训练。NVIDIA 后来收购了 Deci,这些模型也不再由原团队更新。

一个最简 NAS 示例#

以下示例使用最简单的搜索策略——随机采样,在 scikit-learn 手写数字数据集上对一个较小的多层感知机搜索空间进行探索。每个候选架构只训练 30 个轮次,作为低成本的性能估算,并在验证数据上评分:

import random
import warnings

from sklearn.datasets import load_digits
from sklearn.exceptions import ConvergenceWarning
from sklearn.model_selection import train_test_split
from sklearn.neural_network import MLPClassifier

warnings.simplefilter("ignore", ConvergenceWarning)  # short training runs are the cheap estimate
X, y = load_digits(return_X_y=True)
X_train, X_val, y_train, y_val = train_test_split(X / 16, y, random_state=0)

# Search space: 1-3 hidden layers, each 8-128 units wide. Search strategy: 12 random samples
random.seed(0)
space = [8, 16, 32, 64, 128]
candidates = {tuple(random.choices(space, k=random.randint(1, 3))) for _ in range(12)}

# Performance estimation: train each candidate for only 30 epochs, then score it on validation data
scores = {}
for layers in candidates:
    model = MLPClassifier(hidden_layer_sizes=layers, max_iter=30, random_state=0)
    scores[layers] = model.fit(X_train, y_train).score(X_val, y_val)

worst, best = min(scores, key=scores.get), max(scores, key=scores.get)
print(f"{len(scores)} architectures: worst {worst} {scores[worst]:.3f}, best {best} {scores[best]:.3f}")

12 次采样得到 10 种不同架构,其验证准确率从两层各含 8 个单元时的 0.398,到层大小为 128、128 和 16 个单元时的 0.978 不等,因此仅架构选择一项就能让准确率相差近 60 个百分点。完整的 NAS 运行会将获胜架构重新训练至收敛,并在单独的测试集上报告得分。

  • 超参数调优: 针对固定架构优化训练设置,例如学习率。NAS 将架构本身作为变量,而这两种方法通常会结合使用。
  • 模型剪枝和知识蒸馏: 在训练后缩小现有网络或模仿现有网络,而 NAS 则在训练前搜索高效设计。
  • 迁移学习: 复用预训练模型学到的权重。NAS 决定这些权重所填充的结构,而 EfficientNet 等由 NAS 搜索得到的网络本身也是广受欢迎的预训练骨干网络。

探索解决方案

体育领域的计算机视觉

体育领域的计算机视觉

了解 Ultralytics YOLO 如何通过球员和球追踪、表现分析、教练洞察及运动员康复,推动体育视觉技术的发展。
了解详情
航空影像计算机视觉

航空影像计算机视觉

使用 Ultralytics YOLO 将无人机和航空影像转化为农业、水产养殖、保护工作和地理空间分析的实时洞察。
了解详情
航空航天中的计算机视觉

航空航天中的计算机视觉

使用 Ultralytics YOLO 将计算机视觉应用于航空航天领域,包括飞机检查、跑道 FOD 检测、机场地面作业和复合材料缺陷检测。
了解详情
安防领域的计算机视觉

安防领域的计算机视觉

使用 Ultralytics YOLO 模型守护每个场所。视觉 AI 可用于周界监控、威胁检测、车牌识别和工作场所安全。
了解详情
机器人领域的计算机视觉

机器人领域的计算机视觉

使用 Ultralytics YOLO 模型提升智能机器的能力。机器人领域的视觉 AI 可用于自主导航、感知、目标跟踪和实时控制。
了解详情
物流中的计算机视觉

物流中的计算机视觉

借助 Ultralytics YOLO 模型优化物流流程。视觉 AI 可用于包裹检查、分拣、车辆跟踪和仓库安全实时监控。
了解详情
零售中的计算机视觉

零售中的计算机视觉

借助 Ultralytics YOLO 模型重新构想零售。视觉 AI 可用于库存跟踪、货架监控、排队管理和更深入的客户洞察。
了解详情
医疗领域的计算机视觉

医疗领域的计算机视觉

借助 Ultralytics YOLO 模型构建医疗解决方案。医疗领域的视觉 AI 可加快医学影像处理、优化诊断并监测患者。
了解详情
制造业中的计算机视觉

制造业中的计算机视觉

利用 Ultralytics YOLO 模型优化制造流程。视觉 AI 可用于质量控制、缺陷检测、个人防护装备合规检查和装配线自动化。
了解详情
汽车领域的计算机视觉

汽车领域的计算机视觉

利用 Ultralytics YOLO 模型在汽车领域应用计算机视觉。视觉 AI 可提升道路安全、驾驶辅助和车辆自动化水平,让道路更智能。
了解详情
农业中的计算机视觉

农业中的计算机视觉

借助 Ultralytics YOLO 模型,将视觉 AI 引入智慧农业。为作物监测、牲畜追踪和精准农业提供支持,从而提高产量并实现更智能的生产。
了解详情

让我们携手构建 AI 的未来!

开启你的旅程,迎接机器学习的未来