Функция активации softmax: формула и расчёт
Функция активации softmax превращает произвольный вектор чисел (логитов) в распределение вероятностей: каждый выход попадает в диапазон от нуля до единицы, а сумма всех выходов равна единице. Именно поэтому softmax почти всегда стоит на последнем слое нейронной сети, решающей задачу классификации на несколько классов: сеть выдаёт сырые оценки уверенности, а softmax переводит их в понятные вероятности. Ниже разберём, как устроена формула, как softmax связан с экспонентой и нормировкой, зачем вводят температуру, как считать его численно устойчиво и где студенты чаще всего ошибаются. Чтобы сразу почувствовать связь логитов и вероятностей, покрути калькулятор ниже: он показывает экспоненты, их сумму и итоговое распределение по классам, а дальше мы разберём каждый шаг строго.
Что такое функция активации softmax
Softmax - это функция, которая берёт вектор из вещественных чисел и возвращает вектор той же длины, но уже из вероятностей. Входные числа называют логитами: это сырые, ничем не ограниченные выходы предыдущего слоя сети. Логит может быть любым - положительным, отрицательным, большим или маленьким. Softmax делает с ними две вещи: сначала прогоняет каждый через экспоненту (это убирает знак и усиливает разрыв между большими и малыми значениями), а потом нормирует, деля на общую сумму. В результате получается набор чисел, который можно честно трактовать как «сеть считает, что объект относится к классу A с вероятностью 66%, к классу B с вероятностью 24%, к классу C с вероятностью 10%».
Название говорит само за себя: softmax - это «мягкий максимум». Жёсткий максимум (argmax) выбрал бы один класс и поставил ему вероятность 1, а остальным 0. Softmax делает то же самое мягко: победитель получает наибольшую вероятность, но и у остальных классов она не обнуляется. Это критично для обучения: по нулевым выходам нельзя считать градиент, а по мягкому распределению - можно.
Формула функции softmax
Для вектора логитов вероятность -го класса задаётся формулой:
В числителе стоит экспонента от логита нужного класса, в знаменателе - сумма экспонент по всем классам. Знаменатель одинаков для всех выходов, он играет роль нормировочного множителя. Из этой формулы сразу видны два ключевых свойства softmax: каждое строго больше нуля (экспонента всегда положительна) и сумма всех вероятностей равна единице:
Разберём на числах. Пусть логиты равны . Считаем экспоненты: , , . Их сумма . Теперь делим каждую экспоненту на сумму:
Сумма , как и должно быть. Класс A с логитом 2,0 получил наибольшую вероятность около 66%. Эти же числа считает калькулятор выше при настройках по умолчанию - можно сверить.

Температура softmax
У softmax есть полезный параметр - температура . Логиты перед экспонентой делят на :
При это обычный softmax. Температура управляет «остротой» распределения. Когда маленькая (меньше единицы), разрывы между логитами усиливаются, распределение становится острее и стягивается к одному классу - softmax приближается к жёсткому argmax. Когда большая, логиты сжимаются, экспоненты сближаются, и распределение выравнивается, стремясь к равномерному, где у всех классов вероятность . Температуру используют при генерации текста языковыми моделями (низкая даёт предсказуемый текст, высокая - более разнообразный) и при дистилляции знаний, когда «мягкие» метки от большой модели передают маленькой.
Численная устойчивость softmax
При прямом вычислении по формуле есть подвох: если логит большой, может переполнить разрядную сетку (например, - это бесконечность для компьютера). Решение простое: из всех логитов вычитают их максимум перед экспонентой:
Результат не меняется: общий множитель сокращается в числителе и знаменателе. Но теперь наибольший показатель экспоненты равен нулю, а - переполнения нет. Это стандартный приём, который реализован во всех библиотеках, и его стоит знать: в задачах на «реализуйте softmax» преподаватель почти всегда ждёт именно устойчивый вариант, а не наивную формулу.
Производная softmax и связь с кросс-энтропией
В обучении сети важна производная softmax. Она зависит от того, по какому логиту дифференцируем. Частная производная выхода по логиту задаётся компактной формулой:
где - символ Кронекера (равен единице при и нулю иначе). Это и есть якобиан softmax. Сам по себе он громоздкий, но softmax почти никогда не используют в одиночку - его ставят в паре с функцией потерь кросс-энтропии. И тут происходит маленькое чудо: при дифференцировании кросс-энтропии по логитам якобиан softmax сокращается, и градиент сводится к простой разности:
где - целевая метка (1 для правильного класса, 0 для остальных). То есть градиент равен «предсказанная вероятность минус правда». Именно ради этой красивой формы softmax и кросс-энтропию всегда применяют вместе.
Где применяют softmax
Softmax - рабочая лошадка многоклассовой классификации. Он стоит на последнем слое свёрточных сетей для распознавания изображений, в трансформерах внутри механизма внимания (attention), в языковых моделях для предсказания следующего токена из словаря. Везде, где нужно превратить вектор оценок в распределение вероятностей по взаимоисключающим вариантам, ставят softmax. Важно не путать его с сигмоидой: сигмоида работает с каждым выходом независимо и подходит для бинарной или многометочной классификации (объект может относиться сразу к нескольким классам), а softmax связывает выходы между собой и подходит, когда класс ровно один.
Частые ошибки
- Забыть про численную устойчивость. Наивное переполняется на больших логитах. Всегда вычитайте максимум: даёт тот же результат без переполнения.
- Путать softmax с сигмоидой. Сигмоида нормирует каждый выход отдельно, softmax - совместно. Для одного класса из многих нужен softmax, для независимых меток - сигмоиды.
- Считать, что вход softmax уже вероятности. На вход подают логиты (любые числа), а не вероятности. Прогонять softmax дважды или после другой нормировки нельзя.
- Терять температуру в формуле. Если в задаче фигурирует , логиты делятся на ДО экспоненты, а не после. Деление результата на сломает нормировку.
- Дифференцировать softmax отдельно от потерь. Якобиан softmax громоздкий, но в паре с кросс-энтропией градиент равен . Считайте их вместе.
FAQ
Чему равна сумма выходов функции softmax? Всегда единице. Это прямое следствие формулы: числитель каждого выхода - экспонента логита, знаменатель - сумма тех же экспонент, поэтому при сложении всех выходов сумма экспонент сокращается и остаётся 1. Поэтому выходы softmax можно трактовать как вероятности.
В чём разница между softmax и argmax? Argmax выбирает один класс с наибольшим логитом и даёт жёсткий ответ (один и ноли), softmax даёт мягкое распределение, где у победителя наибольшая вероятность, но и остальные не нулевые. Argmax недифференцируем, поэтому в обучении используют softmax, а argmax применяют только на финальном предсказании.
Зачем нужна температура в softmax? Температура управляет остротой распределения. Маленькая делает softmax почти как argmax (один класс доминирует), большая выравнивает вероятности. Это используют в генерации текста для управления разнообразием и в дистилляции знаний для передачи мягких меток.
Коротко
Функция активации softmax переводит вектор логитов в распределение вероятностей по формуле : каждый выход положителен, а их сумма равна единице. На практике логиты сначала уменьшают на максимум для численной устойчивости, а параметр температуры регулирует остроту распределения. В паре с кросс-энтропией softmax даёт простой градиент , поэтому именно эта связка стоит на выходе почти любой нейросети-классификатора.
Читайте также

Алгоритм AdaBoost: как слабые классификаторы дают сильный
Алгоритм AdaBoost простыми словами: адаптивный бустинг, перевзвешивание объектов, формула веса классификатора, итоговый ансамбль и разбор шага на примере с формулами.

Алгоритм обратного распространения ошибки: как учится сеть
Backpropagation простыми словами: как обратное распространение ошибки считает градиенты по цепному правилу, обновляет веса нейросети и при чём тут исчезающий градиент. С формулами и разбором.

Batch normalization: нормализация по батчу шаг за шагом
Batch normalization (нормализация по батчу): четыре шага прямого прохода, формулы среднего и дисперсии, обучаемые gamma и beta, отличие обучения от инференса и зачем нужен eps.