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

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

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

Ответы

Ответ 1

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

Например, предположим, что для конкретного обучающего экземпляра метка является 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

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

Cross entropy loss formula

Где 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) по параметрам.

gradient descent

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

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

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

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

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

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