Что такое кросс-энтропия?

95

Я знаю, что есть много объяснений того, что такое кросс-энтропия, но я все еще в замешательстве.

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

театолог
источник
11
Не подходит для SO. Вот аналогичный вопрос на родственном сайте datascience
Метрополис,

Ответы:

234

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

Например, предположим, что для конкретного обучающего экземпляра истинная метка - B (из возможных меток A, B и C). Таким образом, горячая раздача для этого обучающего экземпляра:

Pr(Class A)  Pr(Class B)  Pr(Class C)
        0.0          1.0          0.0

Вы можете интерпретировать приведенное выше истинное распределение как означающее, что обучающий экземпляр имеет 0% вероятность быть классом A, 100% вероятность быть классом B и 0% вероятность быть классом C.

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

Pr(Class A)  Pr(Class B)  Pr(Class C)
      0.228        0.619        0.153

Насколько близко прогнозируемое распределение к истинному распределению? Это то, что определяет потеря кросс-энтропии. Используйте эту формулу:

Формула кросс-энтропийных потерь

Где p(x)истинное распределение вероятностей и q(x)предсказанное распределение вероятностей. Сумма превышает три класса A, B и C. В этом случае убыток составляет 0,479 :

H = - (0.0*ln(0.228) + 1.0*ln(0.619) + 0.0*ln(0.153)) = 0.479

Вот насколько «неверно» или «далеко» ваше предсказание от истинного распределения.

Перекрестная энтропия - одна из многих возможных функций потерь (еще одна популярная функция - потеря шарнира SVM). Эти функции потерь обычно записываются как J (тета) и могут использоваться в рамках градиентного спуска, который представляет собой итерационный алгоритм для перемещения параметров (или коэффициентов) к оптимальным значениям. В приведенном ниже уравнении вы бы заменили J(theta)на H(p, q). Но обратите внимание, что вам нужно H(p, q)сначала вычислить производную по параметрам.

градиентный спуск

Итак, чтобы напрямую ответить на ваши исходные вопросы:

Это всего лишь метод описания функции потерь?

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

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

Да, функцию потерь кросс-энтропии можно использовать как часть градиентного спуска.

Дальнейшее чтение: один из моих других ответов, связанных с TensorFlow.

stackoverflowuser2010
источник
Итак, кросс-энтропия описывает потерю суммой вероятностей для каждого примера X.
theateist 01
Итак, можем ли мы вместо описания ошибки как кросс-энтропии описать ошибку как угол между двумя векторами (косинусное сходство / угловое расстояние) и попытаться минимизировать угол?
theateist 01
1
очевидно, это не лучшее решение, но я просто хотел знать теоретически, можем ли мы использовать cosine (dis)similarityдля описания ошибки через угол, а затем попытаться минимизировать угол.
Theateist 02
2
@Stephen: Если вы посмотрите на пример, который я привел, p(x)будет список вероятностей истинности для каждого из классов, которые будут [0.0, 1.0, 0.0. Кроме того, q(x)список предсказанной вероятности для каждого из классов, [0.228, 0.619, 0.153]. H(p, q)тогда - (0 * log(2.28) + 1.0 * log(0.619) + 0 * log(0.153))получается, что составляет 0,479. Обратите внимание, что обычно используется np.log()функция Python , которая на самом деле представляет собой естественный журнал; это не имеет значения.
stackoverflowuser2010
1
@HAr: Для быстрого кодирования истинной метки есть только один ненулевой класс, который нас интересует. Однако кросс-энтропия может сравнивать любые два распределения вероятностей; не обязательно, чтобы у одного из них были горячие вероятности.
stackoverflowuser2010
3

Короче говоря, кросс-энтропия (CE) - это мера того, насколько далеко ваше предсказанное значение от истинной метки.

Крест здесь относится к вычислению энтропии между двумя или более функциями / истинными метками (например, 0, 1).

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

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

Суровая малра
источник
1

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

Идея осталась прежней:

  1. когда рассчитанная моделью (softmax) вероятность класса становится близкой к 1 для целевой метки для обучающего экземпляра (представленного с одним горячим кодированием, например), соответствующие потери CCE уменьшаются до нуля

  2. в противном случае он увеличивается по мере того, как прогнозируемая вероятность, соответствующая целевому классу, становится меньше.

Следующий рисунок демонстрирует концепцию (обратите внимание на рисунок, что BCE становится низким, когда оба y и p высокие или оба они одновременно низкие, т. Е. Есть согласие):

введите описание изображения здесь

Кросс-энтропия тесно связана с относительной энтропией или KL-дивергенцией, которая вычисляет расстояние между двумя распределениями вероятностей. Например, между двумя дискретными PMFS соотношение между ними показано на следующем рисунке:

введите описание изображения здесь

Сандипан Дей
источник