3

Демонстрация работы формулы softmax с разной температурой

Серия Машинное обучение и все, что вокруг него

Шпаргалка демонстрирует работу формулы softmax с разной температурой (`τ`).

Возьмем простой набор "оценок" (логитов) для трех классов и посмотрим, как меняются вероятности при изменении температуры.

Функция softmax

Функция softmax

Вычисления

Вычисления

Визуализация результатов

Визуализация результатов

Пример наглядно показывает, как параметр температуры τ позволяет контролировать "уверенность" или "случайность" выбора в функции softmax.

  • argmax (сокращение от "arguments of the maximum", аргументы максимума) — это математическая операция, которая находит аргумент (то есть входное значение или индекс), при котором функция или набор значений достигает своего максимума.

Проще говоря:

  • max находит само максимальное значение.

  • argmax находит позицию (индекс) или входное значение, где это максимальное значение находится.

Примеры:

  1. Набор чисел: Пусть у нас есть массив чисел: A = [10, 50, 20, 40]
    max(A) вернет 50 (само максимальное значение).
    argmax(A) вернет 1 (индекс элемента 50, если считать с 0: 10 - индекс 0, 50 - индекс 1, 20 - индекс 2, 40 - индекс 3).

  2. Функция: Пусть есть функция f(x) = -(x - 2)^2 + 10. Эта парабола имеет вершину в точке x=2, где значение функции равно 10.
    Максимальное значение функции max(f(x)) равно 10.
    argmax(f(x)) равен 2 (значение x, при котором функция f(x) максимальна).

В контексте классификации с помощью нейронных сетей и функции softmax:

  1. Модель на выходе обычно выдает "логиты" (оценки) для каждого класса.

  2. Функция softmax преобразует эти логиты в вероятности (числа от 0 до 1, сумма которых равна 1).

  3. Чтобы принять окончательное решение о том, к какому классу относится входной объект, мы обычно выбираем класс с наибольшей вероятностью.

  4. Операция argmax, примененная к массиву вероятностей softmax, вернет индекс класса, у которого самая высокая вероятность.

Пример с Softmax:

  • Логиты: [3.0, 1.0, 0.2]

  • Вероятности после softmax (при T=1): [0.839, 0.114, 0.047] (примерно)

  • Применяем argmax к вероятностям [0.839, 0.114, 0.047].

  • Результат argmax: 0 (потому что максимальное значение 0.839 находится на позиции с индексом 0). Это означает, что модель выбирает первый класс.

При очень низкой температуре (τ → 0) функция softmax приближается к argmax по исходным логитам, так как почти вся вероятность концентрируется на элементе с максимальным логитом.

Семействo функций и операций, связанных с поиском максимальных/минимальных значений

  1. Max (Максимум): Находит и возвращает самое большое значение из набора чисел или значений функции. Пример: max([10, 50, 20, 40]) вернет 50.
    Назначение: Просто найти пиковое значение.

  2. Min (Минимум): Находит и возвращает самое маленькое значение из набора чисел или значений функции. Пример: min([10, 50, 20, 40]) вернет 10.
    Назначение: Найти наименьшее значение, часто используется в функциях потерь (мы хотим минимизировать ошибку).

  3. Argmax (Аргумент максимума): Находит и возвращает индекс (позицию) или входное значение (аргумент), при котором достигается максимальное значение. Не само значение, а его "адрес". Пример: argmax([10, 50, 20, 40]) вернет 1 (индекс элемента 50, если считать с 0). Назначение: Узнать, какой элемент является максимальным. В классификации — узнать индекс класса с наибольшей вероятностью/оценкой.

  4. Argmin (Аргумент минимума): Находит и возвращает индекс (позицию) или входное значение (аргумент), при котором достигается минимальное значение. Пример: argmin([10, 50, 20, 40]) вернет 0 (индекс элемента 10). Назначение: Узнать, какой элемент является минимальным. Например, найти параметр, минимизирующий функцию потерь.

  5. Softmax: Преобразует вектор действительных чисел (логитов) в вектор вероятностей. Каждое выходное значение находится в диапазоне (0, 1), и их сумма равна 1. Большие входные значения получают большие вероятности. Это "мягкая", дифференцируемая версия argmax. Пример: softmax([3.0, 1.0, 0.2]) вернет примерно [0.839, 0.114, 0.047]. Назначение: Получение вероятностного распределения по классам в задачах классификации, используется в механизмах внимания, при генерации текста для выбора следующего слова. Ключевое свойство — дифференцируемость, что позволяет использовать ее в градиентных методах обучения.

  6. LogSoftmax: Применяет логарифм к результату softmax. То есть log(softmax(x)). Пример: log_softmax([3.0, 1.0, 0.2]) вернет примерно [-0.175, -2.175, -3.05]. Назначение: Часто используется в связке с функциями потерь, такими как NLLLoss (Negative Log Likelihood Loss). Вычисление log_softmax напрямую часто более численно стабильно, чем вычисление softmax, а затем взятие логарифма, особенно когда вероятности близки к 0. log(softmax(x)) = x - log(sum(exp(x))) — это позволяет избежать вычисления exp(x), которое может привести к очень большим или очень маленьким числам.

  7. Hardmax: Неформальный термин для операции, которая строго преобразует вектор в "one-hot" вектор, где элемент, соответствующий максимальному значению исходного вектора, становится 1, а все остальные — 0. По сути, это представление результата argmax в виде вектора. Пример: "Hardmax" от [3.0, 1.0, 0.2] будет [1, 0, 0]. Назначение: Теоретическое сравнение с softmax. softmax — это гладкая аппроксимация "hardmax". "Hardmax" не дифференцируема в точках, где есть несколько одинаковых максимумов, и ее градиент равен нулю почти везде, что делает ее непригодной для обучения с помощью градиентного спуска.

  • max/min и argmax/argmin дают точные, но "жесткие" ответы, в то время как

  • softmax предоставляет "мягкую", вероятностную и дифференцируемую альтернативу argmax.

Ссылка на блокнот 👉 https://colab.research.google.com/github/hypo69/1001-python-...

Удачи!

Лига программистов

2.1K постов11.9K подписчиков

Правила сообщества

- Будьте взаимовежливы, аргументируйте критику

- Приветствуются любые посты по тематике программирования

- Если ваш пост содержит ссылки на внешние ресурсы - он должен быть самодостаточным. Вариации на тему "далее читайте в моей телеге" будут удаляться из сообщества

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества