Что такое функция softmax?
Функция softmax принимает вектор из K действительных чисел и превращает его в распределение вероятностей: каждое выходное значение строго лежит между 0 и 1, а сумма всех K значений равна ровно 1. Это стандартная функция активации выходного слоя в нейросетевых классификаторах — она переводит «сырые» оценки модели (логиты) в вероятности классов. Поскольку функция безразмерна, входные данные — это чистые числа без единиц измерения.
Как пользоваться калькулятором
Введите входной вектор в поле в виде списка чисел, разделённых запятыми, пробелами или переносами строк (например, 1, 2, 3). Числа могут быть положительными, отрицательными, нулевыми или дробными. Нажмите «Рассчитать» — и вы получите вероятность softmax для каждой компоненты, сумму всех выходных значений (она должна равняться 1) и argmax — индекс (начиная с 1) наибольшей вероятности.
Разбор формулы
Для каждой компоненты j функция softmax вычисляется так: \(\sigma(z)_j = \dfrac{e^{z_j}}{\sum_{k} e^{z_k}}\). Возведение в экспоненту делает каждый член положительным, а деление на общую сумму нормирует их так, чтобы итог был равен 1. Для численной устойчивости калькулятор перед возведением в экспоненту вычитает из каждого элемента максимальное значение m:
$$\sigma(\mathbf{x})_i = \frac{e^{\,x_i - \max(\mathbf{x})}}{\displaystyle\sum_{j=1}^{K} e^{\,x_j - \max(\mathbf{x})}}$$Общий множитель \(e^{-m}\) сокращается, поэтому результат остаётся прежним, но при больших входных значениях не возникает переполнения.
Разбор примера
Для \(z = (1, 2, 3)\): \(e^{1} = 2{,}71828\), \(e^{2} = 7{,}38906\), \(e^{3} = 20{,}08554\), в сумме \(30{,}19287\). Поделив каждое на сумму, получаем
$$\sigma = (0{,}09003,\ 0{,}24473,\ 0{,}66524)$$что в сумме даёт 1. Argmax — индекс 3, соответствующий наибольшему входному числу, с вероятностью \(0{,}66524\).
Частые вопросы
Почему сумма выходных значений всегда равна 1? Каждая экспонента делится на сумму всех экспонент, и эта нормировка гарантирует итог, равный 1.
Что будет, если все входные значения одинаковы? Получится равномерное распределение, где каждое выходное значение равно \(1/K\).
Изменится ли результат, если прибавить ко всем входам одну и ту же константу? Нет. Softmax инвариантна к сдвигу: прибавление одной и той же константы c ко всем входам не меняет результат — именно поэтому вычитание максимума безопасно.