Глубокое обучение
Neural Architecture Search
ResNet изменил deep learning в 2015. VGG, Inception, MobileNet - каждую архитектуру создавала команда экспертов за месяцы. А что если передать этот процесс самой нейросети? NAS ищет архитектуры автоматически. EfficientNet, найденный NAS, на 8.4x меньше ResNet-50 и показывает лучшее качество. Сейчас NAS встроен в Google AutoML и используется для каждой новой мобильной модели.
- **Google MNasNet** - backbone для Google Lens и Google Assistant на Pixel телефонах, найден hardware-aware NAS под конкретный чипсет
- **Apple Neural Engine** архитектуры оптимизированы через hardware-aware NAS под специализированный NPU в чипах A-series
- **Samsung One UI** использует NAS-оптимизированные модели для on-device распознавания лиц и Bixby Voice
- **Microsoft Azure AutoML** предоставляет NAS как сервис - загружаешь данные, получаешь оптимальную архитектуру под свою задачу без ML экспертизы
When a controller learned to design networks
Barret Zoph и Quoc Le из Google Brain запустили современный NAS в 2016-2017 работой 'Neural Architecture Search with Reinforcement Learning': RNN-контроллер предлагал архитектуры, обучал их и использовал validation accuracy как reward, всё это ценой сотен GPU, работающих неделями. Брутфорс-стоимость толкнула область к эффективности. Liu, Simonyan и Yang представили DARTS в 2018, превратив дискретный поиск в дифференцируемый и снизив стоимость на порядки. EfficientNet (Tan и Le, 2019) затем показал, что небольшая найденная NAS база плюс продуманный compound scaling обгоняет вручную настроенных гигантов.
Предварительные знания
Neural Architecture Search: базовые методы
**NAS автоматизирует то, что раньше делали архитекторы вручную:** выбор числа слоёв, размер фильтров, skip connections, нормализации. Первые NAS системы (Google Brain, 2017) использовали RL: controller-сеть генерирует описание архитектуры, обученная архитектура даёт reward (accuracy на validation), controller обновляется через REINFORCE. Проблема: нужно обучить 20000+ архитектур.
Evolution-based NAS (AmoebaNet, Google 2018) использует эволюционный алгоритм вместо RL: популяция архитектур, мутация операций, выживают лучшие. AmoebaNet-A достиг лучшего quality/compute на ImageNet. Практический вывод: RL vs Evolution vs Gradient-based NAS - на больших задачах разница в качестве небольшая, главный выигрыш - скорость поиска.
Первый RL-based NAS (Zoph & Le, 2017) потребовал 22400 GPU-дней. Почему это такой большой overhead?
EfficientNet: Compound Scaling
**EfficientNet (Google Brain, 2019)** решает вопрос: как масштабировать модель оптимально? Три измерения масштабирования - глубина (число слоёв), ширина (число фильтров), разрешение входа. Compound scaling: все три масштабируются одновременно с фиксированными коэффициентами. Базовая архитектура EfficientNet-B0 найдена NAS, B1-B7 - compound scaling.
EfficientNetV2 (2021) добавляет progressive learning: начинает с маленьких изображений и простых аугментаций, постепенно увеличивая оба. Обучается 4x быстрее при лучшем качестве. EfficientNetV2-L: 85.7% на ImageNet с 3x меньшим временем обучения, чем ViT-L/16.
Зачем EfficientNet масштабирует глубину, ширину и разрешение одновременно, а не по одному?
Hardware-Aware NAS
**Теоретически оптимальная архитектура на GPU может быть медленной на мобильном процессоре.** Depthwise separable convolutions - стандартный блок MobileNet - плохо параллелизуются на GPU, но эффективны на ARM CPU. Hardware-aware NAS включает latency на целевом железе в функцию оценки вместе с accuracy.
**Once-for-All (MIT, 2020)** решает проблему переобучения под одно железо: обучается суперсеть, поддерживающая разные конфигурации (глубина, ширина, разрешение ядра). Для нового железа - достаточно эволюционного поиска в пространстве подсетей без дополнительного обучения. Одна суперсеть покрывает от Apple Watch до NVIDIA V100.
Почему нельзя просто использовать FLOPs как proxy для latency на мобильных устройствах?
One-Shot и Differentiable NAS
**DARTS (Differentiable ARchiTecture Search, 2019)** превратил дискретный поиск в непрерывную оптимизацию. Каждое ребро в computational graph содержит смесь всех операций с обучаемыми архитектурными весами alpha. В конце поиска - берём операцию с максимальным softmax(alpha). Обучение архитектуры и весов - одновременно, по два набора данных: train для весов, val для alpha.
DARTS имеет проблему: tend to select skip-connections и parameter-free operations (они не перегружают validation loss). PC-DARTS, beta-DARTS и DrNAS предлагают разные регуляризации. На практике, AutoML библиотеки (Google AutoML, Microsoft NNI, Amazon AutoGluon) скрывают эти детали и предоставляют готовый NAS pipeline.
NAS полностью заменил ручное проектирование архитектур
Лучшие современные архитектуры (ConvNeXT, Swin, ViT) спроектированы вручную с элементами NAS на отдельных компонентах
NAS оптимизирует в рамках заданного пространства поиска. Пространство определяет человек - и от этого выбора зависит результат больше, чем от метода поиска. ConvNeXT показал, что rule-based архитектурные изменения (inspired by ViT) превосходят NAS-найденные
DARTS использует bi-level оптимизацию: разные наборы данных для весов модели и архитектурных параметров. Зачем это разделение?
Ключевые идеи
- **RL/Evolution NAS:** controller генерирует архитектуры, accuracy - reward; первые системы стоили 22400 GPU-дней
- **EfficientNet compound scaling:** глубина, ширина, разрешение масштабируются одновременно с фиксированными коэффициентами; B0 найдена NAS, B1-B7 - scaling
- **Hardware-aware NAS:** latency на реальном железе входит в функцию reward; FLOPs - плохой proxy для мобильных устройств
- **DARTS:** дифференцируемый NAS через mixed operations и bi-level оптимизацию - с 22400 GPU-дней до 4
Связанные темы
NAS пересекается с несколькими направлениями:
- Quantization и Pruning — Hardware-aware NAS и post-training quantization решают похожую задачу: максимум качества при ограниченном compute. Часто применяются вместе
- Transfer Learning — NAS-найденные архитектуры (EfficientNet, MNasNet) используются как backbone для transfer learning во всех downstream задачах
- Deep Learning System Design — NAS - часть MLOps pipeline: автоматический поиск оптимальной архитектуры под hardware constraints production среды
Вопросы для размышления
- DARTS tends to prefer skip-connections и zero operations, потому что они minimally disturb validation loss. Это называется 'performance collapse'. Какие регуляризации могут исправить это, и как это отражает general problem of bi-level optimization?
- Once-for-All обучает одну суперсеть, поддерживающую тысячи sub-networks. Как это связано с lottery ticket hypothesis, и почему такая суперсеть обобщается лучше, чем аналогичное число независимых моделей?
- ConvNeXT (2022) показал, что ViT-inspired ручные изменения в ResNet дают лучше, чем NAS. Что это говорит о роли human inductive biases vs автоматического поиска в проектировании архитектур?
Связанные уроки
- dl-19 — NAS и квантизация нацелены на эффективные модели
- dl-11 — Transfer learning даёт сильные базовые сети для поиска
- dl-20 — Найденные архитектуры идут в дизайн продакшен-систем
- ml-43-hyperparameters — NAS обобщает поиск гиперпараметров на архитектуры
- alg-32-branch-bound — Отсечение пространства поиска похоже на branch and bound
- rl-01 — Ранний NAS использовал RL-контроллеры для выбора архитектур