Ответ
Функция активации — это нелинейное преобразование, применяемое к взвешенной сумме входов нейрона. Она определяет его выходной сигнал. Без нелинейных функций активации многослойная нейронная сеть вырождалась бы в один большой линейный слой, неспособный обучаться сложным паттернам.
Ключевые функции и их применение:
-
ReLU (Rectified Linear Unit):
f(x) = max(0, x)- Плюсы: Вычислительно простая, не насыщается (решает проблему затухающего градиента).
- Минусы: "Умирающий ReLU" (нейрон может перестать активироваться).
- Использование: Стандартный выбор для скрытых слоев большинства архитектур.
-
Sigmoid:
f(x) = 1 / (1 + e^{-x})- Свойства: Сжимает выход в диапазон (0, 1).
- Использование: Исторически использовалась повсеместно, сейчас в основном только в выходном слое для задач бинарной классификации (вероятность).
-
Softmax:
f(x_i) = e^{x_i} / Σ_j e^{x_j}- Свойства: Преобразует вектор в распределение вероятностей (сумма выходов = 1).
- Использование: Исключительно для выходного слоя в задачах многоклассовой классификации.
Пример с NumPy:
import numpy as np
def relu(x):
return np.maximum(0, x)
def sigmoid(x):
return 1 / (1 + np.exp(-x))
def softmax(x):
exp_x = np.exp(x - np.max(x)) # Стабильная версия (сдвиг)
return exp_x / exp_x.sum(axis=0)
# Выход нейрона
z = np.array([2.0, 1.0, 0.1])
print("ReLU:", relu(z))
print("Sigmoid:", sigmoid(z))
print("Softmax:", softmax(z)) # Сумма = 1.0