Выбор выходного слоя и потери
Вопрос
Как вы выбираете функцию активации на выходе и функцию потерь под задачу? Пройдитесь по типам задач.
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
Регрессия: линейный выход, MSE, MAE или Huber
Бинарная классификация: один логит, BCEWithLogits
Multi-class: K логитов, CrossEntropyLoss без явного softmax
Multi-label: K логитов, BCE по каждому
Особые случаи: ранжирование, счётчики (Poisson), квантили, дисбаланс (веса, focal)
Что могут спросить следом
- Почему не ставят softmax перед CrossEntropyLoss?
- Какую потерю взять для прогноза 90-го перцентиля времени доставки?
Разбор
Выход и потеря следуют из распределения цели. Регрессия: линейный выход без активации, MSE как базовый вариант (гауссов шум), MAE или Huber при выбросах, квантильная потеря, если нужен перцентиль, Poisson loss для счётчиков. Бинарная классификация: один логит и BCEWithLogitsLoss, сигмоиду применяю только при инференсе. Классификация на K взаимоисключающих классов: K логитов и CrossEntropyLoss, softmax внутри потери, поэтому явный softmax перед ней это баг. Multi-label: K логитов и бинарная кросс-энтропия по каждому. При дисбалансе добавляю веса классов или pos_weight, в детекции focal loss. Для ранжирования и поиска парные или списочные потери и контрастивные функции вроде InfoNCE.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Ещё по теме «Активации и функции потерь»
- Эволюция активаций
- BCEWithLogitsLoss
- Устойчивый softmax
- Посчитайте softmax
- GELU и SiLU
- Huber loss
- MSE для классификации
- Активация на выходе