Нейронная сеть прямого распространения / MLP

Многослойный перцептрон - основа глубокого обучения

От перцептрона Розенблатта (1958) до современных Transformer - универсальный аппроксиматор функций

Визуализация структуры сети

Наблюдайте поток данных через входной, скрытые и выходной слои

Прямой проход: x -> [Hidden] -> ... -> y

Конфигурация сети

Анимация

Ключевая идея

FFNN: Информация идёт только вперёд (Input -> Hidden -> Output), без петель и циклов

Демонстрация преобразования слоёв

Смотрите, как каждый слой преобразует данные: Линейное + нелинейная активация

z = Wa + b: Линейное преобразование
a = sigma(z): Нелинейная активация

Веса и bias

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

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

Без активации: y = W2(W1x) = (W2W1)x остаётся линейной! Нельзя выучить сложные шаблоны.

Галерея функций активации

Сравните разные функции активации и их градиенты

Детали функции

Формула: f(x) = 1/(1+e^(-x))
Диапазон: (0, 1)
Градиент: f'(x) = f(x)(1-f(x))
Преимущества: Smooth, differentiable
Проблемы: Vanishing gradient

Таблица эволюции

Функция Плюсы Проблемы
Sigmoid Гладкая Затухание
Tanh С центрированием к нулю Затухание
ReLU Простая, быстрая Мёртвые нейроны
Leaky ReLU Без мёртвых Настроить alpha
GELU Гладкая, теория Сложная

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

MLP может аппроксимировать любую непрерывную функцию на компактных подмножествах

Целевая функция

Теорема (Cybenko, 1989)

Сеть feedforward с одним скрытым слоем и конечным числом нейронов может аппроксимировать любую непрерывную функцию на компактных подмножествах R^n

Геометрическая интуиция

Слой 1: Делит пространство на области. Более глубокие слои: Формируют сложные границы решений через композицию.

Визуализация обратного распространения

Наблюдайте, как градиенты текут назад через сеть

Правило цепочки: dL/dW = dL/da * da/dz * dz/dW

Симуляция

Статус потока градиента

Нажмите кнопки, чтобы начать

Обновление параметров

W <- W - lr * dL/dW

Каждый градиент вычисляется умножением локального градиента на градиент сверху (правило цепочки)

MLP-блок Transformer

Почему каждый блок Transformer содержит MLP/FFN

Режим просмотра

Почему MLP в Transformer?

1 Attention: Взаимодействие токенов (глобальное смешивание)
2 MLP: Уточнение признаков по токенам (локальная глубина)
3 Взаимодополнение: Вместе они дают богатые представления

Экспериментальные данные

  • Убрать MLP -> Сильное падение качества
  • Убрать 30-50% Attention -> Небольшой эффект
  • MLP обеспечивает критическую нелинейную ёмкость
FFN(x): GELU(xW1 + b1)W2 + b2
Типично: d_model -> 4d_model -> d_model

Дизайн сети

Мало данных: 2-4 layers
Много данных: 5-20 layers
Правило ширины: 2-10x input dim

Методы инициализации

ReLU Family -> He/Kaiming Init
Sigmoid/Tanh -> Xavier/Glorot Init

Регуляризация

  • L2 Weight Decay (предотвращает слишком большие веса)
  • Dropout (случайная деактивация)
  • BatchNorm / LayerNorm (стабильное обучение)
  • Early Stopping (предотвращает переобучение)

Реальные применения

1
Прогноз цен на жильё Регрессия по табличным признакам
2
Обнаружение мошенничества Бинарная классификация по транзакционным данным
3
Медицинская диагностика Многоклассовая классификация по данным пациентов

Историческая шкала

1958 Rosenblatt: Перцептрон
1986 Rumelhart/Hinton: Обратное распространение
2011 Революция ReLU
2017 Transformer + GELU
2018 Turing Award: Hinton, LeCun, Bengio

Ограничения MLP

  • Большое число параметров для высокоразмерных входов
  • Нет встроенного использования структуры (в отличие от CNN/RNN)
  • Склонность к переобучению на малых наборах данных
  • Требуется фиксированный размер входа

Итог в одной строке

MLP = Многократные композиции "Линейное преобразование + Нелинейная активация" = универсальный аппроксиматор функций