Модуль II·Статья I·~3 мин чтения

Теория аппроксимации и глубокие сети

Математические основы Deep Learning

Превратить статью в подкаст

Выберите голоса, формат и длину — AI запишет аудио

Теория аппроксимации для нейросетей

Почему нейронные сети работают? Какой класс функций они могут аппроксимировать? Зачем нужна глубина — можно ли обойтись одним широким слоем? Теория аппроксимации отвечает на эти вопросы математически строго, обосновывая практический успех глубокого обучения.

Теорема об универсальной аппроксимации

Классическая теорема (Cybenko, 1989; Hornik, Stinchcombe, White, 1989): Однослойная нейронная сеть с сигмоидными нейронами, достаточным числом скрытых нейронов и любой непостоянной сигмоидной функцией активации может аппроксимировать любую непрерывную функцию f: [0,1]^n → ℝ с точностью ε > 0.

Формально: для любого ε > 0 существует N и параметры {αⱼ, wⱼ, bⱼ} такие, что

sup_{x∈[0,1]^n} |f(x) − Σⱼ αⱼ σ(wⱼᵀx + bⱼ)| < ε

Ограничение теоремы: не говорит, сколько нейронов нужно (может быть астрономически много), не говорит, как обучить.

Теорема Баррона (1993): для функций с ограниченным первым моментом Фурье-спектра ||C_f|| < ∞ однослойная сеть из n нейронов достигает ошибки аппроксимации O(C_f²/n) в L₂. Важно: размерность пространства входа не входит в оценку — нет «проклятия размерности» для этого класса функций.

Преимущество глубины

Интуиция глубины: первый слой выделяет элементарные паттерны (края на изображении), второй — сочетает их в формы, третий — в объекты. Иерархическое представление — аналог того, как мозг обрабатывает информацию.

Теоремы об экспоненциальном преимуществе (Montufar, Pascanu, Bengio, Le Cun, 2014): ReLU-сеть с O(n) нейронами в d слоях может представить функцию с O(n^d) линейных регионов (кусочно-линейных участков). Однослойная сеть с теми же O(n) нейронами: только O(n) регионов. Экспоненциальный выигрыш от глубины!

Следствие: глубокие сети эффективно «переиспользуют» признаки нижних слоёв. Функция XOR требует минимум 2 слоя нейронов — доказанный факт.

Нейронные тангентные ядра (NTK)

При инициализации и в пределе бесконечно широких сетей (Jacot, Gabriel, Hongler, 2018) обучение нейронной сети эквивалентно ядерной регрессии с ядром:

K_NTK(x, x') = ⟨∂f(x; θ)/∂θ, ∂f(x'; θ)/∂θ⟩

Физический смысл: насколько схожи «направления улучшения» сети для двух примеров x и x'. В бесконечно широком пределе K_NTK не меняется при обучении → линейный режим → предсказания = регрессия Гауссовского процесса с ядром K_NTK.

Практические следствия: объясняет implicit bias (минимальная норма решения, эффект регуляризации SGD), предсказывает обобщение для широких сетей, объясняет феномен double descent.

Double Descent

Классический U-образный tradeoff: при увеличении числа параметров ошибка сначала уменьшается, потом растёт (переобучение). Но при современных нейросетях наблюдается иная картина:

Ошибка: убывает → достигает максимума при (параметры ≈ данных) → снова убывает при числе параметров >> n.

Интерполирующая сеть (параметры >> n): существует бесконечно много решений, обнуляющих train loss. SGD находит решение с минимальной нормой (implicit bias) — оно хорошо обобщается! Через NTK: минимальная RKHS-норма → хорошее обобщение по теории ядровых методов.

Численный пример

Аппроксимация f(x) = sin(2πx) на [0,1]:

  • 1 скрытый слой, 10 нейронов (ReLU): ошибка ≈ 0.05 (кусочно-линейная)
  • 1 слой, 100 нейронов: ошибка ≈ 0.005
  • 2 слоя × 10 нейронов (20 параметров суммарно): ошибка ≈ 0.003

Два слоя с 20 параметрами лучше одного с 100 параметрами — количественное преимущество глубины.

Применения теории

Выбор архитектуры (понимание, когда нужна глубина vs ширина), разработка методов регуляризации (weight decay как минимизация RKHS-нормы), понимание обобщения (NTK → generalization bounds), диагностика обучения (если val loss не снижается — возможно, недостаточно глубины или ширины).

Задание: Реализуйте MLP в PyTorch для аппроксимации f(x,y) = sin(x)·cos(y) + 0.5·sin(2x+y) на [-π,π]². Сравните архитектуры: [1 слой × 64, 2 слоя × 32, 4 слоя × 16]. При одинаковом числе параметров: какая глубина даёт наименьшую MSE? Постройте поверхности ошибки для каждой архитектуры. Как меняется поведение при добавлении шума к данным?

§ Акт · что дальше