Активационная функция А

Функция, применяемая к взвешенной сумме входов нейрона для введения нелинейности в нейронную сеть. Без неё сеть любой глубины эквивалентна одному линейному преобразованию.

English activation function, transfer function
Синонимы функция активации, функция передачи, нелинейность, activation, transfer function

Активационная функция — это математическая операция, которая применяется к взвешенной сумме входных сигналов нейрона и определяет, какой сигнал он передаст дальше. Именно она превращает линейную комбинацию входов в нелинейный выход, позволяя сети моделировать сложные зависимости.

Без активационной функции нейронная сеть с любым числом слоёв остаётся линейным преобразованием: последовательное применение линейных операций всегда сводится к одной матрице. Нелинейность — единственный способ научить сеть распознавать кривые, циклы, взаимодействия признаков и другие нетривиальные структуры в данных.

Как это работает

Каждый нейрон получает вектор входов x, умножает его на веса w, складывает результаты и добавляет смещение b. Полученная скалярная величина z = w·x + b называется взвешенной суммой или логитом. Затем к z применяется активационная функция f:

output = f(z)

Результат output передаётся на входы нейронов следующего слоя. В выходном слое активационная функция часто выполняет дополнительную роль: Sigmoid и Softmax преобразуют логиты в вероятности, Tanh ограничивает выход диапазоном от -1 до 1.

Выбор функции влияет на скорость обучения, устойчивость к исчезающим градиентам и итоговое качество модели. В глубоких сетях с десятками слоёв неправильная активация может полностью остановить обучение.

Зачем это нужно

Активационные функции решают три задачи:

  • Введение нелинейности. Позволяют сети аппроксимировать любую непрерывную функцию при достаточном числе нейронов (теорема об универсальной аппроксимации).
  • Управление градиентами. Правильная активация сохраняет градиент при обратном распространении ошибки, не давая ему затухнуть или взорваться.
  • Формирование выхода. В финальном слое активация задаёт формат предсказания: вероятность, класс, вещественное число.

В компьютерном зрении, обработке текста, рекомендательных системах и генеративных моделях активационные функции подбираются под архитектуру и задачу. Например, в трансформерах стандартом стала GELU, а в свёрточных сетях — ReLU и её вариации.

Примеры

  • ReLU (Rectified Linear Unit): f(x) = max(0, x). Если вход положительный — пропускает его без изменений, если отрицательный — выдаёт ноль. Самая популярная активация в скрытых слоях глубоких сетей: быстрая, не насыщается на положительных значениях, создаёт разреженные активации.
  • Sigmoid: f(x) = 1 / (1 + e^(-x)). Сжимает любое число в диапазон от 0 до 1. Используется в выходном слое для бинарной классификации и в старых сетях, но в глубоких слоях страдает от исчезающего градиента.
  • Tanh: f(x) = (e^x - e^(-x)) / (e^x + e^(-x)). Похожа на Sigmoid, но выдаёт значения от -1 до 1. Центрирована относительно нуля, что ускоряет сходимость по сравнению с Sigmoid, однако проблема затухающих градиентов сохраняется.
  • Softmax: преобразует вектор логитов в распределение вероятностей по классам. Применяется в выходном слое для многоклассовой классификации: сумма выходов равна 1.
  • GELU (Gaussian Error Linear Unit): сглаженная версия ReLU, взвешивающая вход по значению функции нормального распределения. Популярна в BERT, GPT и других трансформерах.

Формула или метрика

Общая схема вычисления выхода нейрона:

y = f(Σ(w_i · x_i) + b), где f — активационная функция.

Для ReLU: f(z) = max(0, z).

Для Sigmoid: f(z) = 1 / (1 + e^(-z)).

Для Tanh: f(z) = (e^z - e^(-z)) / (e^z + e^(-z)).

Типичные ошибки

  • Использование Sigmoid или Tanh в глубоких скрытых слоях. Градиент затухает экспоненциально с глубиной, и сеть перестаёт обучаться. Для скрытых слоёв глубже 5–7 уровней выбирайте ReLU, Leaky ReLU, GELU или SELU.
  • Применение ReLU в выходном слое для вероятностей. ReLU не ограничивает выход, поэтому не подходит для задач классификации. Для бинарной классификации используйте Sigmoid, для многоклассовой — Softmax.
  • Игнорирование проблемы «мёртвых» нейронов. Классический ReLU может «умереть»: если нейрон надолго уходит в отрицательную область, его градиент становится нулём навсегда. Это лечится Leaky ReLU, ELU или SELU.
  • Смена активации без переобучения. Архитектура и инициализация весов подбираются под конкретную функцию. Замена Sigmoid на ReLU без корректировки инициализации может дестабилизировать обучение.

Как улучшить

  1. Начните с ReLU для скрытых слоёв. Это быстрый и надёжный выбор по умолчанию для большинства задач. Если видите «мёртвые» нейроны — переходите на Leaky ReLU с отрицательным наклоном 0,01–0,1.
  2. Для трансформеров и современных архитектур выбирайте GELU или SiLU. Они дают более плавную нелинейность и лучше работают с механизмами внимания.
  3. В выходном слое всегда ставьте активацию под задачу: Sigmoid — бинарная классификация, Softmax — многоклассовая, линейная (без активации) — регрессия.
  4. Экспериментируйте с SELU и инициализацией LeCun. Эта комбинация обеспечивает самонормализацию сети и может убрать необходимость в Batch Normalization.
  5. Следите за масштабом логитов. Если значения перед активацией слишком большие или маленькие, Sigmoid и Tanh насыщаются. Нормализуйте входы и используйте правильную инициализацию весов (He для ReLU, Xavier для Tanh).

Источники

Хайкин С. «Нейронные сети: полный курс» — классический учебник, 2-е изд., ISBN 978-5-8459-2069-0

PyTorch Documentation — Activation Functions (https://docs.pytorch.org/docs/stable/nn.html#non-linear-activations-weighted-sum-nonlinearity)

Google Machine Learning Crash Course — Neural Networks: Activation Functions (https://developers.google.com/machine-learning/crash-course/neural-networks/activation-functions)

Chahla C. «A neural network is a biologically inspired mathematical model» — диссертация, HAL (https://theses.hal.science/tel-02956314)