Модуль I·Статья I·~3 мин чтения
Перцептрон и многослойные нейронные сети
Основы нейронных сетей
Превратить статью в подкаст
Выберите голоса, формат и длину — AI запишет аудио
Перцептрон и многослойные нейронные сети
Нейронные сети вдохновлены биологией, но давно стали самостоятельной математической областью. Перцептрон Розенблатта (1957) — простейший формальный нейрон, который уже обнаруживает основной принцип: линейное преобразование + нелинейная активация. Многослойные сети (MLP) из таких нейронов оказались универсальными аппроксиматорами.
Формальный нейрон и перцептрон
Биологическая мотивация: Нейрон мозга получает сигналы через дендриты, суммирует их в теле клетки и «стреляет» (спайк) только при превышении порога. Перцептрон моделирует это: взвешенная сумма входов + пороговая функция активации.
Перцептрон: y = sign(wᵀx + b) = sign(Σᵢ wᵢxᵢ + b), где x ∈ ℝⁿ — входной вектор, w ∈ ℝⁿ — веса, b — порог (bias), sign — знаковая функция (±1). Геометрически: w и b задают гиперплоскость wᵀx + b = 0 в ℝⁿ. Перцептрон разделяет пространство на два полупространства.
Теорема сходимости перцептрона (Rosenblatt, 1957): Если классы линейно разделимы, алгоритм обновления wₜ₊₁ = wₜ + yᵢxᵢ (при ошибке на (xᵢ, yᵢ)) сходится за конечное число шагов. Верхняя граница итераций: (R/γ)², где R = max||xᵢ|| — радиус, γ — маржа разделения.
Ограничение: Линейная неразделимость → перцептрон не обучится. Классический контрпример: функция XOR (Минский и Паперт, 1969) — нелинейна, перцептрон не решает. Это привело к «зиме AI».
Функции активации
Нелинейная активация — ключевое отличие от линейной регрессии. Без неё: стек линейных слоёв = один линейный слой.
Sigmoid (логистическая): σ(z) = 1/(1 + e^{−z}) ∈ (0,1). Производная: σ'(z) = σ(z)(1−σ(z)). Проблема: при больших |z| производная → 0 → «насыщение», исчезание градиента. Использовалась в ранних сетях.
tanh: tanh(z) = (e^z − e^{−z})/(e^z + e^{−z}) ∈ (−1,1). Производная: 1 − tanh²(z). Центрирован вокруг 0 (лучше sigmoid), но также насыщается.
ReLU (Rectified Linear Unit): ReLU(z) = max(0, z). Производная: 1 при z>0, 0 при z<0. Преимущества: нет насыщения при z>0 → эффективное распространение градиента. Быстро вычисляется. Проблема: «мёртвые нейроны» (dying ReLU) при z<0 всегда → нейрон всегда выдаёт 0 и никогда не обучается.
Leaky ReLU: max(αz, z), α = 0.01 — небольшой наклон при z<0, устраняет dying ReLU.
GELU: G(z) = z·Φ(z) (Φ — функция нормального CDF). Использует в BERT, GPT. Плавнее ReLU, сочетает «зашумлённость» с линейностью.
Многослойная сеть (MLP)
Прямое распространение (forward pass):
Слой l: aˡ = σ(Wˡ aˡ⁻¹ + bˡ)
Wˡ ∈ ℝ^{nₗ × nₗ₋₁} — матрица весов слоя l, bˡ — вектор biases, σ — функция активации (поэлементно), aˡ — активации слоя.
Функция сети: f(x; θ) = aᴸ = σ(Wᴸ σ(Wᴸ⁻¹...σ(W¹x + b¹)...+ bᴸ⁻¹) + bᴸ). Параметры: θ = {W¹, b¹,..., Wᴸ, bᴸ}. Число параметров: Σₗ (nₗ · nₗ₋₁ + nₗ).
Обратное распространение (backpropagation): Эффективный алгоритм вычисления ∂L/∂θ через цепное правило.
δᴸ = ∂L/∂zᴸ = ∇_{aᴸ} L ⊙ σ'(zᴸ) (ошибка последнего слоя) δˡ = (Wˡ⁺¹)ᵀ δˡ⁺¹ ⊙ σ'(zˡ) (обратное распространение ошибки) ∂L/∂Wˡ = δˡ (aˡ⁻¹)ᵀ, ∂L/∂bˡ = δˡ (градиенты)
Вычислительная сложность: O(число параметров) — то же, что forward pass.
Инициализация весов
Плохая инициализация → исчезающий или взрывающийся градиент. Если Wᵢⱼ ~ N(0, σ²): дисперсия активаций в слое l ≈ (nₗ₋₁ σ²) × дисперсия входа → экспоненциально нарастает.
Инициализация Глорота (Xavier): σ² = 2/(nₗ + nₗ₋₁) — сохраняет дисперсию активаций одинаковой. Для tanh/sigmoid.
Инициализация He: σ² = 2/nₗ₋₁ — для ReLU (учитывает нулевую половину).
Численный пример
MLP: [2 → 4 → 1], ReLU, MSE loss. Вход x = (1, −1). W¹ = [[0.5,−0.5],[1,0.5],[−0.5,1],[0,−1]], b¹ = [0,0,0,0]. W² = [[1,−1,0.5,−0.5]], b² = [0.1].
Forward: z¹ = W¹x + b¹ = [0.5+0.5, 1−0.5, −0.5−1, 0+1] = [1, 0.5, −1.5, 1]. a¹ = ReLU(z¹) = [1, 0.5, 0, 1]. z² = [1−0.5+0+−0.5] + 0.1 = 0 + 0.1 = 0.1. Выход f(x) = 0.1.
При y_true = 1: L = (0.1−1)² = 0.81. Backprop: δ² = 2(0.1−1) = −1.8. ∂L/∂W² = δ² · (a¹)ᵀ = [−1.8, −0.9, 0, −1.8].
Задание: Реализуйте MLP с нуля в NumPy (без PyTorch): [2→8→4→1], ReLU+sigmoid. Обучите на задаче XOR (4 точки). Реализуйте SGD с momentum. Постройте decision boundary. Сколько эпох нужно до 100% accuracy? Как меняется скорость сходимости с momentum β=0.9 vs β=0?
§ Акт · что дальше