Ultralytics YOLO27: Вступи в список ожидания.
Лицензия YOLO
Назад к глоссарию Ultralytics

Neural Architecture Search (NAS)

Автоматизированный поиск нейросетевой архитектуры (NAS) подбирает структуру нейросети, перебирая слои и связи. Разбираем методы, вычислительные затраты и модели, созданные с помощью NAS.

Поиск нейронных архитектур (NAS) — это направление автоматизированного машинного обучения (AutoML), которое автоматически проектирует структуру нейронной сети. Вместо того чтобы инженер вручную выбирал свёртку и другие типы слоёв, глубину, ширину и связи, алгоритм поиска предлагает варианты архитектур, оценивает, насколько хорошо каждая из них справляется с задачей, и использует результаты, чтобы предлагать более удачные варианты. Целевой метрикой обычно служит точность, при этом часто учитываются затраты, например задержка инференса, количество параметров или FLOPs на целевом оборудовании. NAS привёл к появлению нескольких широко используемых в области компьютерного зрения базовых сетей, включая EfficientNet и MobileNetV3.

Как работает NAS#

В обзоре в Journal of Machine Learning Research методы NAS классифицируются по трём направлениям:

  1. Пространство поиска: Набор архитектур, которые можно построить: например, допустимые типы операций, размеры ядер и пропускаемые соединения, а также способы их объединения. Многие методы ищут небольшую повторяющуюся ячейку, а затем собирают сеть из её копий. Это сокращает пространство поиска и позволяет переносить ячейку, найденную на небольшом наборе данных, на крупный.
  2. Стратегия поиска: Алгоритм, который выбирает варианты для проверки: от контроллеров с обучением с подкреплением и эволюционных методов до градиентных методов и простого случайного перебора.
  3. Стратегия оценки производительности: Способ оценить вариант без полного обучения: использовать меньше эпох обучения, изображения или наборы данных меньшего размера, прогноз итоговой точности либо общие веса для разных вариантов.

От тысяч дней работы GPU до нескольких часов#

Первые методы NAS требовали больших затрат, поскольку каждый вариант обучали до сходимости. В исследовании Зофа и Ле 2016 года рекуррентный контроллер, обученный с помощью обучения с подкреплением, генерировал сети, а поиск одновременно выполнялся на 800 GPU. В последующей работе NASNet ячейку, перенесённую на ImageNet, искали на 500 GPU в течение четырёх дней. AmoebaNet достигла похожих результатов с регуляризованной эволюцией, потратив около 3,150 дней работы GPU. ENAS сократил поиск до менее чем 16 часов на одном GPU за счёт общих весов модели для всех вариантов, рассматриваемых как подграфы одной большой сети. В DARTS дискретный выбор операций заменили непрерывными весами, благодаря чему саму архитектуру можно было оптимизировать градиентным спуском за несколько дней работы GPU. Бенчмаркинг также охладил энтузиазм в этой области: случайный поиск с ранней остановкой показал результаты не хуже ENAS на тестах Penn Treebank и CIFAR-10.

NAS с учётом аппаратного обеспечения и созданные с помощью NAS модели#

Наибольшее практическое влияние NAS оказал на эффективные модели для периферийного ИИ, где нужно находить баланс между точностью и скоростью на конкретном устройстве. MnasNet включил задержку, измеренную на реальных телефонах, в целевую функцию поиска и достиг точности top-1 на ImageNet 75.2% при времени обработки 78 мс на телефоне Pixel — в 1.8 раза быстрее MobileNetV2 при точности на 0.5% выше. EfficientNet-B0 появилась в результате похожего поиска, после чего её масштабировали до семейства B1-B7 методом комплексного масштабирования; MobileNetV3 объединила NAS с учётом аппаратного обеспечения и алгоритм NetAdapt для настройки под мобильные CPU. Для обнаружения объектов модели YOLO-NAS от Deci, найденные поисковой системой AutoNAC и разработанные так, чтобы минимизировать снижение точности после квантования INT8, доступны для инференса, валидации и экспорта в пакете Ultralytics через класс NAS, но не для обучения. Позднее 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 уникальных архитектур; точность на проверочных данных варьируется от 0.398 для двух слоёв по 8 нейронов до 0.978 для слоёв из 128, 128 и 16 нейронов. Таким образом, только выбор архитектуры меняет точность почти на 60 процентных пунктов. В полном запуске NAS победителя переобучили бы до сходимости, а его результат оценили бы на отдельной тестовой выборке.

  • Настройка гиперпараметров: Оптимизирует параметры обучения, например скорость обучения, для фиксированной архитектуры. В NAS переменной становится сама архитектура; эти процессы часто выполняют вместе.
  • Прореживание модели и дистилляция знаний: Уменьшают уже обученную сеть или имитируют её, тогда как NAS ищет эффективную архитектуру до обучения.
  • Перенос обучения: Повторно использует выученные веса предварительно обученной модели. NAS определяет структуру, которую заполнят эти веса; сети, найденные с помощью NAS, например EfficientNet, сами стали популярными предварительно обученными базовыми сетями.

Изучи решения

Компьютерное зрение в спорте

Компьютерное зрение в спорте

Узнай, как Ultralytics YOLO обеспечивает компьютерное зрение в спорте: отслеживание игроков и мяча, аналитика результатов, полезные выводы для тренеров и реабилитация спортсменов.
Подробнее
Компьютерное зрение для аэросъёмки

Компьютерное зрение для аэросъёмки

Превращай снимки с дронов и аэрофотоснимки в полезные данные в реальном времени для сельского хозяйства, аквакультуры, охраны природы и геопространственного анализа с Ultralytics YOLO.
Подробнее
Компьютерное зрение в аэрокосмической отрасли

Компьютерное зрение в аэрокосмической отрасли

Применяй компьютерное зрение в аэрокосмической отрасли с Ultralytics YOLO: для осмотра самолётов, обнаружения посторонних предметов на взлётно-посадочных полосах, наземного обслуживания аэропортов и выявления дефектов композитных материалов.
Подробнее
Компьютерное зрение в сфере безопасности

Компьютерное зрение в сфере безопасности

Защити любой объект с помощью моделей Ultralytics YOLO. ИИ на базе компьютерного зрения обеспечивает мониторинг периметра, обнаружение угроз, распознавание номерных знаков и безопасность на рабочем месте.
Подробнее
Компьютерное зрение в робототехнике

Компьютерное зрение в робототехнике

Создавай более интеллектуальные машины с моделями Ultralytics YOLO. ИИ на базе компьютерного зрения в робототехнике обеспечивает автономную навигацию, восприятие, отслеживание объектов и управление в реальном времени.
Подробнее
Компьютерное зрение в логистике

Компьютерное зрение в логистике

Оптимизируй логистику с моделями Ultralytics YOLO. Визуальный AI обеспечивает проверку посылок, сортировку, отслеживание транспорта и мониторинг безопасности на складе в реальном времени.
Подробнее
Компьютерное зрение в розничной торговле

Компьютерное зрение в розничной торговле

Переосмысли розничную торговлю с моделями Ultralytics YOLO. Визуальный AI обеспечивает отслеживание запасов, мониторинг полок, управление очередями и более глубокое понимание поведения покупателей.
Подробнее
Компьютерное зрение в здравоохранении

Компьютерное зрение в здравоохранении

Создавай решения для здравоохранения с моделями Ultralytics YOLO. Визуальный AI в здравоохранении ускоряет медицинскую визуализацию, улучшает диагностику и мониторинг пациентов.
Подробнее
Компьютерное зрение в производстве

Компьютерное зрение в производстве

Оптимизируй производство с моделями Ultralytics YOLO. Компьютерное зрение на базе ИИ обеспечивает контроль качества, обнаружение дефектов, контроль использования СИЗ и автоматизацию сборочных линий.
Подробнее
Компьютерное зрение в автомобильной отрасли

Компьютерное зрение в автомобильной отрасли

Применяй компьютерное зрение в автомобильной отрасли с моделями Ultralytics YOLO. Компьютерное зрение на базе ИИ повышает безопасность дорожного движения, улучшает помощь водителю и автоматизацию автомобилей, делая дороги умнее.
Подробнее
Компьютерное зрение в сельском хозяйстве

Компьютерное зрение в сельском хозяйстве

Внедряй ИИ для компьютерного зрения в умное сельское хозяйство с моделями Ultralytics YOLO. Используй их для мониторинга посевов, отслеживания скота и точного земледелия, чтобы повысить урожайность и эффективность.
Подробнее

Давай вместе строить будущее ИИ!

Начни свой путь в будущее машинного обучения