Иллюзия ширины и геометрия глубины: почему глубокие нейросети умнее, и в чем лжет теорема об аппроксимации

от автора

Когда вы проектируете архитектуру своей нейросети и у вас есть фиксированный бюджет параметров (допустим, 1 гигабайт видеопамяти под веса), перед вами всегда встает выбор: сделать сеть толстой (увеличить размерность скрытого слоя / d_model) или глубокой (увеличить num_layers).

Если мы откроем учебник по математике, мы увидим знаменитую универсальную теорему об аппроксимации. Она математически доказывает, что сеть с одним единственным скрытым слоем способна с любой точностью описать любую непрерывную функцию. Кажется, вывод очевиден: наращивай ширину, и сеть выучит всё.

Но если мы посмотрим на реальные SOTA модели, мы увидим одержимость глубиной. Почему индустрия игнорирует теорему об аппроксимации? Потому что теорема ничего не говорит о том, как именно сеть выучивает данные.

Давайте спустимся на уровень геометрии латентного пространства и посмотрим, как физически работают ширина и глубина.

Ширина: Идеальная зубрежка и плоский мир

Что такое широкий слой нейросети? Представьте себе огромную матрицу весов. Когда сигнал проходит через широкий слой, он раскладывается на десятки тысяч независимых признаков (фичей).

Широкая нейросеть работает как гигантский набор шаблонов. Если вы покажете ей миллион фотографий кошек, широкий слой выделит отдельный нейрон для рыжего кота в профиль, отдельный нейрон для черного кота анфас, и еще один для кота, спящего на батарее.

Геометрия ширины:
Функции активации (например, ReLU) проводят гиперплоскости, разрезая пространство входных данных на куски. Количество таких областей, на которые один слой может разбить пространство, растет полиномиально  ≈O(WD) от ширины слоя. Широкая сеть это отличный зубрила. Она обладает феноменальной емкостью памяти. Она может запомнить каждый пример из обучающей выборки в лицо. Но как только вы покажете ей рыжего кота, спящего на батарее (комбинация признаков, которой не было в датасете), она растеряется. У неё нет механизма, чтобы объединить концепции.

Глубина: Оригами и экспоненциальное складывание пространства

А теперь посмотрим на глубокую сеть. Каждый слой в нейросети делает две вещи: он линейно вращает/сдвигает пространство (через веса W) и сгибает его (через нелинейную активацию).

Представьте лист бумаги с нарисованными на нем синими и красными точками, перемешанными в виде спирали. Ваша задача провести одну прямую линию так, чтобы разделить цвета. На плоском листе это сделать невозможно.
Широкая сеть с одним слоем попытается вырезать красные точки тысячами маленьких ножниц (полиномиальное разбиение).
Что делает глубокая сеть? Каждый её слой это один сгиб листа бумаги. Она складывает лист пополам, потом еще раз, и еще раз (как оригами). Через 10 сгибов синие и красные точки оказываются строго друг над другом в трехмерном пространстве. Теперь последний слой может просто «отрезать» макушку бумажного кома одной прямой линией.

Геометрия глубины: Количество линейных областей, которые может смоделировать глубокая сеть, растет экспоненциально от количества слоев  ≈O(2L). Глубина позволяет создавать невообразимо сложные границы принятия решений, используя в миллионы раз меньше параметров, чем потребовалось бы широкой сети.

Логика требует времени (Почему трансформерам нужна глубина)

В контексте языковых моделей разница между шириной и глубиной приобретает физический смысл времени.

Генерация и понимание текста это процесс иерархического синтеза:

  • Слой 1-5: Понимание букв, морфологии и синтаксиса (Где подлежащее? Где сказуемое?).

  • Слой 10-20: Понимание семантики (Это слово в переносном смысле или прямом?).

  • Слой 30-40: Формирование логического вывода (Если А больше Б, а Б больше В…).

Ширина слоя (d_model и количество голов внимания) определяет пропускную способность. Это то, сколько концепций модель может держать в голове одновременно на одном шаге мыслей.

Глубина (num_layers) определяет количество шагов логического вывода.
Представьте задачу: «У Пети 2 яблока, он отдал половину Маше, сколько у него осталось?».
Чтобы решить её, нужно последовательно выполнить операции:

  1. Понять начальное состояние (Петя = 2).

  2. Вычислить операцию (2 / 2 = 1).

  3. Обновить стейт (2 — 1 = 1).

  4. Сгенерировать ответ.

Вы математически не можете распараллелить логический вывод. Шаг 3 не может начаться, пока не завершен шаг 2. Как бы сильно вы ни раздували ширину слоя (даже если у вас 100 000 нейронов), один слой выполнит только одну матричную трансформацию. Глубина сети это время, которое вы даете градиентам и активациям на то, чтобы подумать.

Почему мы не строим сети из 10 000 слоев?

Если глубина это интеллект, почему размерность d_model в LLaMA-3 все еще равна 8192, а слоев всего 80? Почему не сделать d_model = 256 и 10 000 слоев?

Здесь математика сталкивается с инженерией:

  1. Затухание градиентов: Протолкнуть сигнал через 10 000 слоев без искажений это адская задача (вспомните про токсичность Residual связей и необходимость таких хаков, как LayerScale, о которых мы говорили ранее).

  2. Параллелизм: Широкие матрицы идеально «режутся» на куски и параллелятся между несколькими видеокартами внутри одного узла без задержек сети. А вот глубину распараллелить невозможно (Pipeline Parallelism требует синхронизации и создает пузыри ожидания).

  3. Информационное бутылочное горлышко: Если слой слишком узкий, он просто не сможет пропихнуть через себя информацию о 100 000 токенов контекста. Узкий слой это труба с маленьким диаметром: вода течет быстро, но объема не хватает.

Заключение

Теорема об универсальной аппроксимации не лжет математически, она лжет концептуально. Да, плоская и бесконечно широкая сеть может выучить всё. Но она сделает это через тупую зубрежку.

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

Ширина нейросети определяет то, как много она может знать. Глубина определяет то, насколько глубоко она может об этом думать. И в мире, где данных становится слишком много, выживают не те модели, которые пытаются всё запомнить, а те, которые умеют складывать пространство.

ссылка на оригинал статьи https://habr.com/ru/articles/1037066/