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

> Активация — та самая нелинейность между слоями, без которой нейросеть схлопывается в линейную модель. Выбор активации определяет, как течёт градиент, поэтому вопрос «sigmoid или ReLU и почему» — из числа обязательных на собеседовании.

Раздел: [Нейронные сети](https://ml-book.com/s/neural-nets/) · Страница темы: https://ml-book.com/t/activations/ · Обновлено: 2026-07-07 · Источник: ml-book.com, учебник делается сообществом

## Интуиция

Линейный слой умеет только поворачивать, растягивать и сдвигать пространство. Функция активации (activation function) добавляет «изломы» и «изгибы» — именно из них сеть складывает сложные границы решений. Второй, менее очевидный смысл: активация управляет градиентом. На обратном проходе градиент умножается на производную активации в каждой точке — если производная близка к нулю, обучение слоя останавливается.

## Как это работает: зоопарк активаций

**Sigmoid** — σ(x) = 1 / (1 + e^{−x}). Сжимает вход в (0, 1), исторически первая «гладкая ступенька». Две беды: во-первых, насыщение (saturation) — при |x| > 4–5 производная почти нулевая (её максимум всего 0.25 в нуле), и градиент через такой нейрон не проходит; во-вторых, выход не центрирован вокруг нуля (not zero-centered) — все выходы положительны, из-за чего градиенты весов следующего слоя имеют одинаковый знак и спуск идёт зигзагом.

**Tanh** — tanh(x), диапазон (−1, 1). Центрирован вокруг нуля (это лучше для оптимизации), но насыщается точно так же, как sigmoid.

**ReLU** (rectified linear unit) — max(0, x). Дёшев, не насыщается справа (производная там ровно 1), с ним глубокие сети впервые стали нормально обучаться. Минус — «мёртвые нейроны» (dead neurons): если нейрон попал в отрицательную область на всех входах, его градиент — тождественный ноль, и он уже никогда не выберется.

**Leaky ReLU** — max(αx, x) с малым α ≈ 0.01: в отрицательной области остаётся маленький наклон, поэтому нейрон не умирает окончательно.

**GELU / SiLU** — гладкие «размытые ReLU»: GELU(x) = x·Φ(x) (Φ — функция распределения нормального закона), SiLU(x) = x·σ(x). Именно они стоят в современных трансформерах (BERT, GPT, LLaMA): гладкость и небольшой «провал» ниже нуля на практике дают чуть лучшее качество.

Отдельно стоит **softmax** — это *не* поэлементная активация, а нормировка вектора логитов в распределение вероятностей: softmax(z)_i = e^{zi} / Σ_j e^{zj}. Каждая компонента зависит от *всех* входов, сумма выходов равна 1. Место softmax — выходной слой многоклассовой классификации (и внимание в трансформерах), а не скрытые слои.

> **💡 Ключевая мысль**
>
> Смотри на активацию глазами градиента: обучение слоя живо ровно настолько, насколько производная активации отлична от нуля на реальных входах этого слоя.

> 🎛 Интерактивная визуализация — на странице темы: https://ml-book.com/t/activations/

## Как выбирать на практике

Правило по умолчанию простое. **Скрытые слои**: ReLU — дёшево и сердито для MLP и CNN; GELU/SiLU — стандарт трансформеров. **Выходной слой** диктуется задачей: регрессия — без активации (линейный выход), бинарная классификация — sigmoid + binary cross-entropy, многоклассовая — softmax + cross-entropy. Sigmoid и tanh в скрытых слоях глубоких сетей сегодня почти не встречаются — именно из-за насыщения: цепочка производных, каждая ≤ 0.25, за десяток слоёв превращает градиент в пыль (подробнее — в теме [про backprop](https://ml-book.com/t/backprop/)).

Поиграй с интерактивом: увеличив «масштаб входа», ты видишь, как большие по модулю входы загоняют sigmoid и tanh в насыщение — почти вся ось краснеет. Это же объясняет, зачем нормализуют входы и активации (batchnorm/layernorm): держать значения в «живой» зоне активации. Обрати внимание и на ReLU: у него «краснеет» ровно вся отрицательная полуось — это та самая зона, где нейрон рискует умереть, — зато справа производная равна единице при любом масштабе входа, и градиент проходит без ослабления.

> **⚠️ Подводный камень**
>
> Слишком большой learning rate может одним шагом выбросить ReLU-нейроны в мёртвую зону: bias уезжает в большой минус, выход нейрона — ноль на всех данных, градиент — тоже ноль, и нейрон потерян навсегда. Диагностика: доля нулевых активаций слоя; лечение — меньший шаг, Leaky ReLU или GELU.

> **🎤 На собеседовании**
>
> - «Чем плоха sigmoid в скрытых слоях?» — насыщение (максимум производной 0.25 → затухающие градиенты) и нецентрированный выход (зигзаг спуска).
> - «Что такое dead ReLU и как лечить?» — нейрон навсегда в нуле; Leaky ReLU/GELU, аккуратный learning rate, разумная инициализация.
> - «Почему softmax — не обычная активация?» — она связывает все компоненты вектора: выход i зависит от всех логитов, сумма равна 1.
> - «Что стоит в трансформерах?» — GELU/SiLU в FFN-блоках; softmax — в механизме внимания.

## Связанные темы

- [От нейрона к многослойному перцептрону](https://ml-book.com/t/perceptron-mlp/)
- [Обратное распространение ошибки](https://ml-book.com/t/backprop/)
- [Архитектура трансформера](https://ml-book.com/t/transformer/)
- [Логистическая регрессия и классификация](https://ml-book.com/t/logistic-regression/)

---

Интерактив, тест из 12 вопросов и карточки терминов — на странице темы: https://ml-book.com/t/activations/
Весь учебник в markdown: https://ml-book.com/llms-full.txt · Оглавление для агентов: https://ml-book.com/llms.txt
