Выбор ответа Middle Активации и функции потерь спрашивают часто обновлено
Устойчивый softmax
Вопрос
Зачем при вычислении softmax вычитают максимальный логит?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Чтобы exp не переполнился; результат не меняется, ведь softmax инвариантен к сдвигу. softmax(z - c) = softmax(z) для любой константы c: множитель e⁻ᶜ сокращается. exp(1000) в float переполняется до inf, а после вычитания максимума наибольший показатель равен 0.
Варианты ответа
- Чтобы вероятности стали более уверенными: после сдвига максимальный класс получает больше массы
- Чтобы сумма вероятностей стала равна 1: без вычитания нормировка получается приближённой
- Чтобы избежать отрицательных вероятностей, когда часть логитов меньше нуля
- Чтобы exp не переполнился; результат не меняется, ведь softmax инвариантен к сдвигуправильный ответ
Разбор
softmax(z - c) = softmax(z) для любой константы c: множитель e⁻ᶜ сокращается. exp(1000) в float переполняется до inf, а после вычитания максимума наибольший показатель равен 0. Аналогично log-softmax считают через logsumexp.
- Уверенность не меняется, меняется только численная устойчивость.
- Сумма равна 1 и без сдвига.
- Отрицательных вероятностей у softmax не бывает.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.