В MNIST для начинающих ML они определяют кросс-энтропию как
- это прогнозируемое значение вероятности для класса а - истинная вероятность для этого класса.
Вопрос 1
Разве это не проблема, что (в ) может быть 0? Это означало бы, что у нас действительно плохой классификатор, конечно. Но подумайте об ошибке в нашем наборе данных, например, об «очевидном», 1
помеченном как 3
. Будет ли это просто сбой? Разве выбранная нами модель (активация softmax в конце) никогда не дает вероятности 0 для правильного класса?
вопрос 2
Я узнал, что кросс-энтропия определяется как
Что правильно? У вас есть ссылки на учебники для любой из версий? Как эти функции различаются по своим свойствам (как функции ошибок для нейронных сетей)?
machine-learning
tensorflow
Мартин Тома
источник
источник
Ответы:
Один из способов интерпретации кросс-энтропии состоит в том, чтобы рассматривать ее как (минус) логарифмическую вероятность для данныхy′i в модели yi .
А именно, предположим, что у вас есть некоторая фиксированная модель (она же «гипотеза»), которая предсказывает дляn классов {1,2,…,n} их гипотетические вероятности появления y1,y2,…,yn . Предположим, что теперь вы наблюдаете (в действительности) k1 экземпляров класса 1 , k2 экземпляров класса 2 , kn экземпляров класса n и т. Д. Согласно вашей модели вероятность этого:
P[data|model]:=yk11yk22…yknn.
Взяв логарифм и поменяв знак:
−logP[data|model]=−k1logy1−k2logy2−⋯−knlogyn=−∑ikilogyi
Если теперь разделить правую сумму на количество наблюденийN=k1+k2+⋯+kn и обозначить эмпирические вероятности так какy′i=ki/N , вы получите перекрестную энтропию:
−1NlogP[data|model]=−1N∑ikilogyi=−∑iy′ilogyi=:H(y′,y)
Кроме того, логарифмическая вероятность набора данных для данной модели может быть интерпретирована как мера «длины кодирования» - количества битов, которые вы ожидаете потратить на кодирование этой информации, если ваша схема кодирования будет основана на вашей гипотезе.
Это следует из наблюдения, что для независимого события с вероятностьюyi требуется как минимум −log2yi битов для его кодирования (при условии эффективного кодирования), и, следовательно, выражение
−∑iy′ilog2yi,
буквально является ожидаемым длина кодирования, где длины кодирования для событий вычисляются с использованием «гипотетического» распределения, в то время как ожидание принимается за фактическое.
Наконец, вместо того, чтобы говорить «мера ожидаемой длины кодирования», мне действительно нравится использовать неофициальный термин «мера неожиданности». Если вам нужно много битов для кодирования ожидаемого события из дистрибутива, дистрибутив «действительно удивителен» для вас.
Имея в виду эту интуицию, ответы на ваши вопросы можно увидеть следующим образом:
Вопрос 1 . Да. Это проблема, когда соответствующийy′i отличен от нуля одновременно . Это соответствует ситуации, когда ваша модель полагает, что некоторый класс имеет нулевую вероятность появления, и все же класс появляется в реальности. В результате «сюрприз» вашей модели бесконечно велик: ваша модель не учитывает это событие, и теперь для ее кодирования требуется бесконечно много битов. Вот почему вы получаете бесконечность как свою перекрестную энтропию.
Чтобы избежать этой проблемы, вы должны убедиться, что ваша модель не делает необдуманных предположений о невозможности чего-либо, пока это может произойти. В действительности, люди склонны использовать сигмоидные или «мягкие» функции в качестве моделей своих гипотез, которые достаточно консервативны, чтобы оставить хотя бы какой-то шанс для каждого варианта.
Если вы используете какую-то другую модель гипотезы, вы должны ее упорядочить (иначе говоря, «сгладить»), чтобы она не выдвигала гипотезы о нулях там, где это не должно быть.
Вопрос 2 . В этой формуле обычно предполагается, чтоy′i равен 0 или 1 , тогда как yi является гипотезой вероятности модели для соответствующего входа. Если вы посмотрите внимательно, вы увидите, что это просто −logP[data|model] для двоичных данных, эквивалент второго уравнения в этом ответе.
источник
Это означает, что формула фиксирует ошибку только в целевом классе. Он отбрасывает любое понятие ошибок, которые вы можете считать «ложноположительными», и не заботится о том, как распределяются предсказанные вероятности, кроме предсказанной вероятности истинного класса.
Вопрос 1
0
log( max( y_predict, 1e-15 ) )
вопрос 2
Если вы модифицируете такую сеть, чтобы иметь два противоположных выхода и использовали softmax плюс первое определение logloss, то вы можете видеть, что на самом деле это то же самое измерение ошибок, но складывающее метрику ошибок для двух классов в один выход.
Если существует более одного класса, для которого можно предсказать членство, и классы не являются исключительными, то есть примером может быть любой или все классы одновременно, тогда вам нужно будет использовать эту вторую формулировку. Для распознавания цифр это не так (записанная цифра должна иметь только один «истинный» класс)
источник
Первый вопрос:
Выше ответ объяснил основы вашей первой формулы, перекрестной энтропии, определенной в теории информации.
С мнением, отличным от теории информации:
Вы можете проверить, что первая формула не имеет наказания за ложную положительность (истина ложна, но ваша модель предсказывает, что она верна), а вторая - за ложную положительность. Следовательно, выбор первой формулы или второй будет влиять на ваши метрики (то есть, какую статистическую величину вы хотели бы использовать для оценки вашей модели).
В обывательском слове:
Если вы хотите, чтобы почти все хорошие люди стали вашими друзьями, но хотите, чтобы некоторые плохие люди стали вашими друзьями, используйте первую формулу для критерия.
Если вы хотите наказать себя за то, что принимаете некоторых плохих людей в качестве своего друга, но в то же время показатель принятия хороших людей может быть ниже, чем первое условие, тогда используйте вторую формулу.
Хотя, я думаю, большинство из нас критически настроены и хотели бы выбрать второй (так как многие ML-пакеты предполагают, что такое кросс-энтропия).
Второй вопрос:
Таким образом, когда есть только два класса (K = 2), у вас будет вторая формула.
источник
Эти проблемы решаются с помощью учебника по использованию softmax.
Для 1) вы правы, что softmax гарантирует ненулевой вывод, потому что он возводит в степень его вход. Для активаций, которые не дают этой гарантии (например, relu), просто добавить очень маленький положительный термин к каждому выводу, чтобы избежать этой проблемы.
Что касается 2), они, очевидно, не одинаковы, но я разработал мягкую формулировку, которую они дали, решает проблему. Если вы не используете softmax, это приведет к тому, что вы выучите огромные термины смещения, которые предполагают 1 для каждого класса для любого входа. Но поскольку они нормализуют softmax во всех классах, единственный способ максимизировать вывод правильного класса - сделать его большим по сравнению с неверными классами.
источник
(a) верно для предсказания с несколькими классами (на самом деле это двойное суммирование), (b) такое же, как (a) для предсказания с двумя классами. Оба кросс-энтропии.
Пример:
Оба (а) и (б) рассчитываются как:
Вывод:
Окончательная формула по всем тренировочным точкам:
который такой же, как (б).
Кросс-энтропия (а) над классами (одно суммирование)
Кросс-энтропия (а) над классами:
Эта версия не может быть использована для задачи классификации. Позволяет повторно использовать данные из предыдущего примера:
источник