Перейти к содержанию

Index

1. Аннотация и позиционирование

CNN-NEAT решает задачу автоматического поиска архитектур (Neural Architecture Search, NAS) для свёрточных нейронных сетей с использованием эволюционного алгоритма NEAT [1]. В отличие от классического NEAT [1], применяемого к полносвязным сетям, каждое ребро DAG является операцией Conv2d. Классификатор (binary head) не входит в геном и не эволюционирует — это осознанное архитектурное решение, обеспечивающее разделение представления и принятия решения.

Задача: CIFAR-10 в постановке «один против всех» (one-vs-rest) — 10 независимых бинарных задач, по одной для каждого из 10 классов. Положительный класс задаётся параметром positive_class ∈ {0,…,9}.

Позиционирование относительно методов NAS:

Метод Стратегия поиска Пространство GPU-эффективность
CNN-NEAT (данная работа) Нейроэволюция (NEAT) DAG свёрток Адаптивная (VRAM-контроллер)
DARTS [2] Дифференцируемая релаксация Ячейки Высокая
ENAS [3] Контроллер (RL) + weight sharing Ячейки Высокая
Random NAS [4] Случайный поиск Произвольная Средняя
AmoebaNet [5] Регуляризованная эволюция Ячейки Средняя

Ключевые принципы дизайна:

Принцип Описание
Граф = архитектура Топология DAG и веса свёрток на рёбрах эволюционируют совместно
Классификатор снаружи Binary head (sum+sigmoid) фиксирован; не входит в геном
Детерминированная геометрия Размеры kernel/padding выводятся из node_sizes, не мутируют произвольно
Кэш исполнения DAG компилируется в ExecutionPlan один раз; форвард — O(|E|) без пересчёта топологии
Фиксированные каналы (baseline) C_in = C_out = 3 на каждом ребре; опционально — переменные каналы