Открыть сервис

Softmax: функция активации в машинном обучении

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

Определение и математическая формулировка

Для входного вектора \( z = (z_1, z_2, \dots, z_K) \) softmax вычисляет выходное значение для каждого элемента \( i \) по формуле:

\[ \sigma(z_i) = \frac{e^{z_i}}{\sum_{j=1}^{K} e^{z_j}} \]

где \( K \) — размерность вектора (число классов). Операция возведения в степень гарантирует положительность всех выходных значений, а нормировка на сумму экспонент приводит к тому, что выходные значения образуют вероятностное распределение: каждое лежит в интервале (0, 1), и все в сумме дают 1.

Функция является дифференцируемой и векторнозначной: на вход принимает вектор, на выходе отдаёт вектор той же размерности. Производная softmax по входному элементу \( z_j \) выражается через дельту Кронекера:

\[ \frac{\partial \sigma_i}{\partial z_j} = \sigma_i (\delta_{ij} - \sigma_j) \]

Это свойство позволяет использовать softmax в связке с методом обратного распространения ошибки при обучении нейронных сетей градиентными методами.

Свойства

Ключевое свойство softmax — инвариантность к сдвигу: при добавлении одной и той же константы \( c \) ко всем элементам входного вектора результат не меняется, поскольку \( e^{z_i+c} = e^{z_i} e^c \), и общий множитель сокращается в числителе и знаменателе. На практике это свойство используется для численной устойчивости: из каждого \( z_i \) вычитают максимальное значение вектора, чтобы избежать переполнения при вычислении экспоненты больших чисел.

Функция чувствительна к масштабу входных значений. При увеличении разброса значений вектора распределение становится более «острым» (близким к one-hot), при уменьшении — более равномерным. Температурный параметр \( T \) в модифицированной формуле \( e^{z_i/T} / \sum e^{z_j/T} \) позволяет регулировать «жёсткость» распределения: при \( T \to 0 \) softmax стремится к аргмаксимуму (выделяет один класс), при \( T \to \infty \) — к равномерному распределению.

Связь с логистической регрессией

Softmax является многоклассовым обобщением сигмоидной функции (логистической функции), которая используется в бинарной классификации. Если число классов \( K = 2 \), softmax для двух выходов сводится к сигмоиде: \( \sigma(z_1) = 1 / (1 + e^{-(z_1 - z_2)}) \). Модель линейной многоклассовой классификации, на выходе которой стоит softmax, называется мультиномиальной (softmax) логистической регрессией.

Применение в нейронных сетях

В архитектурах нейронных сетей softmax чаще всего размещается на последнем (выходном) слое при решении задач классификации. Число нейронов выходного слоя соответствует числу классов, а softmax преобразует логиты (сырые оценки, вычисленные предыдущими слоями) в вероятности принадлежности объекта каждому классу. Предсказанный класс определяется как аргмаксимум полученного распределения.

Softmax также применяется:

  • в механизмах внимания (attention) в архитектурах трансформеров — для вычисления весов важности между элементами последовательности;
  • в моделях машинного перевода и языковых моделях — для выбора следующего токена из словаря;
  • в обучении с учителем совместно с функцией потерь кросс-энтропии, что даёт устойчивый градиент;
  • в метрическом обучении и задачах поиска — для преобразования косинусных расстояний в вероятности.

Численная устойчивость

Прямое вычисление softmax с экспонентами может приводить к переполнению при больших значениях \( z_i \). Стандартный приём — вычитание максимального элемента вектора перед возведением в степень:

\[ \sigma(z_i) = \frac{e^{z_i - m}}{\sum_{j=1}^{K} e^{z_j - m}}, \quad m = \max_j z_j \]

Поскольку softmax инвариантен к сдвигу, результат не изменяется, а значения экспонент оказываются в диапазоне (0, 1], что предотвращает переполнение и улучшает устойчивость вычислений. В библиотеках глубокого обучения (TensorFlow, PyTorch, JAX) реализованы оптимизированные и численно устойчивые версии функции.

Ограничения и альтернативы

Softmax имеет ряд ограничений. Сумма вероятностей по всем классам всегда равна единице, что делает функцию непригодной для задач многоярлыковой классификации (когда объект может принадлежать нескольким классам одновременно) — в таких случаях применяется сигмоида, применяемая независимо к каждому выходу. Кроме того, softmax чувствителен к выбросам и не масштабируется на очень большие пространства классов (например, словари в сотни тысяч токенов), где вычисление знаменателя становится вычислительно дорогим; для таких задач используются приближённые методы (например, sampled softmax, noise-contrastive estimation) или альтернативные функции вроде sparsemax, порождающих разреженные распределения.

История

Функция softmax в её современном виде была предложена Джоном Бриджменом в 1990 году в работе, посвящённой вероятностной интерпретации выходов нейронных сетей. Ранее сходные преобразования использовались в статистической механике (распределение Больцмана) и в моделях множественного выбора (модель Льюса, 1959 год). Название «softmax» отражает свойство функции быть «мягким» (дифференцируемым) аналогом операции максимума. Широкое распространение softmax получила в 2010-е годы с развитием глубокого обучения и архитектуры трансформеров.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →