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

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

К счастью, я никуда не застрял и получил конечный результат. Чтобы проверить, нашел ли я правильный ответ, я сверил ответ с ответами, данными в конце книги, и, как правило, мой ответ был неправильным.

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

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

1. Моя реализация метода неверна?

2. Являются ли мои переменные и предположения неправильными?

3. Подходит ли мой метод для решения этой проблемы?

4. или это все вышеперечисленное

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

Точно так же в любой задаче машинного обучения мы обучаем нашу модель прогнозировать вероятности истинности. Мы обучаем нашу модель несколько раз, изменяя параметры модели, чтобы сделать наш прогноз ближе к фактическому ответу. Но что именно мы подразумеваем под «приближается к»? В частности, как нам измерить разницу между y^ и y? В этом посте описывается одна из возможных мер, перекрестная энтропия.

Представьте, что вы стоите рядом с билетной кассой мультиплекса в определенный воскресный вечер, наблюдая, как люди покупают билеты на фильмы, которые они должны посмотреть, и вы хотели бы сообщить название каждого фильма, билет на который был куплен, другу. Но вы должны сделать это, отправив биты, которые равны 0, 0 или 1, и каждый бит стоит вам 2 рупии.

Вам может понадобиться много битовых последовательностей, по одной для описания каждого фильма.

Как бы вы распределили биты в названиях фильмов? Будут ли все фильмы иметь одинаковую последовательность битов?

No.

Вы бы использовали такое же количество битов для фильма, как «Tiger Zinda Hain» и «Dhobighat», если вы знаете, что больше людей будет покупать билеты на «Tiger Zinda Hain», чем на «Dhobighat»?

Вы бы использовали свои знания о распространении фильмов, чтобы уменьшить количество битов, которые вам нужно отправить в среднем.

Получается, что если у вас есть доступ к базовому дистрибутиву y, то для использования наименьшего количества битов в среднем вам следует назначить log(1/y) бит.

Например, если мы предположим, что увидеть «Тигра Зинда Хейн» в 128 раз чаще, чем увидеть «Дхобигхат», тогда мы дадим символу Тигра на 7 бит меньше, чем символу Дхобхи-гхат.

мы достигаем оптимального количества битов на передачу. Оптимальное количество бит известно как энтропия.

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

Напротив, кросс-энтропия — это количество битов, которое нам понадобится, если мы будем кодировать символы из y с помощью неправильного инструмента y^. Это состоит в кодировании i-го символа с использованием логарифмических (1/y^i) битов вместо логарифмических (1/yi) битов. Конечно, мы по-прежнему принимаем математическое ожидание за истинное распределение y, поскольку именно распределение действительно генерирует символы.

Перекрёстная энтропия всегда больше энтропии; кодирование символов в соответствии с неправильным распределением y^ всегда заставит нас использовать больше битов. Единственным исключением является тривиальный случай, когда у и у^ равны, и в этом случае равны энтропия и кросс-энтропия.