Введение

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

В этой статье мы совершим интуитивное путешествие и узнаем, что такого хорошего в кросс-энтропии.

Обратный инжиниринг выражения кросс-энтропии

Давайте начнем с простого на вид выражения кросс-энтропии и выясним, что она делает под капотом.

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

Мы ограничимся исследованием только этим простым выражением кросс-энтропии и осознаем его полезность при вычислении полных потерь.

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

Интуитивное понимание преобразования журнала

На рисунке выше представлено почти все, что нам нужно знать, чтобы получить интуитивное представление о функции журнала. Давайте рассмотрим это шаг за шагом.

Функция журнала в качестве демпфера или аттенюатора

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

У нас будет диаграмма с огромным диапазоном по оси Y (как показано ниже).

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

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

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

Функция журнала как нелинейная лупа

Когда функция журнала применяется к небольшим значениям (меньше 1), мы видим еще одно полезное поведение. В этой области он действует как отрицательная лупа.

Давайте проанализируем приведенный выше график. Обратите внимание, что значение Y (синяя линия) всегда находится между 0 и 1 (это то, что означает белая полоса). Преобразование журнала по Y (точнее, преобразование отрицательного журнала) показано красной линией. Обратите внимание на зеленые и красные вертикальные толстые стрелки. Чрезвычайно низкое значение Y катапультируется в чрезвычайно высокое значение при преобразовании (толстая красная стрелка). Но для более высоких значений Y логарифмическое преобразование будет низким (толстая зеленая стрелка).

Это свойство можно разумно использовать для создания функции потерь, которая минимизируется во время обучения модели. Сведение к минимуму -log (y) означает перемещение значений Y на более высокий уровень, и это именно то, что мы хотим. Это станет более понятным в следующих разделах.

Давайте рассмотрим логарифмическое преобразование значений вероятности (вероятности всегда находятся в диапазоне от 0 до 1). Здесь помогает Softmax (Softmax гарантирует, что значения попадают в диапазон [0,1]. В частности, он гарантирует, что все значения в сумме дают 1). Это одна из причин, почему мы используем Softmax непосредственно перед применением кросс-энтропии.

Давайте копнем глубже на примере модели машинного обучения (особенно модели глубокого обучения). Предположим, мы создаем модель, которая может идентифицировать кошек и собак (для простоты всего два класса). Допустим, у модели есть два выходных контакта: один для кошки, а другой - для собаки. Мы ожидаем, что модель всегда должна давать высокую оценку вероятности (ближе к 1) на выходном контакте Cat всякий раз, когда на нее подается изображение Cat. Кроме того, именно в это время значение вероятности на выходном контакте Dog должно быть близко к 0. (Пожалуйста, потратьте некоторое время, чтобы понять приведенную ниже диаграмму и убедитесь, что вы понимаете, как различаются оценки вероятности на разных выходных контактах для одного и того же данного изображения.)

Для достижения вышеуказанной идеальной ситуации необходимо тщательное модельное обучение.

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

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

Таким образом, всякий раз, когда на выходном контакте Dog ошибочно выставляется оценка высокой вероятности, нам нужно наказывать модель и корректировать параметры модели понемногу. Предположим, мы увеличиваем значения на выводе Cat на определенную величину, чтобы компенсировать смещение на выводе Dog. После того, как вывод будет отправлен в Softmax, мы получим вероятности вывода, как показано на рисунке ниже.

Сейчас это улучшение модели. Однако, если мы сосредоточимся на простом подсчете общих потерь, мы не увидим улучшения (поскольку уменьшение потерь компенсируется увеличением потерь). Единичный проигрыш можно рассматривать как отклонение выходной вероятности от идеального значения (идеальная вероятность равна 0 или 1).

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

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

Формулировка стоимости или общего убытка (преобразование журнала при спасении)

Если вы проследили до сих пор, вы увидите, что мы подошли к концу, чтобы завершить тему.

Возьмите вероятностные выходные данные Softmax (P i) и примените к ним отрицательное преобразование журнала, то есть -log (P i ).

Вместо того, чтобы рассматривать простой убыток, который представляет собой отклонение P i от идеального значения, мы примем -log (P i ) как единичное значение убытка. Таким образом, маленькие значения P i сильно увеличиваются. Но оценки, близкие к 1, минимизированы (это мы уже сейчас понимаем).

Теперь важно понимать, что когда изображение кошки загружается в модель, выходное значение на булавке собаки должно быть как можно меньше. Но этот маленький P i приведет к чрезвычайно высокому значению, преобразованному в журнал. Если мы добавим его к общему расчету убытков, результат будет неверно завышен. Однако лекарство на удивление простое. Просто игнорируйте логарифмически преобразованные значения, поступающие с неправильного выходного контакта. Таким образом, всякий раз, когда загружается изображение Cat, сосредотачивайтесь только на булавке Cat (игнорируйте остальные булавки). Такой -log (P i) на правильном выводе должен быть очень маленьким на обученной модели. Это очень важное осознание, изображенное на картинке ниже.

Теперь такая цель легко достигается, если включить в расчет убытков еще одно слагаемое. Просто умножьте -log (P i) на истинное значение (т.е. идеальное значение) этого выходного вывода. Итак, если изображение Cat загружается в модель, истинность на выходе Cat равна 1, тогда как на контакте Dog равно 0. Теперь умножение на 0 приведет к полному отбрасыванию значения на неправильном контакте (легко, да !!!).

Если вы теперь обратите внимание, мы пришли к выражению кросс-энтропии.