Как ответить
Активационные функции — это нелинейные преобразования, которые нейронная сеть применяет к выходу каждого нейрона. Без них сеть была бы просто линейной комбинацией входов, и её глубина не давала бы выигрыша — многослойная линейная сеть эквивалентна однослойной. Выбор функции зависит от задачи, архитектуры и стабильности градиентов.
Основные классы:
- Sigmoid / Tanh — классические S-образные функции. Sigmoid выдаёт значения от 0 до 1, Tanh — от -1 до 1. Раньше их использовали повсеместно, но у них проблема затухающих градиентов: на больших значениях производная близка к нулю, и веса перестают обновляться. Сейчас их применяют в основном в выходных слоях для бинарной классификации (sigmoid) или в RNN (tanh), где это компенсируется архитектурой.
- ReLU и её варианты — стандарт для скрытых слоёв. ReLU (f(x)=max(0,x)) решает проблему затухания градиентов для положительных значений, но может «умирать»: если нейрон выдаёт отрицательные значения, градиент становится нулевым, и он больше не обучается. На практике это решают Leaky ReLU (добавляет маленький наклон для отрицательных значений) или ELU (экспоненциальное затухание). В современных архитектурах (ResNet, Transformer) почти всегда используют ReLU или GELU.
- Softmax — не функция активации нейрона, а преобразование для выходного слоя многоклассовой классификации. Превращает логиты в вероятности, сумма которых равна 1. Без неё нельзя интерпретировать выход как распределение вероятностей.
- Swish / GELU — более новые функции, которые дают небольшой прирост точности в глубоких сетях. GELU используется в BERT и GPT. Они гладкие и не имеют «мёртвых» зон, но чуть дороже в вычислениях.
Почему выбирают конкретную функцию:
- Стабильность градиентов — ReLU и её варианты почти всегда лучше sigmoid/tanh для скрытых слоёв.
- Скорость обучения — ReLU быстрее вычисляется, чем экспоненты в sigmoid.
- Тип задачи — для регрессии выходной слой часто без активации (линейный), для бинарной классификации — sigmoid, для многоклассовой — softmax.
- Архитектура — в RNN tanh помогает удерживать информацию, в CNN — ReLU, в Transformer — GELU.
Пример: в свёрточной сети для классификации изображений (CIFAR-10) я использую ReLU в скрытых слоях и softmax на выходе. Если сеть глубокая (50+ слоёв), заменяю ReLU на Leaky ReLU, чтобы избежать «умирающих» нейронов. Для регрессии (предсказание цены) — скрытые слои ReLU, выходной — линейный.