Полносвязные сети

Нейронные сети хорошо работают со структурированными данными — то есть данными, где признаки связаны между собой.

Полносвязный слой (Fully Connected, FC)

Каждый нейрон слоя получает на вход все выходы предыдущего слоя. Для входных данных \(x_1, \dots, x_n\) выход \(j\)-го нейрона:

\[z_j = \sum_{i=1}^n w_{ij} x_i + b_j\]

Зачем нужна нелинейность

Если просто соединять FC-слои друг за другом, модель не становится мощнее. Выход двух последовательных слоёв:

\[s_k = \sum_j v_{kj} z_j + c_k = \sum_j \sum_i v_{kj} w_{ji} x_i + \text{const}\]

Это снова линейное преобразование. Поэтому между слоями необходимо добавлять нелинейные функции активации.

Функции активации

Функция Формула Особенности
Сигмоида \(\sigma(x) = \frac{1}{1 + e^{-x}}\) Затухание градиентов на краях — плохой выбор для глубоких сетей
ReLU \(f(x) = \max(0, x)\) Стандартный выбор для скрытых слоёв
tanh \(\tanh(x)\) Симметрична относительно нуля, используется в RNN
Leaky ReLU \(f(x) = \max(\alpha x, x)\) Решает проблему «мёртвых» нейронов ReLU
Функции активации применяются только между скрытыми слоями. Применение нелинейности на выходе сильно ограничивает модель.

Теорема Цыбенко (Universal Approximation)

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

На практике такая сеть переобучается и требует огромного числа параметров. Поэтому используют глубокие сети с умеренной шириной слоёв.

Метод обратного распространения ошибки

Обучение нейронной сети сводится к минимизации функции потерь градиентными методами. Градиент вычисляется цепным правилом от выходного слоя к входному — это и есть backpropagation.

Подробнее о градиентном спуске см. в разделе классического ML.

Batch Normalization

После нелинейного преобразования данные перестают быть нормированными, что замедляет сходимость. Batch Normalization нормирует выходы каждого слоя по текущему батчу, сохраняя данные в одном распределении на всех уровнях сети.

Это позволяет делать более крупные шаги градиентного спуска и значительно ускоряет обучение.

Расширение — Scale and Shift: к нормализации добавляются обучаемые параметры сдвига и масштаба. Это позволяет модели самой выбирать наиболее выгодное распределение на каждом слое.

Инициализация весов

  • Все нули — плохо: все нейроны будут работать одинаково, градиенты симметричны.
  • Случайные числа с \(\text{Var} = 1\) — лучше, но дисперсия накапливается от слоя к слою: \(\text{Var}(s) = n \cdot \text{Var}(w) \cdot \text{Var}(x)\).
  • Xavier / He инициализация — стандартный подход: \(w \sim \mathcal{N}\left(0, \frac{\sigma^2}{D}\right)\), где \(D\) — размерность слоя.
Правильная инициализация критически важна: при плохой инициализации градиенты затухают или взрываются уже на первых шагах обучения.
← Назад к сп