Ultralytics YOLO27: Вступи в список ожидания.
Лицензия YOLO
Назад к глоссарию Ultralytics

Softmax

Softmax преобразует вектор логитов в вероятности, сумма которых равна единице. Рассматриваются формула, температура, численная стабильность, внимание и код.

Softmax — это функция, которая преобразует вектор исходных оценок, называемых логитами, в распределение вероятностей: каждое выходное значение находится между 0 и 1, а их сумма равна ровно 1. Для вектора z она вычисляет softmax(z)ᵢ = e^(zᵢ) / Σⱼ e^(zⱼ): возводит каждую оценку в экспоненту и делит её на сумму всех экспонент. Softmax служит стандартным выходным слоем нейронных сетей, выбирающих один класс из нескольких; она преобразует оценки сходства в веса внутри механизма внимания трансформеров и переводит оценки языковой модели по её словарю в вероятности следующих токенов. Название отражает, что эта функция представляет собой гладкую дифференцируемую версию argmax, которая присваивала бы всю вероятность одной максимальной оценке.

Как работает Softmax#

Экспонента делает каждый выход положительным и усиливает различия между оценками, поэтому наибольший логит получает непропорционально большую долю вероятности. Softmax сохраняет порядок логитов, поэтому наибольшая оценка всегда соответствует наибольшей вероятности. Важны только различия между логитами: добавление одной и той же константы ко всем логитам не меняет результат. Библиотеки используют это свойство для численной стабильности: перед возведением в экспоненту они вычитают максимальный логит, поскольку e¹⁰⁰⁰ приводит к переполнению 32-битного числа с плавающей запятой.

Температура T определяет, насколько выражен пик распределения: softmax(z / T). Значения T меньше 1 делают распределение более выраженным в пользу ведущего класса, а значения больше 1 приближают его к равномерному. Та же формула используется в статистической механике для распределения Больцмана, где T — буквально температура. Пример кода ниже показывает оба эффекта в PyTorch:

import torch

logits = torch.tensor([2.0, 1.0, 0.1])

# Divide logits by a temperature before softmax: low sharpens, high flattens
for temperature in [0.5, 1.0, 2.0]:
    probs = torch.softmax(logits / temperature, dim=0)
    print(f"T={temperature}: {[round(p, 3) for p in probs.tolist()]}")

# Adding a constant leaves softmax unchanged, so libraries subtract the max to avoid overflow
big = logits + 1000
naive = big.exp() / big.exp().sum()
print(f"Naive: {naive.tolist()}, torch.softmax: {[round(p, 3) for p in torch.softmax(big, dim=0).tolist()]}")

При T = 1 логиты 2.0, 1.0 и 0.1 преобразуются в [0.659, 0.242, 0.099]. Уменьшение температуры вдвое делает распределение более выраженным: [0.864, 0.117, 0.019], а её удвоение сглаживает распределение: [0.502, 0.304, 0.194]. Если добавить 1 000 к каждому логиту, наивная формула переполнится и выведет [nan, nan, nan], тогда как torch.softmax по-прежнему вернёт [0.659, 0.242, 0.099].

Softmax при обучении#

Классификаторы обучают, одновременно используя softmax и функцию потерь кросс-энтропии. Функция потерь равна −log(pᵧ), то есть отрицательному логарифму вероятности, присвоенной правильному классу y; её градиент по логитам равен просто p − y — разности между предсказанными вероятностями и меткой в формате one-hot. Поэтому фреймворки объединяют эти операции: CrossEntropyLoss в PyTorch принимает исходные логиты и внутри вычисляет log-softmax, что устойчивее, чем брать логарифм отдельно вычисленных вероятностей. Обученная таким образом модель выдаёт логиты, а softmax применяется только тогда, когда вероятности нужны на этапе инференса.

Где используется Softmax#

  • Классификация изображений: Последний слой классификатора выдаёт по одному логиту на каждый класс, а softmax преобразует их в оценки уверенности, которые видит пользователь.
  • Механизм внимания: Трансформеры вычисляют softmax(QKᵀ / √dₖ) для оценок сходства между запросом и каждым ключом, поэтому сумма весов внимания для каждого токена равна 1. Деление на √dₖ не даёт оценкам расти вместе с размерностью и приводить softmax к насыщению.
  • Генерация текста: На каждом шаге большая языковая модель (LLM) применяет softmax к словарю из десятков или сотен тысяч токенов; температура сэмплирования — это указанное выше значение T. Затем сэмплирование по ядру выбирает токен из минимального набора, вероятности которого в сумме достигают заданного порога.
  • Обучение с подкреплением: Применение softmax к значениям действий формирует политику, которая обычно выбирает лучшее действие, но продолжает исследовать и другие варианты; температура задаёт баланс между исследованием и использованием уже известных вариантов.

Модели классификации YOLO26 применяют softmax в классификационной головке на этапе инференса, а атрибут probs каждого результата содержит полное распределение по 1 000 классам ImageNet:

from ultralytics import YOLO

# Load a YOLO26 classification model trained on ImageNet
model = YOLO("yolo26n-cls.pt")
results = model("https://ultralytics.com/images/bus.jpg")

# probs holds the softmax output of the classification head
probs = results[0].probs
for index, conf in zip(probs.top5, probs.top5conf.tolist()):
    print(f"{results[0].names[index]}: {conf:.3f}")
print(f"Sum over all 1,000 classes: {probs.data.sum().item():.3f}")

Выводятся пять наиболее вероятных классов с их вероятностями, а сумма вероятностей по всем 1 000 классам равна 1.000, поскольку головка возвращает распределение softmax.

  • Сигмоида: Независимо сжимает каждую оценку до диапазона от 0 до 1, поэтому сумма выходных значений не обязательно равна 1. Сигмоида подходит для бинарных задач и многометочной классификации, например когда на изображении одновременно есть человек и рюкзак; детекторы объектов часто используют её для оценки каждого класса. Для двух классов softmax в точности сводится к сигмоиде от разности двух логитов.
  • Argmax: Возвращает индекс наибольшей оценки — жёсткое решение без градиента. Softmax сохраняет тот же порядок оценок, но остаётся дифференцируемой, поэтому её можно использовать при обучении; argmax от вероятностей softmax даёт тот же результат, что и argmax от логитов.
  • Log-softmax: Логарифм softmax, вычисляемый напрямую для обеспечения устойчивости и используемый функцией потерь кросс-энтропии.
  • Масштабирование температуры: Метод калибровки, при котором после обучения на валидационных данных подбирается одна температура, чтобы вероятности softmax соответствовали фактической точности модели. Предсказанный класс не меняется, поскольку деление каждого логита на одно и то же положительное значение T сохраняет их порядок.

Изучи решения

Компьютерное зрение в спорте

Компьютерное зрение в спорте

Узнай, как Ultralytics YOLO обеспечивает компьютерное зрение в спорте: отслеживание игроков и мяча, аналитика результатов, полезные выводы для тренеров и реабилитация спортсменов.
Подробнее
Компьютерное зрение для аэросъёмки

Компьютерное зрение для аэросъёмки

Превращай снимки с дронов и аэрофотоснимки в полезные данные в реальном времени для сельского хозяйства, аквакультуры, охраны природы и геопространственного анализа с Ultralytics YOLO.
Подробнее
Компьютерное зрение в аэрокосмической отрасли

Компьютерное зрение в аэрокосмической отрасли

Применяй компьютерное зрение в аэрокосмической отрасли с Ultralytics YOLO: для осмотра самолётов, обнаружения посторонних предметов на взлётно-посадочных полосах, наземного обслуживания аэропортов и выявления дефектов композитных материалов.
Подробнее
Компьютерное зрение в сфере безопасности

Компьютерное зрение в сфере безопасности

Защити любой объект с помощью моделей Ultralytics YOLO. ИИ на базе компьютерного зрения обеспечивает мониторинг периметра, обнаружение угроз, распознавание номерных знаков и безопасность на рабочем месте.
Подробнее
Компьютерное зрение в робототехнике

Компьютерное зрение в робототехнике

Создавай более интеллектуальные машины с моделями Ultralytics YOLO. ИИ на базе компьютерного зрения в робототехнике обеспечивает автономную навигацию, восприятие, отслеживание объектов и управление в реальном времени.
Подробнее
Компьютерное зрение в логистике

Компьютерное зрение в логистике

Оптимизируй логистику с моделями Ultralytics YOLO. Визуальный AI обеспечивает проверку посылок, сортировку, отслеживание транспорта и мониторинг безопасности на складе в реальном времени.
Подробнее
Компьютерное зрение в розничной торговле

Компьютерное зрение в розничной торговле

Переосмысли розничную торговлю с моделями Ultralytics YOLO. Визуальный AI обеспечивает отслеживание запасов, мониторинг полок, управление очередями и более глубокое понимание поведения покупателей.
Подробнее
Компьютерное зрение в здравоохранении

Компьютерное зрение в здравоохранении

Создавай решения для здравоохранения с моделями Ultralytics YOLO. Визуальный AI в здравоохранении ускоряет медицинскую визуализацию, улучшает диагностику и мониторинг пациентов.
Подробнее
Компьютерное зрение в производстве

Компьютерное зрение в производстве

Оптимизируй производство с моделями Ultralytics YOLO. Компьютерное зрение на базе ИИ обеспечивает контроль качества, обнаружение дефектов, контроль использования СИЗ и автоматизацию сборочных линий.
Подробнее
Компьютерное зрение в автомобильной отрасли

Компьютерное зрение в автомобильной отрасли

Применяй компьютерное зрение в автомобильной отрасли с моделями Ultralytics YOLO. Компьютерное зрение на базе ИИ повышает безопасность дорожного движения, улучшает помощь водителю и автоматизацию автомобилей, делая дороги умнее.
Подробнее
Компьютерное зрение в сельском хозяйстве

Компьютерное зрение в сельском хозяйстве

Внедряй ИИ для компьютерного зрения в умное сельское хозяйство с моделями Ultralytics YOLO. Используй их для мониторинга посевов, отслеживания скота и точного земледелия, чтобы повысить урожайность и эффективность.
Подробнее

Давай вместе строить будущее ИИ!

Начни свой путь в будущее машинного обучения