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


35

Предположим, я строю NN для классификации. Последний слой является плотным слоем с активацией softmax. У меня есть пять разных классов для классификации. Предположим , что для одного примера обучения, true labelявляется в [1 0 0 0 0]то время как прогнозы будут [0.1 0.5 0.1 0.1 0.2]. Как бы я рассчитал потерю кросс-энтропии для этого примера?

Ответы:


50

Формула кросс-энтропии принимает два распределения, p(x) , истинное распределение, и q(x) , предполагаемое распределение, определенное по дискретной переменной x и задается как

H(p,q)=xp(x)log(q(x))

Для нейронной сети расчет не зависит от следующего:

  • Какой слой был использован.

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

Для нейронной сети, вы обычно видите уравнение , записанное в форме , где y есть вектор подспутниковых и y^ другое значение , принимается непосредственно от выхода последнего слоя) является оценкой. Для одного примера это будет выглядеть так:

L=ylog(y^)

где - векторное произведение точек.

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

L=(1×log(0.1)+0×log(0.5)+...)

L=log(0.1)2.303

Важный момент из комментариев

Это означает, что потери будут одинаковыми, независимо от того, будут ли предсказания [0.1,0.5,0.1,0.1,0.2] или [0.1,0.6,0.1,0.1,0.1] ?

Да, это ключевая особенность мультиклассовых логов, она вознаграждает / наказывает вероятности только правильных классов. Значение не зависит от того, как оставшаяся вероятность распределяется между неверными классами.

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

J=1N(i=1Nyilog(y^i))

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


1
Хорошо. Это означает, что потери были бы одинаковыми, независимо от того, были ли прогнозы [0,1 0,5 0,1 0,1 0,2] или [0,1 0,6 0,1 0,1 0,1]?
Nain

@Nain: это правильно для вашего примера. Потеря кросс-энтропии не зависит от значений вероятностей неправильных классов.
Нил Слейтер,

8

Ответ Нила правильный. Однако я считаю важным отметить, что, хотя потеря не зависит от распределения между неправильными классами (только распределение между правильным классом и остальными), градиент этой функции потерь по-разному влияет на неправильные классы в зависимости от того, как они не правы. Поэтому, когда вы используете кросс-энт в машинном обучении, вы по-разному меняете вес для [0,1 0,5 0,1 0,1 0,2] и [0,1 0,6 0,1 0,1 0,1]. Это связано с тем, что оценка правильного класса нормализуется оценками всех других классов, чтобы превратить его в вероятность.


3
Можете ли вы уточнить это на соответствующем примере?
Nain

@ Лукас Адамс, не могли бы вы привести пример?
Корякинп

Производная EACH y_i (выход softmax) по КАЖДОМУ logit z (или сам параметр w) зависит от КАЖДОГО y_i. medium.com/@aerinykim/…
Аарон

2

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

H(p,q)=i=1np(xi)log(q(xi))=(p(x1)log(q(x1))++p(xn)log(q(xn))

xi

xiH(p,q)=xip(xi)log(q(xi)).
xiH(p,q)=p(xi)1q(xi)q(xi)xi.

p(xi)

Мне интересно, как программные пакеты справляются с прогнозируемым значением 0, тогда как истинное значение было больше нуля ... Так как в этом случае мы делим на ноль.


Я думаю, что вы хотите взять производную по параметру, а не по x_i.
Аарон

1

Давайте начнем с понимания энтропии в теории информации: предположим, вы хотите передать строку алфавитов "aaaaaaaa". Вы можете легко сделать это как 8 * "а". Теперь возьмите другую строку "jteikfqa". Есть ли сжатый способ передачи этой строки? Там нет там. Можно сказать, что энтропия 2-й строки больше, так как для ее передачи нам нужно больше «битов» информации.

log2(n)log2(1/8)

i=1818log2(18)=3

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

H(y,y^)=iyiloge(y^i)

y^y

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


0

Я не согласен с Лукасом. Указанные выше значения уже являются вероятностями. Обратите внимание, что в исходном сообщении указано, что значения имели активацию softmax.

Ошибка распространяется только назад на «горячий» класс, и вероятность Q (i) не изменяется, если вероятности внутри других классов смещаются между собой.


2
Лукас прав. В архитектуре, описанной OP, градиент во всех логах (в отличие от выходов) не равен нулю, потому что функция softmax соединяет их все. Таким образом, ошибка [градиента] в «горячем» классе распространяется на все выходные нейроны.
Нил Слэйтер

+1 для Нила и Лукаса
Аарон

-1

Проблема в том, что вероятности исходят из «сложной» функции, которая включает другие выходы в заданное значение. Результаты взаимосвязаны, поэтому таким образом мы выводим не по фактическому результату, а по всем входам последней функции активации (softmax) для каждого результата.

piyi

Другое аккуратное описание на gombru.github.io/2018/05/23/cross_entropy_loss .

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


1
Добро пожаловать в Stack Exchange. Однако то, что вы написали, похоже, не является ответом на вопрос ОП о расчете потерь от перекрестной энтропии.
user12075
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.