
В реальности всё полно оттенков: ничего чисто чёрного или белого, то же в машинном обучении, тк решения редко бывают абсолютными. Возьмём задачу: нейросеть анализирует фото еды и определяет, это пицца, суши или салат. Для двух классов хватит сигмоиды, но с несколькими нужна функция, которая раздаст вероятности по всем вариантам, чтобы их сумма была точно 1. Вот где и выходит SoftMax- стандарт для многоклассовой классификации. Сегодня разберём её от А до Я: интуицию, шаги, формулы и хитрости.
Почему нужен SoftMax? От беспорядочных логитов к чётким вероятностям
В конце нейросети, после всех слоёв, модель выдаёт “грубые” значения- логины (logits). Это просто числа после умножений, сумм и активаций: могут быть плюсовыми, минусовыми, любыми. Например, для распознавания погоды по фото (солнечно, дождливо, снежно) логины могут быть: 5.2 для “солнечно”, 0.8 для “дождливо” и -3.1 для “снежно”.
Беда… как понять -3.1 как шанс? Вероятности от 0 до 1, сумма = 1. SoftMax фиксит это: создаёт распределение, где сильные значения доминируют, а слабые угасают, делая выводы понятными и полезными.
Разбор SoftMax по шагам: простой пример
SoftMax- два простых шага: экспонента для позитива + нормализация.
Пример: Нейросеть смотрит на фото и даёт логины: 4 для “пицца”, 2 для “бургер”, -1 для “салат”.
-
Экспонента. Берём e^x (e ≈ 2.718). Всё становится положительным, и различия растут.
e^4 ≈ 54.598
e^2 ≈ 7.389
e^{-1} ≈ 0.368 Было разница 2 между 4 и 2-> стало ~47.209. SoftMax усиливает фаворитов!
-
Нормализация. Суммируем (54.598 + 7.389 + 0.368 ≈ 62.355) и делим каждое на сумму.
“Пицца”: 54.598 / 62.355 ≈ 0.876 (87.6%)
“Бургер”: 7.389 / 62.355 ≈ 0.119 (11.9%)
“Салат”: 0.368 / 62.355 ≈ 0.006 (0.6%) Сумма = 1. Модель ставит на пиццу, но не игнорит альтернативы.
Это делает предсказания интерпретируемыми: “87% шанс, что это пицца”.
Математика SoftMax:
Вот формула в простом тексте:
S(z_i) = e^{z_i} / sum_{j=1 to K} e^{z_j}
S(z_i): Вероятность класса i.
z_i: Логит класса i.
Сумма внизу: по всем K классам.
Числитель- exp вашего логита, знаменатель- сумма exp всех. Легко дифференцировать для обучения.
Откуда “Soft” в Max? Контраст с Hard Max
SoftMax это мягкий максимум. Hard Max был бы жёстким: максимуму 1, остальным 0. В примере: 1 для пиццы, 0 для других. Как argmax.
Hard Max не подходит для обучения: градиент нулевой почти всегда, сеть застрянет.
Температура: как регулировать “уверенность”
В моделях вроде LLM добавляют T (температуру):
S(z_i) = e^{z_i / T} / sum_{j=1 to K} e^{z_j / T}
T > 1: Размывает- модель “экспериментирует”, повышая шансы слабым (для креатива).
T < 1: Обостряет- близко к Hard Max, для точности.
T=1: Обычный SoftMax.
В примере при T=3: ~0.585, 0.316, 0.099 равномернее. При T=0.3: ~0.997, 0.003, 0.000- почти наверняка пицца.
SoftMax + Cross-Entropy: дуэт для обучения
SoftMax обычно с Cross-Entropy Loss. SoftMax даёт предсказания hat{y}, Cross-Entropy меряет разницу с true y (one-hot: 1 для правильного, 0 для остальных).
Градиент пары: hat{y} – y. Просто и эффективно! Идеально для backprop в классификации.
SoftMax- фундамент DL с вероятностями
SoftMax это must-have для задач с несколькими классами: от CV до NLP. Он orderly из хаоса, усиливает уверенность, позволяет сети эволюционировать, без него модели были бы жёсткими и неэффективными.
Автор: Nikta3


