Softmax
Изучи функцию Softmax в ИИ. Узнай, как она преобразует логиты в вероятности для многоклассовой классификации с использованием Ultralytics YOLO26 и нейронных сетей.
Softmax — это математическая функция, имеющая ключевое значение для сферы искусственного интеллекта и выступающая в качестве завершающего шага во многих алгоритмах классификации. Она преобразует вектор исходных чисел, часто называемых логитами, в вектор вероятностей. Такое преобразование гарантирует, что все выходные значения будут положительными и в сумме будут равны ровно единице, эффективно формируя корректное распределение вероятностей. Благодаря этому свойству Softmax является стандартной функцией активации, используемой на выходном слое нейронных сетей, предназначенных для многоклассовой классификации, где системе необходимо выбрать одну категорию из более чем двух взаимоисключающих вариантов.
Механика работы Softmax#
В типичном рабочем процессе глубокого обучения (DL) слои сети выполняют сложные матричные умножения и сложения. Выходные данные финального слоя до активации состоят из исходных оценок, известных как логиты. Эти значения могут находиться в диапазоне от отрицательной бесконечности до положительной бесконечности, что затрудняет их прямую интерпретацию в качестве уровней уверенности.
Softmax решает эту задачу с помощью двух основных операций:
-
Возведение в степень: Функция вычисляет экспоненту каждого входного числа. Этот шаг гарантирует, что все значения будут неотрицательными (так как $e^x$ всегда положительно), и штрафует значения, которые значительно ниже максимального, при этом выделяя наибольшие оценки.
-
Нормализация: Она суммирует эти экспоненциальные значения и делит каждую отдельную экспоненту на эту общую сумму. Этот процесс нормализации масштабирует числа так, чтобы они представляли части целого, позволяя разработчикам интерпретировать их как процентные оценки уверенности.
Реальные приложения#
Способность выводить четкие вероятности делает Softmax незаменимой в различных отраслях и задачах машинного обучения (ML).
- Классификация изображений: В компьютерном зрении модели используют Softmax для категоризации изображений. Например, когда модель классификации Ultralytics YOLO26 анализирует фотографию, она может выдать оценки для таких классов, как «Золотистый ретривер», «Немецкая овчарка» и «Пудель». Softmax преобразует эти оценки в вероятности (например, 0.85, 0.10, 0.05), указывая на высокую уверенность в том, что на изображении содержится золотистый ретривер. Это имеет решающее значение для приложений, начиная от автоматической организации фотографий и заканчивая медицинской диагностикой в сфере ИИ в здравоохранении.
- Обработка естественного языка (NLP): Softmax — это движок генерации текста в больших языковых моделях (LLM). Когда такая модель, как Transformer, генерирует предложение, она предсказывает следующее слово (токен) путем расчета оценки для каждого слова в своем словаре. Softmax превращает эти оценки в вероятности, позволяя модели выбрать наиболее вероятное следующее слово, что обеспечивает плавный машинный перевод и разговорный ИИ.
- Обучение с подкреплением: Агенты в обучении с подкреплением часто используют Softmax для выбора действий. Вместо того чтобы всегда выбирать действие с наибольшим значением, агент может использовать вероятности для изучения различных стратегий, балансируя между исследованием и использованием в таких средах, как управление роботами или игра.
Пример кода на Python#
Следующий пример демонстрирует, как загрузить предобученную модель классификации YOLO26 и получить доступ к оценкам вероятностей, сгенерированным с помощью Softmax.
from ultralytics import YOLO
# Load a pre-trained YOLO26 classification model
model = YOLO("yolo26n-cls.pt")
# Run inference on a sample image
results = model("https://ultralytics.com/images/bus.jpg")
# The model applies Softmax internally. Access the top prediction:
# The 'probs' attribute contains the probability distribution.
top_prob = results[0].probs.top1conf.item()
top_class = results[0].names[results[0].probs.top1]
print(f"Predicted Class: {top_class}")
print(f"Confidence (Softmax Output): {top_prob:.4f}")Отличие Softmax от смежных понятий#
Хотя Softmax доминирует в сценариях с несколькими классами, важно отличать ее от других математических функций, используемых при обучении моделей и проектировании архитектуры:
- Сигмоида: Функция сигмоиды также масштабирует значения в диапазоне от 0 до 1, но она обрабатывает каждый выход независимо. Это делает сигмоиду идеальной для бинарной классификации (да/нет) или многоклассовой классификации, где классы не являются взаимоисключающими (например, изображение может содержать одновременно «Человека» и «Рюкзак»). Softmax заставляет вероятности в сумме давать единицу, из-за чего классы начинают конкурировать друг с другом.
- ReLU (исправляющий линейный блок): ReLU используется в основном во внутренних слоях сети для внесения нелинейности. В отличие от Softmax, ReLU не ограничивает выходные данные определенным диапазоном (она просто выдает ноль для отрицательных входных данных и сами входные данные для положительных) и не генерирует распределение вероятностей.
- Argmax: В то время как Softmax предоставляет вероятности для всех классов, функция Argmax часто используется в связке с ней для выбора единственного индекса с наибольшей вероятностью. Softmax обеспечивает «мягкую» уверенность, тогда как Argmax принимает «жесткое» окончательное решение.
Расширенная интеграция#
В современных пайплайнах машинного обучения Softmax часто вычисляется неявно внутри функций потерь. Например, кросс-энтропийные потери объединяют Softmax и отрицательное логарифмическое правдоподобие в один математический шаг для улучшения численной стабильности во время обучения. Платформы вроде Ultralytics Platform автоматически справляются с этими сложностями, позволяя пользователям обучать надежные модели без ручной реализации данных математических операций.






