Краткое объяснение кросс-энтропии; что такое кросс-энтропия, как это работает и пример кода

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

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

  1. Стоит ли мне перестать есть картошку фри перед сном? Они довольно нездоровы ...
  2. Провожу ли я свое время так, как хочу?

Поразмыслив над этими идеями, я понял, что ответ на оба вопроса был нет. Нет, я не должен прекращать есть картошку фри перед сном. Нет, я проводил время не так, как хотел. Итак, пару недель назад я решил узнать все, что мог, о растущей области глубокого обучения. Я также решил писать обо всем, что узнаю (так что, если вам интересно путешествие, обязательно следуйте за мной). Эти статьи вдохновлены курсом Udacity под названием Глубокое обучение с PyTorch. Я очень рекомендую вам это проверить.

Если вы попали сюда из моих последних статей, вы уже знаете, что мы пытаемся найти способы наилучшей классификации данных. Чтобы лучше классифицировать данные, мы хотим максимизировать вероятность модели и минимизировать ее функцию ошибок. Эти две вещи обратно связаны. Кросс-энтропия измеряет эффективность модели классификации на основе вероятности и ошибки, где чем больше вероятность (или больше вероятность) чего-либо, тем ниже кросс-энтропия. Давайте посмотрим на это глубже.

Кросс-энтропия 101

Перекрестная энтропия - это функция потерь, которую можно использовать для количественной оценки разницы между двумя распределениями вероятностей. Лучше всего это можно объяснить на примере.

Предположим, у нас есть две модели, A и B, и мы хотим выяснить, какая из них лучше,

Примечание. Цифры рядом с точками данных представляют вероятность того, что точка имеет тот же цвет. Например, вероятность того, что синяя точка в верхней части графика в модели A будет синей, равна 0,4.

Интуитивно мы знаем, что модель B лучше, поскольку красные точки находятся на красном распределении, а синие точки - на синем распределении. Но как мы можем сделать так, чтобы модель предсказывала это?

Один из способов - взять вероятности каждой точки в модели A и умножить их. Это даст полную вероятность модели, как мы знаем из Общего правила умножения вероятности. Мы можем сделать то же самое для модели B,

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

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

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

Давайте применим это правило к нашим вероятностям,

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

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

Когда мы вычисляем журнал для каждой точки данных, мы фактически получаем функцию ошибок для каждой точки. Например, функция ошибок для точки 0,2 в модели A равна -ln (0,2), что равно 1,61. Обратите внимание, что неправильно классифицированные точки имеют большие значения, следовательно, имеют большие ошибки.

Итак, давайте еще немного разберемся с кросс-энтропией. На самом деле кросс-энтропия говорит о том, что если у вас есть события и вероятности, насколько вероятно, что события произойдут на основе вероятностей? Если это очень вероятно, у нас малая кросс-энтропия, а если маловероятно, у нас высокая кросс-энтропия. Мы увидим это подробнее на примере

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

Примечание: есть больше возможностей

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

Давайте еще немного рассмотрим этот пример. Предположим, мы возьмем первый случай, когда Дверь 1 - это p (подарок) = 0,8, Дверь 2 - это p (подарок) = 0,7, а Дверь 3 - это p (подарок) = 0,1,

Обратите внимание, что мы описываем третью дверь как 1-p, что означает 1 минус вероятность подарка. Это даст нам вероятность того, что подарка нет. Также обратите внимание, что y описывает, сколько подарков находится за дверью.

Таким образом, кросс-энтропия может быть описана следующей формулой:

Примечание. Это еще один способ описания отрицательного журнала.

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

Что полезно в этой функции, так это то, что ее также можно записать в такой форме:

Примечание. Эта формула предназначена только для двоичной кросс-энтропии. Если вас интересует мультиклассовая кросс-энтропия, посмотрите это видео!

Эта функция допускает две функции, p (x) и q (x). Где мы можем описать p (x) как желаемую вероятность, а q (x) как фактическую вероятность.

Таким образом, формула кросс-энтропии описывает, насколько близко предсказанное распределение к истинному распределению.

Заключение

В целом, как мы видим, кросс-энтропия - это просто способ измерить вероятность модели. Перекрестная энтропия полезна, поскольку она может описать, насколько вероятна модель и функция ошибок каждой точки данных. Его также можно использовать для сравнения прогнозируемого результата с истинным. Надеюсь, вы начинаете понимать, насколько это мощно!

Некоторый код

Давайте посмотрим, как это можно кодировать на Python!

import numpy as np
# This function takes as input two lists Y, P,
# and returns the float corresponding to their cross-entropy.
def cross_entropy(Y, P):
    Y = np.float_(Y)
    P = np.float_(P)
    return -np.sum(Y * np.log(P) + (1 - Y) * np.log(1 - P))

Этот код взят прямо из курса Udacity Глубокое обучение с PyTorch.

Этот простой код принимает два входа и возвращает кросс-энтропию.

Ключевые выводы

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

DL Видео недели✨

Этот ИИ может превратить ваше лицо в персонажа Диснея!

Дополнительные ресурсы / ссылки

Это действительно хорошая форма кросс-энтропии.

Идеальная шпаргалка по кросс-энтропии

Где ты меня найдешь 😝

Мой LinkedIn! Не стесняйтесь связываться со мной, я люблю говорить об искусственном интеллекте!

Следите за моей средней страницей, чтобы узнать больше!