Эпоха 2 · Фундамент · 1989 / 1991

8 Универсальная аппроксимация

Cybenko 1989 (сигмоиды) · Hornik 1991 (любая неполиномиальная активация)
🟦 хватит конспекта~30–45 миноригинал ↗
Суть за 20 секунд. Теорема: сеть с одним скрытым слоем приближает любую непрерывную функцию сколь угодно точно — если нейронов достаточно. Это теоретическая лицензия пользоваться нейросетями. Но теорема неконструктивна, а «достаточно широкий слой» ≠ практично: глубина даёт ту же точность экспоненциально дешевле.

Контекст

Backprop (#7) научил обучать сети — но что они в принципе способны выразить? Есть ли функции, им недоступные? Цыбенко (1989) и Хорник (1991) дают строгий ответ.

Идея и механизм

Сеть с одним скрытым слоем вычисляет взвешенную сумму нелинейных «горбов»:

g(x) = Σi=1N αi σ(wi·x + bi)

Теорема: для любой непрерывной f на компакте и любого ε > 0 найдутся N и параметры, такие что sup|f − g| < ε. Такими горбами можно выложить любую гладкую форму. Хорник усилил: универсальность даёт сама архитектура, а не сигмоида — годится любая неполиномиальная активация, поэтому и ReLU универсален.

функциональный анализ Что теорема даёт — и чего НЕ даёт

Доказательство Цыбенко — неконструктивное: оно показывает, что множество сумм σ(w·x+b) плотно в пространстве непрерывных функций (через теорему Хана–Банаха и свойства меры). Отсюда два важных «нет»:

  • Нет числа нейронов. Теорема гарантирует существование N, но не ограничивает его — для нужной точности может потребоваться экспоненциально много нейронов.
  • Нет гарантии обучения. Сеть существует, но найдёт ли её градиентный спуск из случайной инициализации — отдельный вопрос, на который теорема молчит.

Почему глубина. Есть функции (например, с многими «складками»), которые сеть глубины L представляет числом нейронов полиномиальным по L, а одним скрытым слоем — экспоненциальным. Ширины формально достаточно, но глубина радикально дешевле. Поэтому deep learning «deep», а не «wide».

NumPy Приближаем функцию суммой ReLU-горбов
import numpy as np
# один скрытый слой: g(x) = Σ αᵢ · ReLU(wᵢ·x + bᵢ)
def g(x, W1, b1, W2):
    h = np.maximum(0, np.outer(x, W1) + b1)   # N скрытых ReLU-нейронов
    return h @ W2                              # взвешенная сумма горбов
# при достаточном N и подобранных параметрах g(x) ≈ любая непрерывная f
целевая f(x) σ-горбы скрытых нейронов складываются в g(x)
Любую кривую можно приблизить суммой достаточного числа нелинейных «горбов» — по одному на скрытый нейрон.
Аналогия. Как площадь под кривой приближают узкими прямоугольниками (сумма Римана), так нейросеть приближает функцию суммой «горбов». Чем больше элементов, тем точнее. Вопрос лишь — сколько их нужно и как подобрать; на это теорема не отвечает.

Почему это важно

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

Связи

← опирается на7. Backpropagation

Backprop даёт как обучать; теорема говорит что в принципе достижимо. Вместе они закрывают вопрос «а стоит ли вообще»: да — сети и выразительны, и обучаемы.

Там — универсальность для булевых функций (сеть пороговых нейронов вычислит любую). Здесь — для непрерывных. Две грани одного факта о выразительной мощи нейросетей.

→ мотивирует27. ResNet

«Глубина дешевле ширины» — теоретический аргумент; ResNet — инженерный ответ: как сделать очень глубокие сети реально обучаемыми, чтобы это преимущество получить на практике.

Вопросы пытливого ума

Если одного слоя «достаточно», зачем вообще глубина?

«Достаточно» — про существование, не про эффективность. Для некоторых функций неглубокой сети нужно экспоненциально больше нейронов, чем глубокой. Плюс глубина даёт иерархию переиспользуемых признаков (грани → части → объекты), которую широкий слой не строит. Теорема о существовании и практичность — разные вещи.

Раз сеть может приблизить что угодно — не значит ли это, что она всегда переобучится?

Выразительная мощь и переобучение — разные оси. Да, сеть способна запомнить шум, но на практике SGD + регуляризация + архитектурные смещения тянут её к простым решениям (implicit bias). Загадка глубокого обучения как раз в том, что переопределённые сети обобщают, хотя «могли бы» переобучиться.

Теорема про непрерывные функции — а если целевая функция разрывна?

Строго — теорема о ней молчит, но на практике это редко мешает: разрыв приближается крутым (но непрерывным) переходом сколь угодно близко в смысле, например, L²-нормы. Проблемы создают не разрывы как таковые, а высокая частота/негладкость, требующая очень много нейронов.

Что читать в оригинале

Оригиналы — измеримая математика. Для канона достаточно понять формулировку и два нюанса: неконструктивность и преимущество глубины над шириной.