Кросс-энтропия для классификации

Бинарная, мультиклассовая и многоклассовая классификация

TL; DR в конце

Кросс-энтропия - часто используемая функция потерь для задач классификации. Посмотрим, зачем и где его использовать. Начнем с типичной задачи классификации на несколько классов.

Мультиклассовая классификация

Какой класс на изображении - собака, кошка или панда? Это может быть только один из них. Давайте представим собаку.

Прогноз представляет собой вектор вероятности, что означает, что он представляет собой предсказанные вероятности всех классов, в сумме до 1.

В нейронной сети вы обычно добиваетесь этого предсказания, активировав последний слой функцией softmax, но все идет - это просто должен быть вектор вероятности.

Давайте вычислим потерю кросс-энтропии для этого изображения.

Убыток - это мера производительности модели. Чем ниже, тем лучше. При обучении модель стремится получить минимально возможные потери.

Цель представляет собой вероятности для всех классов - собак, кошек и панд.

Целью мультиклассовой классификации является горячий вектор, то есть он имеет 1 в одной позиции и 0 во всех остальных местах.

Для класса собак мы хотим, чтобы вероятность была равна 1. Для других классов мы хотим, чтобы она была равна 0.

Мы начнем с расчета потерь для каждого класса отдельно, а затем их суммирования. Потери для каждого отдельного класса рассчитываются следующим образом:

Не беспокойтесь о формуле, мы рассмотрим это через секунду. Просто обратите внимание, что если вероятность класса в цели равна 0, потери для нее также равны 0.

И напоследок - проигрыш в классе собак:

Что означает это число?

Давайте посмотрим, как бы повел себя убыток, если бы прогнозируемая вероятность была другой:

  • Потери равны 0, когда прогноз равен 1 (то же, что и цель).
  • Потеря бесконечна, если прогноз равен 0 (полная противоположность нашей цели).
  • Мы никогда не сможем предсказать что-то меньше 0 или больше 1, поэтому нам не о чем беспокоиться.

Что, если мы предскажем что-то посередине?

Чем дальше мы удаляемся от цели, тем круче убытки.
Вы можете думать об этом как о концепции, аналогичной квадрату ошибки: чем дальше мы отходим от цели, тем быстрее растет ошибка.

Почему для классов кота и панды проигрыш равен 0?

Похоже, мы награждаем модель низкими потерями, даже если она предсказывает высокую вероятность для класса, которого нет на изображении.

Мы не возражаем, если модель предсказывает наличие кошки с вероятностью 80%, если ее нет, потому что тогда у нее остается только 20%, чтобы предсказать правильный класс. Там потери будут намного больше. Другими словами, нас не интересует, какие классы модель тратит впустую предсказанные вероятности, а только то, насколько правильно она определяет единственный существующий класс.

Общие потери для этого изображения - это сумма потерь для каждого класса.

Его можно сформулировать как сумму по всем классам.

Это формула кросс-энтропии, которая может использоваться как функция потерь для любых двух векторов вероятности. Это наша потеря для 1 изображения - изображения собаки, которое мы показали в начале. Если бы мы хотели потерять для нашей партии или всего набора данных, мы просто суммировали бы потери отдельных изображений.

Предположим, у нас есть 2 разные модели, дающие следующие прогнозы:

С точки зрения кросс-энтропии модель B лучше - у нее меньшие кросс-энтропийные потери. Если вы понимаете, почему - молодцы! Есть панда.

Обучение моделей, наказывая за большие ошибки гораздо больше, чем за мелкие, оказалось хорошей идеей в машинном обучении.

Зачем суммировать по всем классам, если потери для большинства из них равны 0?
Если наша цель - горячий вектор, мы действительно можем забыть цели и прогнозы для всех других классов. и вычисляем только потери для горячего класса. Это отрицательный натуральный логарифм нашего прогноза.

Это называется категориальной кросс-энтропией - частным случаем кросс-энтропии, где нашей целью является горячий вектор.

Дело в том, что потеря кросс-энтропии работает даже для распределений, которые не являются одними горячими векторами.
Потеря будет работать даже для этой задачи:

С кросс-энтропией мы все еще могли бы вычислить потери, и они были бы минимальными, если бы все классы были правильными, и по-прежнему имели бы свойство гораздо больше наказывать за большие ошибки.

В нашем примере с одной горячей целью энтропия для удобства была равна 0, поэтому минимальная потеря была равна 0. Если ваша цель - это вектор вероятности, который не одноразовый, энтропия (минимальная потеря) будет больше. чем 0, но вы все равно можете использовать потерю кросс-энтропии.

Если вам интереснее, что такое энтропия, рекомендую посмотреть это видео.

Бинарная классификация

Двоичная кросс-энтропия - это еще один частный случай кросс-энтропии, который используется, если наша цель равна 0 или 1. В нейронной сети вы обычно добиваетесь этого предсказания с помощью сигмоидной активации.

Цель - не вектор вероятности. Мы все еще можем использовать кросс-энтропию с небольшим трюком.

Мы хотим предсказать, есть ли на изображении панда или нет.

Это то же самое, как если бы мы преобразовали цель в один-горячий вектор, а наше предсказание в вектор вероятности - вероятность панды была бы такой же, как и предсказание, а вероятность не-панды была бы 1-предсказанием. Другими словами, если мы прогнозируем 0,6, это означает, что мы говорим, что это 60% панда и 40% не-панда.

Эту потерю можно вычислить с помощью функции кросс-энтропии, поскольку сейчас мы сравниваем только два вектора вероятности или даже с категориальной кросс-энтропией, поскольку наша цель - это горячий вектор. Его также можно вычислить без преобразования с помощью двоичной кросс-энтропии.

Мы просто применяем натуральный логарифм к разнице между нашим прогнозом и нашей целью.

И это все, что касается бинарной кросс-энтропии.

Классификация с несколькими этикетками

Кросс-энтропия также может использоваться как функция потерь для задачи с несколькими метками с помощью этого простого трюка:

Обратите внимание, что наша цель и прогноз не вектор вероятности. Возможно, что на изображении присутствуют все классы, а не ни один из них. В нейронной сети это обычно достигается с помощью сигмоидной активации.

Мы можем рассматривать эту проблему как несколько подзадач двоичной классификации. Допустим, мы хотим только предсказать, есть собака или нет.

Мы знаем, что наша цель - 1, и мы предсказали 0,6

Мы вычислим бинарную кросс-энтропию для этой подзадачи:

И проделайте то же самое с другими классами.

Для кошки наша цель - 0, поэтому другая часть бинарной кросс-энтропии компенсируется:

И просуммируем потери по каждой подзадаче:

Вот и все, что касается потери перекрестной энтропии для классификации с несколькими метками.

Заключение / TL; DR

Кросс-энтропия - общая формула, используемая для расчета потерь между двумя векторами вероятности. Чем дальше мы удаляемся от нашей цели, тем больше растет ошибка - аналогично квадратной ошибке.

Мультиклассовая классификация - мы используем перекрестную энтропию с несколькими классами - особый случай перекрестной энтропии, когда целью является вектор с горячим кодированием. Его можно вычислить с помощью формулы кросс-энтропии, но можно упростить.

Двоичная классификация - мы используем двоичную кросс-энтропию - особый случай кросс-энтропии, когда наша цель - 0 или 1. Ее можно вычислить с помощью формулы кросс-энтропии, если мы преобразуем цель в единицу. -hot вектор, например [0,1] или [1,0] и прогнозы соответственно. Мы можем вычислить его даже без этого преобразования по упрощенной формуле.

Классификация с несколькими метками. Наша цель может представлять несколько (или даже ноль) классов одновременно. Мы вычисляем двоичную кросс-энтропию для каждого класса отдельно, а затем суммируем их для получения полной потери.