Всем привет! В этой статье я хотел бы попробовать осветить несколько взглядов на кросс-энтропию и попробовать сформировать некоторую интуицию с точки зрения теории информации.
Кросс-энтропия - одна из центральных метрик машинного обучения. Любая задача классификации так или иначе сводится к оптимизации модели через эту метрику. Однако новички нередко задаются вопросом, откуда берётся эта метрика и почему имеет такой вид, так как нередко вне профильных курсов она преподносится как данность.
Вывод через метод максимального правдоподобия
Начнём с классического вывода: через метод максимального правдоподобия (далее будем называть его MLE). Вспомним курс статистики и что из себя вообще представляет функция правдоподобия.
У нас есть выборка и параметрическая модель
. Функция правдоподобия - это вероятность увидеть ровно те данные, которые мы наблюдаем, как функция от параметров:
Тут мы рассматриваем не как функцию от
при фиксированных параметрах, а как функцию от
при фиксированных данных. Произведение берётся потому, что объекты выборки считаются независимыми (при фиксированных
):
Рассмотрим простейший бинарный случай: , модель выдаёт
. Это распределение Бернулли, и вероятность конкретного исхода записывается одной формулой:
Трюк со степенями здесь чисто технический: при второй множитель обращается в единицу и остаётся
, при
- наоборот, остаётся
. То есть формула просто выбирает вероятность того исхода, который реально произошёл.
Несложно обобщить на многоклассовый случай. Пусть классов , модель выдаёт вектор вероятностей
,
, а целевую метку кодируем one-hot вектором
, где
для истинного класса и
иначе. Тогда тот же трюк со степенями даёт
и всё произведение снова схлопывается в один множитель - вероятность истинного класса.
После берём логарифм функции правдоподобия, так как с ним легче работать (произведение переходит в сумму + работает численно стабильнее). Логарифм монотонен, поэтому точка максимума не меняется. Домножим ещё на , чтобы вместо максимизации получить привычную минимизацию:
Отсюда следует знакомая формула. Для бинарного случая
и для многоклассового
где - индекс истинного класса
-го объекта. В правой части из-за one-hot кодирования вся внутренняя сумма сводится к одному слагаемому: в лосс входит только вероятность, приписанная правильному классу.
Вывод через MLE - хорошее формальное аналитическое решение задачи оптимизации, однако, на мой взгляд, вывод через теорию информации даёт несколько более интуитивное представление.
Вывод через теорию информации
Введём главный объект, с которым будем работать, - энтропию:
Дабы не нагружать историей и формализмом, почему формула имеет именно такой вид, просто скажем, что эта функция является мерой неопределённости случайной величины.
Хорошая иллюстрация - известная логическая задача про фальшивую монетку. Пусть есть 9 одинаковых на вид монет, одна из которых легче остальных, и чашечные весы. За сколько взвешиваний гарантированно найдём фальшивую?
Посмотрим на задачу как на передачу информации. Изначально фальшивой может быть любая из 9 монет, все варианты равновероятны, то есть исходная неопределённость составляет
Одно взвешивание - это канал с тремя возможными исходами: левая чаша легче, правая легче, равновесие. Больше бита такой канал за раз не передаст, причём этот максимум достигается только тогда, когда все три исхода равновероятны. Значит, взвешиваний нужно не меньше, чем
И этот теоретический минимум действительно достижим: кладём по три монеты на каждую чашу, три откладываем в сторону. Каждый из трёх исходов имеет вероятность и оставляет ровно три подозрительные монеты; вторым взвешиванием тем же приёмом находим фальшивую. Заметно, что энтропийная граница подсказывает и саму стратегию: делить нужно на равные части, потому что именно равновероятные исходы выжимают из взвешивания максимум бит. Классическая версия задачи с 12 монетами, где неизвестно, легче фальшивая или тяжелее, решается тем же способом: там
равновероятных исхода,
, откуда честная нижняя граница в 3 взвешивания.
Для интересующихся: почитать про аксиоматический вывод энтропии Шеннона можно в оригинальной статье Шеннона 1948 года (раздел 6 и Приложение 2).
Внутри математического ожидания стоит величина , её называют собственной информацией, или «удивлением» (surprisal). Логика простая: если событие почти достоверно,
, то узнать о том, что оно произошло, - это ноль новой информации, и
. Если событие крайне редкое,
, то его наступление удивляет сильно, и
. Энтропия - это просто среднее удивление. Если брать
, всё меряется в привычных нам битах, если натуральный - в натах (от англ. natural). На оптимизацию выбор основания не влияет, так как это просто константный множитель.
Теперь введём ещё один объект - KL-дивергенцию:
Она показывает расстояние между двумя взятыми распределениями и
, точнее, показывает, насколько мы в среднем ошибаемся, когда думаем, что распределение это
, хотя на самом деле в реальности это
. Внутри ожидания стоит разность двух удивлений:
, то есть «насколько сильнее меня удивил исход
, чем должен был бы».
У KL есть три свойства, которые стоит держать в голове:
всегда - это неравенство Гиббса, следствие выпуклости
и неравенства Йенсена. Доказательство можно глянуть вот тут.
тогда и только тогда, когда
(почти всюду). То есть ноль достигается ровно в одной точке - когда мы точно угадали оригинальное распределение.
Это не метрика в строго математическом смысле.
, и неравенство треугольника не выполняется. Поэтому расстояние тут - это скорее просто наименование; формально правильнее говорить «дивергенция».
Важное замечание по асимметрии: ожидание берётся по , поэтому штрафуются только те точки, где у
есть масса. Если
, а
, под логарифмом возникает бесконечность, и значение дивергенции взрывается. Обратная ситуация нормальна: там, где
, значение
вообще не проверяется. Отсюда известное поведение: прямая KL даёт mode-covering приближения (модель обязана накрыть всё, что реально встречается), обратная KL - mode-seeking (модель может залипнуть в одну моду).
Теперь достаточно легко можно обнаружить следующее тождество. Разобьём логарифм отношения на разность:
откуда
где - уже известная нам кросс-энтропия.
Так и зачем все эти сложности?
Перейдём к интерпретации: из тождества выше видно, что кросс-энтропия распадается на два разных слагаемых. - это энтропия самих данных, от параметров модели она не зависит.
- это то, с чем мы работаем: насколько наша модель
промахивается мимо реального распределения
. Фактически минимизация кросс-энтропии - это минимизация KL-дивергенции: поскольку
не зависит от параметров модели, обе задачи имеют один и тот же оптимум и одни и те же градиенты,
. Вычитать
при обучении попросту незачем. Другое дело, если нужно именно численное значение KL: тогда
знать необходимо, а истинное
нам обычно недоступно, так что честную KL-дивергенцию мы посчитать не можем.
Отсюда следует достаточно явный вывод: абсолютное значение лосса мало о чём говорит. Лосс - это плохо или хорошо? Ответ зависит от
. Если задача шумная и разметчики сами не сходятся, то
может быть
, и мы почти у идеала. Если задача детерминированная,
, и мы всё ещё далеко.
Но самое интересное, на мой взгляд, - это интерпретация через кодирование. Величина - это длина в битах, которую оптимальный код припишет символу
, если считать, что символы приходят из распределения
. Частым символам достаются короткие коды, редким - длинные. Тогда:
- средняя длина сообщения, если код построен под истинное распределение. Это теоретический минимум (теорема Шеннона об источнике).
- средняя длина, если код построен под
, а данные на самом деле идут из
.
- переплата. Лишние биты, которые появляются из-за ошибок при приближении к реальному распределению.
Разберём на конкретном примере. Пусть источник выдаёт четыре символа с вероятностями
Оптимальный код (код Хаффмана) здесь такой:
Символ | Код | Длина | |
|---|---|---|---|
A | 1/2 |
| 1 |
B | 1/4 |
| 2 |
C | 1/8 |
| 3 |
D | 1/8 |
| 3 |
Длины ровно совпадают с , и средняя длина сообщения равна
Теперь представим, что наша «модель» считает распределение равномерным: . Под такое
оптимальный код - фиксированные два бита на символ:
00, 01, 10, 11. Код корректный, сообщения декодируются. Но средняя длина теперь
а переплата составляет
Прямая проверка по формуле даёт то же самое: .
Получается, что мы недооценили частый символ A (дали ему 2 бита вместо 1) и переоценили относительно редкие C и D. На миллионе символов это 250 000 лишних бит. Модель классификации можно интерпретировать так же: обучая её кросс-энтропией, мы стараемся построить максимально экономный код для реальных меток. Уверенное и правильное предсказание - короткий код. Уверенное и неправильное - очень длинный: бит за один объект.
Калибровка
Из кодовой интерпретации почти сразу выпадает идея калибровки. Раз переплата обнуляется тогда и только тогда, когда
, то оптимум кросс-энтропии достигается не на угадывании класса, а на сообщении истинных вероятностей. На языке статистики это называется строго правильным правилом оценивания (strictly proper scoring rule).
Сравним с accuracy: она не различает предсказания и
, потому что argmax в обоих случаях один и тот же. Кросс-энтропия же различает.
То есть, если модель выдаёт , то примерно в 90% таких случаев предсказание должно оказываться верным. Если верных 70%, модель переуверена, и её вероятности нельзя подставлять в бизнес-логику (пороги, ожидаемая стоимость ошибки, ранжирование по риску). Проверяется это диаграммой надёжности (reliability diagram) и метриками вроде ECE, а обрабатывается, например, температурным шкалированием: делим логиты на
и подбираем
на валидации, минимизируя ту же кросс-энтропию.
Вместо заключения
Итого, кросс-энтропия появляется в задачах классификации как один и тот же объект, возникающий из трёх идей: отрицательное логарифмическое правдоподобие в статистике, KL-дивергенция плюс константа в терминах расхождения распределений и средняя длина сообщения в терминах кодирования. Все три взгляда сходятся в одной точке: оптимум достигается тогда, когда модель сообщает истинные вероятности, а не тогда, когда она чаще угадывает класс. Мне кажется, именно это и стоит вынести из статьи, потому что отсюда естественно вырастает и калибровка, и более внимательное отношение к предсказаниям модели.
Также можете посмотреть статью в моём бложике, где можно потыкать интерактивные графики.
