Выбор ответа Middle Активации и функции потерь спрашивают часто обновлено

Устойчивый softmax

Вопрос

Зачем при вычислении softmax вычитают максимальный логит?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Чтобы exp не переполнился; результат не меняется, ведь softmax инвариантен к сдвигу. softmax(z - c) = softmax(z) для любой константы c: множитель e⁻ᶜ сокращается. exp(1000) в float переполняется до inf, а после вычитания максимума наибольший показатель равен 0.

Варианты ответа

  1. Чтобы вероятности стали более уверенными: после сдвига максимальный класс получает больше массы
  2. Чтобы сумма вероятностей стала равна 1: без вычитания нормировка получается приближённой
  3. Чтобы избежать отрицательных вероятностей, когда часть логитов меньше нуля
  4. Чтобы exp не переполнился; результат не меняется, ведь softmax инвариантен к сдвигуправильный ответ

Разбор

softmax(z - c) = softmax(z) для любой константы c: множитель e⁻ᶜ сокращается. exp(1000) в float переполняется до inf, а после вычитания максимума наибольший показатель равен 0. Аналогично log-softmax считают через logsumexp.

  • Уверенность не меняется, меняется только численная устойчивость.
  • Сумма равна 1 и без сдвига.
  • Отрицательных вероятностей у softmax не бывает.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.