У многих из вас возникает следующий вопрос: «В каких ситуациях мне следует использовать определенную функцию потерь, например категориальную, разреженную, двоичную и т. д.?»
Итак, возьмем этот пример функций потерь и их случаев:
Регрессия, числовое значение
Нечего сказать. Это самый простой случай, и нам не нужно объяснять, как он работает. Просто знайте, что функция активации является линейной, а функция потерь может быть MSE (Mean Square Error).
Подробнее о регрессии см. здесь.
Классификация:
Задачи классификации можно разделить на:
- бинарная классификация (2 класса)
- Единая этикетка, мультиклассовая классификация.
- Множественная маркировка, многоклассовая классификация.
Для всех этих случаев мы определим кросс-энтропийную потерю. Основным отличием будет вход (выход функций активации) в эту потерю.
Формулировка Cross-Entropy Loss следующая:
Binary: 2 Classes
Мультиклассы:
Логистические потери и Мультиномиальные логистические потери — это другие названия кросс-энтропийных потерь.
Двоичная классификация, бинарная функция кросс-энтропийных потерь
В данном случае ванильная классификация (2 класса). Для этого требуется только одно выходное значение от -1 до 1. Двоичная классификация с одним выходом должна использовать функцию сигмоид в качестве активации.
Также называется сигмоидной кросс-энтропийной потерей. Это активация сигмоиды плюс потеря кросс-энтропии.
Небинарная классификация
Multi-Class позволяет классифицировать только один объект из нескольких объектов в одном образце.
Multi-Label может классифицировать несколько объектов в одном образце.
Единая этикетка для нескольких классов:
В этом случае мы можем рассчитать, используя два разных метода: категориальная кросс-энтропия и разреженная категориальная кросс-энтропия. Мы можем объяснить тему следующим образом:
categorical_crossentropy
(cce
) создает горячий массив, содержащий вероятное совпадение для каждой категории,sparse_categorical_crossentropy
(scce
) создает индекс категории наиболее вероятно соответствующей категории.
Рассмотрим задачу классификации с 5 категориями (или классами).
- В случае
cce
одной горячей целью может быть[0, 1, 0, 0, 0]
, а модель может предсказать[.2, .5, .1, .1, .1]
(вероятно, правильно) - В случае
scce
целевой индекс может быть [1], а модель может предсказать: [.5].
Рассмотрим теперь задачу классификации с 3 классами.
- В случае
cce
одной горячей целью может быть[0, 0, 1]
, а модель может предсказать[.5, .1, .4]
(вероятно, неточно, учитывая, что она дает больше вероятности первому классу) - В случае
scce
целевой индекс может быть[0]
, а модель может прогнозировать[.5]
.
Многие категориальные модели производят вывод scce
, потому что вы экономите место, но теряете МНОГО информации (например, во втором примере индекс 2 также был очень близок). Обычно я предпочитаю вывод cce
для надежности модели.
Существует ряд ситуаций, в которых можно использовать scce
, в том числе:
- когда ваши классы взаимоисключающие, т.е. вас совершенно не волнуют другие достаточно близкие прогнозы,
- количество категорий велико, поэтому вывод прогноза становится подавляющим.
Также называется Softmax Loss. Это активация Softmax плюс потеря кросс-энтропии.
Многоклассовая этикетка с несколькими классами:
В этом случае мы можем применить softmax loss с небольшой модификацией. Для получения более подробной информации, пожалуйста, проверьте:
- https://gombru.github.io/2018/05/23/cross_entropy_loss/
- https://towardsdatascience.com/understanding-binary-cross-entropy-log-loss-a-visual-explanation-a3ac6025181a
Надеюсь, вам понравился этот пост :D