Есть много способов рассчитать потерю классификатора. В Программировании машинного обучения мы используем как минимум три разные формулы потерь. В этом посте объясняется интуитивный смысл одного из них: перекрестная потеря энтропии.

Три птицы в руке

Допустим, мы создаем классификатор, который распознает птиц по их песням. У нас есть три вида птиц:

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

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

Каждая этикетка с горячим кодированием содержит три элемента, которые представляют утку, страуса и колибри соответственно.

Пока что мы заложили основу. Давайте перейдем к действию и рассмотрим пример через классификатор. Мы возвращаем массив из трех чисел от 0 до 1:

Как и в книге, я использовал букву ŷ для вывода классификатора, чтобы отличить его от фактического ярлыка y. Вы можете интерпретировать значения в ŷ как меру уверенности. Классификатор на 0,2 уверен, что слышит крик утки, 0,1 уверен, что это страус, и 0,7 уверен, что это колибри.

Теперь нам нужно число, которое говорит нам, насколько хороша эта классификация. Именно тогда в историю вступает потеря кросс-энтропии.

Объяснение потери перекрестной энтропии

Вот формула потери кросс-энтропии:

Напомним: y - это фактическая метка, а ŷ - результат классификатора. Потеря кросс-энтропии - это отрицательное значение первого, умноженное на логарифм второго. Кроме того, m - это количество примеров, поэтому общая потеря - это средняя потеря по всем примерам.

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

Чтобы понять эту формулу, запомните, что делает потеря: она измеряет расстояние между прогнозом ŷ и фактической меткой y. Если ŷ близко к y, потери должны быть небольшими. Поскольку ŷ отклоняется от y, убыток должен возрасти. Рассмотрим конкретный случай.

Допустим, текущий пример - зов колибри. В этом случае одна метка с горячим кодированием:

Все элементы y равны 0, кроме третьего элемента - того, который представляет колибри. Ради этого примера назовем его «элемент колибри».

Тогда предположим, что мы получаем следующие выходные данные классификатора:

Теперь рассмотрим формулу потерь на единственном примере:

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

Напротив, элемент колибри в ŷ действительно влияет на потери: он умножается на элемент колибри в y, который равен 1. Сложите все вместе, и потеря сводится к:

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

Если элемент колибри в ŷ равен 1, то есть имеет то же значение, что и элемент колибри в y, тогда потери уменьшаются до нуля. По мере того, как ŷ удаляется от 1 и приближается к 0, потери возрастают. В нашем случае элемент колибри равен 0,7, поэтому потеря для этой птичьей песни довольно низка.

Вы можете быть удивлены, узнав, что потеря перекрестной энтропии зависит от одного элемента ŷ. Разве мы не должны рассмотреть и другие элементы? Чтобы развеять это сомнение, помните, что ŷ - это результат функции softmax, что означает, что сумма ее элементов всегда равна 1. Другими словами, мы не нужно возиться со всеми элементами: если один важный элемент близок к 1, то мы знаем, что другие должны быть близки к 0.

Итак, это в двух словах о потерях кросс-энтропии. Резюмируем:

Возьмем важный элемент выходных данных классификатора - то, что мы назвали «элементом колибри».

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

По мере приближения элемента колибри к нулю классификация становится менее точной, а потери растут.

Усредните потери по всему набору тестов, и вы получите потерю кросс-энтропии.

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

Перекрестная энтропия против потери журнала

В книге мы также используем формулу потери журнала:

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

Подумайте, что происходит с потерей перекрестной энтропии, если у вас есть только два класса, то есть если оба y и ŷ имеют два элемента:

  1. y - это горячая кодировка. Один из его элементов равен 0, а другой - 1. Другими словами, каждый элемент y равен 1 минус другой элемент.
  2. ŷ получается из softmax, поэтому сумма двух его элементов равна 1. И снова это означает, что каждый элемент равен 1 минус другой.

Соедините эти два факта и просмотрите приведенные выше формулы. Вы увидите, что потеря журнала - это та же формула, что и потеря кросс-энтропии, примененная к частному случаю двух классов.

Итак, теперь вы знаете, как работает потеря перекрестной энтропии, и в качестве бонуса вы также знаете, как она связана с потерей журнала. Молодец!

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