Я знаю, что есть много объяснений того, что такое кросс-энтропия, но я все еще в замешательстве.
Это всего лишь метод описания функции потерь? Можем ли мы использовать алгоритм градиентного спуска, чтобы найти минимум с помощью функции потерь?
Я знаю, что есть много объяснений того, что такое кросс-энтропия, но я все еще в замешательстве.
Это всего лишь метод описания функции потерь? Можем ли мы использовать алгоритм градиентного спуска, чтобы найти минимум с помощью функции потерь?
Ответы:
Кросс-энтропия обычно используется для количественной оценки разницы между двумя распределениями вероятностей. Обычно «истинное» распределение (то, которое пытается сопоставить ваш алгоритм машинного обучения) выражается в терминах горячего распределения.
Например, предположим, что для конкретного обучающего экземпляра истинная метка - 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.
cosine (dis)similarity
для описания ошибки через угол, а затем попытаться минимизировать угол.
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 , которая на самом деле представляет собой естественный журнал; это не имеет значения.
Короче говоря, кросс-энтропия (CE) - это мера того, насколько далеко ваше предсказанное значение от истинной метки.
Крест здесь относится к вычислению энтропии между двумя или более функциями / истинными метками (например, 0, 1).
И сам термин энтропия относится к случайности, поэтому его большое значение означает, что ваше предсказание далеки от реальных ярлыков.
Таким образом, веса изменяются для уменьшения CE и, таким образом, в конечном итоге приводит к уменьшению разницы между прогнозируемыми и истинными метками и, следовательно, к большей точности.
В дополнение к вышеперечисленным сообщениям, простейшая форма кросс-энтропийной потери известна как бинарная кросс-энтропия (используется как функция потерь для двоичной классификации, например, с логистической регрессией), тогда как обобщенная версия является категориальной кросс-энтропией (используется как функция потерь для задач мультиклассовой классификации, например, с нейронными сетями).
Идея осталась прежней:
когда рассчитанная моделью (softmax) вероятность класса становится близкой к 1 для целевой метки для обучающего экземпляра (представленного с одним горячим кодированием, например), соответствующие потери CCE уменьшаются до нуля
в противном случае он увеличивается по мере того, как прогнозируемая вероятность, соответствующая целевому классу, становится меньше.
Следующий рисунок демонстрирует концепцию (обратите внимание на рисунок, что BCE становится низким, когда оба y и p высокие или оба они одновременно низкие, т. Е. Есть согласие):
Кросс-энтропия тесно связана с относительной энтропией или KL-дивергенцией, которая вычисляет расстояние между двумя распределениями вероятностей. Например, между двумя дискретными PMFS соотношение между ними показано на следующем рисунке: