Софтмакс
Изучите функцию Softmax в искусственном интеллекте. Узнайте, как она преобразует логиты в вероятности для многоклассовой классификации с помощью Ultralytics и нейронных сетей.
Softmax — это математическая функция, играющая ключевую роль в области искусственного интеллекта, в частности, служащая в качестве последнего
шага во многих алгоритмах классификации. Она преобразует вектор исходных чисел, часто называемых логитами, в вектор
вероятностей. Это преобразование гарантирует, что все выходные значения будут положительными и в сумме дадут ровно единицу,
эффективно создавая действительное
распределение вероятностей. Благодаря этому
свойству Softmax является стандартной
функцией активации, используемой в выходном слое
нейронных сетей, предназначенных для многоклассовой
классификации, где система должна выбрать одну категорию из более чем двух взаимоисключающих вариантов.
Механика Softmax
В типичном рабочем процессе глубокого обучения (DL)
слои сети выполняют сложные матричные умножения и сложения. Выходные данные последнего слоя, перед
активацией, состоят из необработанных оценок, известных как
логиты. Эти значения могут варьироваться от
отрицательной бесконечности до положительной бесконечности, что затрудняет их прямую интерпретацию как уровней достоверности.
Softmax решает эту проблему, выполняя две основные операции:
-
Возведение в степень: вычисляет экспоненту каждого введенного числа. Этот шаг гарантирует, что все
значения являются неотрицательными (поскольку $e^x$ всегда положительно) и снижает оценку значений, которые значительно ниже
максимального, одновременно выделяя самые высокие оценки.
-
Нормализация: суммирует эти экспоненциальные значения и делит каждую отдельную экспоненту на эту
общую сумму. Этот процесс нормализации масштабирует
числа, чтобы они представляли части целого, позволяя разработчикам интерпретировать их как процентные показатели достоверности.
Применение в реальном мире
Способность выводить четкие вероятности делает Softmax незаменимым в различных отраслях промышленности и
задачах машинного обучения (ML).
-
Классификация изображений: в компьютерном зрении модели используют Softmax для классификации изображений. Например,
когда модель классификации Ultralytics анализирует
фотографию, она может выдать оценки для таких классов, как «голден ретривер», «немецкая овчарка» и
«пудель». 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 (Rectified Linear Unit):
ReLU используется в основном в скрытых слоях сети для введения нелинейности. В отличие от Softmax, ReLU не
ограничивает выходы определенным диапазоном (он просто выдает ноль для отрицательных входов и сам вход для положительных
) и не генерирует вероятностное распределение.
-
Argmax: в то время как Softmax предоставляет вероятности для всех классов, функция
Argmax часто используется в
сочетании с ней для выбора единственного индекса с наибольшей вероятностью. Softmax предоставляет «мягкую»
уверенность, а Argmax — «жесткое» окончательное решение.
Расширенная интеграция
В современных ML-конвейерах Softmax часто вычисляется неявно в рамках функций потерь. Например,
потеря кросс-энтропии
объединяет Softmax и отрицательную логарифмическую вероятность в один математический шаг для улучшения численной стабильности во время
обучения. Такие платформы, как Ultralytics , автоматически обрабатывают эти
сложности, позволяя пользователям обучать надежные модели без ручной реализации этих математических
операций.