Модуль 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? Постройте поверхности ошибки для каждой архитектуры. Как меняется поведение при добавлении шума к данным?
§ Акт · что дальше