Полносвязные сети
Полносвязный слой (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\) — размерность слоя.