У многих из вас возникает следующий вопрос: «В каких ситуациях мне следует использовать определенную функцию потерь, например категориальную, разреженную, двоичную и т. д.?»

Итак, возьмем этот пример функций потерь и их случаев:

Регрессия, числовое значение

Нечего сказать. Это самый простой случай, и нам не нужно объяснять, как он работает. Просто знайте, что функция активации является линейной, а функция потерь может быть 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 с небольшой модификацией. Для получения более подробной информации, пожалуйста, проверьте:

Надеюсь, вам понравился этот пост :D