6.7 Энтропия. Перплексия. KL-дивергенция

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

Эти новые величины помогают отвечать на вопросы:

  • Сколько неопределённости содержится в случайной величине?
  • Сколько информации мы получаем, когда узнаём её значение?
  • Насколько «далеки» друг от друга две случайные величины или распределения?

Чтобы разобраться в этом, мы изучим такие понятия, как энтропия, перплексия и KL-дивергенция. А затем увидим, как эти, на первый взгляд, абстрактные идеи становятся рабочими инструментами в таких мощных и популярных алгоритмах визуализации и понижения размерности, как t-SNE и UMAP.

Энтропия Шеннона

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

Интуитивно:

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

Например, бросок честной монеты даёт максимальную энтропию среди всех случайных величин с двумя исходами: результат полностью непредсказуем, и каждое наблюдение несёт ровно 1 бит информации.

Энтропия Шеннона используется в машинном обучении, криптографии и других областях, где важно оценивать меру неопределённости.

Перейдем к строгому определению. Для дискретной случайной величины энтропию определяют как:

Заметим сразу, что эта величина зависит от вероятности принятия значений и не зависит от самих принимаемых значений. Давайте подробнее разберём последний член формулы.

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

Теперь перейдём к примерам.

Равномерное дискретное распределение

Пусть принимает разных значений с одинаковыми вероятностями .

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

Неравенство Йенсена и наибольшее значение энтропии дискретной случайной величины

Знаменитое неравенство Йенсена можно сформулировать следующим образом в терминах случайных величин. Для выпуклой функции :

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

На самом деле Неравенство Йенсена имеет и немного более сложную формулировку:

где выпуклая функция, а — любая. Причем равенство достигается только если постоянная функция c вероятностью .

Теперь применим его к , :

так как

где — количество значений . Причём равенство достигается только когда постоянна на значениях , то есть только для равномерных .

Минимальное значение энтропии дискретной случайной величины равно , поскольку все слагаемые в сумме неотрицательны (так как логарифмы вероятностей не положительны). Причём только в том случае, если случайная величина принимает одно значение с вероятностью 1, то есть является полностью детерминированной.

Таким образом, для случайной величины , принимающей различных значений, выполняется неравенство:

Энтропию в этом случае можно рассматривать как меру «равномерности» распределения: чем ближе распределение к равномерному, тем выше энтропия, и наоборот.

Определение энтропии для непрерывных случайных величин во многом похоже на дискретный случай, только сумма заменяется интегралом:

Часто в литературе используют ещё следующую запись:

Чем полезна такая запись? Она подчёркивает единую идею: энтропия — это отрицательное математическое ожидание логарифма плотности или вероятности. Эта концепция универсальна, и в дискретном случае формула выглядит аналогично:

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

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

Равномерное распределение на отрезке

Пусть . Тогда плотность на отрезке , и, подставляя её в формулу для энтропии, получаем:

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

Как и в дискретном случае, распределение с максимальной энтропией на фиксированном отрезке — равномерное. Значение является верхней границей для всех распределений, поддержка которых находится на этом отрезке. Поэтому и здесь энтропию можно понимать как меру «равномерности» распределения.

Применения энтропии

В машинном обучении энтропия используется как мера «неопределённости» данных. Один из наглядных примеров — алгоритмы построения решающих деревьев.

Представьте, что вы — врач, к которому пришёл пациент. Чтобы поставить диагноз, вы задаёте вопросы с ответами «да» или «нет»: «Есть ли температура?», «Болит ли горло?», «Есть ли сыпь?»

Но в каком порядке задавать вопросы, чтобы как можно быстрее определить болезнь?

Каждый вопрос делит всех возможных пациентов на две группы — тех, кто ответил «да», и тех, кто ответил «нет». После этого разбиения мы хотим, чтобы внутри каждой группы неопределённость была минимальна — чтобы ответы пациентов в каждой подгруппе максимально указывали на какую-то конкретную болезнь.

Для оценки «качества» вопроса используется информационный выигрыш (information gain):

где:

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

Мы выбираем вопрос, у которого максимален, — это эквивалентно минимизации энтропии в дочерних узлах.

Пример расчётом

Допустим, у нас есть 100 пациентов:

  • 50 с гриппом,
  • 30 с ангиной,
  • 20 с аллергией.

Начальная энтропия:

Рассмотрим вопрос: «Есть ли температура?» Среди тех, кто ответил «да» (60 человек), болезни распределены так: 50 грипп + 10 ангина. Энтропия этой группы:

Среди тех, кто ответил «нет» (40 человек), болезни распределены так: 20 ангина + 20 аллергия. Энтропия этой группы:

Информационный выигрыш:

Если другой вопрос даёт больший , дерево выберет его первым.

💡Именно так решающие деревья шаг за шагом «задают вопросы», постепенно минимизируя энтропию в листьях, пока классы не станут максимально однородными.

Таким образом, энтропия помогает измерять «неопределённость» и выбирать оптимальные разбиения данных. Однако иногда удобнее работать не напрямую с энтропией, а с другой связанной величиной — перплексией.

Перплексия

Как мы видели, значения энтропии содержат логарифм, что не всегда интуитивно. Поэтому часто используют связанную величину — перплексию, которую можно воспринимать как «эффективное число вариантов», которые предлагает случайная величина.

Иными словами, перплексия отвечает на вопрос: «Насколько сильно распределение размазано по возможным исходам?». Если случайная величина похожа на равномерный выбор из вариантов, её перплексия будет близка к .

Формально перплексия вычисляется через энтропию:

Примеры

  • Для дискретной равномерной случайной величины с значениями:

  • Для равномерного распределения :

Перплексия особенно наглядна, когда речь идёт о предсказательных моделях. Она используется как метрика качества в языковых моделях (LLM). Смысл здесь простой: если модель «уверена» в следующем слове, то её предсказания концентрируются на нескольких вариантах, энтропия распределения низка, и перплексия мала. Если же модель «теряется» и распределяет вероятности почти равномерно по большому количеству слов, перплексия становится большой.

Пример. Пусть языковая модель прогнозирует следующее слово в предложении и выдаёт следующие вероятности для 4 кандидатов:

  • «кошка» — 0.7
  • «собака» — 0.1
  • «мышь» — 0.1
  • «рыба» — 0.1

Энтропия:

Перплексия:

6.7

Это значит, что «по степени неопределённости» распределение модели похоже на равномерный выбор из 2.56 вариантов. Если же распределение было бы равномерным (0.25 на каждое слово), энтропия была бы , а перплексия — . То есть модель была бы полностью «неуверенной».

Как мы заметили, энтропия в некотором смысле измеряет, насколько распределение «далеко» от равномерного — то есть насколько в нём выражена неопределённость.

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

И тут возникает естественный вопрос: как измерять расстояние между двумя распределениями? На этот вопрос отвечает следующая важная концепция — дивергенция Кульбака — Лейблера (KL-дивергенция).

Дивиргенция Кульбака — Лейблера

Самый естественный способ ввести расстояние между распределениями и — сравнить их функции распределения. Например, можно рассмотреть величину

которая называется расстоянием Колмогорова и обладает многими интересными свойствами.

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

Другой способ ввести расстояние — это дивергенция Кульбака — Лейблера. Для двух дискретных величин и она определяется как

Интуитивно KL-дивергенция измеряет, насколько «удивительным» кажется распределение , если мы считаем, что мир устроен по распределению . То есть она отвечает на вопрос: сколько дополнительной информации (в среднем) нам понадобится, если мы будем кодировать данные из , думая, что они приходят из ?

Сразу заметим, что это «расстояние» не симметрично, то есть часто

Давайте посмотрим на простом примере с подбрасыванием монеты, как проявляется эта асимметрия. Сравним два распределения: одно для честной монеты () и другое для нечестной (), а затем посчитаем дивергенцию и .

6.7

Как видно из расчётов, результаты получаются разными, что подтверждает асимметричность KL-дивергенции. Однако другие свойства расстояния выполняются. В частности,

причём равенство достигается тогда и только, когда их распределения совпадают, то есть для всех .

Неравенство Йенсена и неотрицательность

Применим неравенство Йенсена к , :

так как

Причём равенство достигается только когда постоянная функция, то есть когда распределения совпадают.

Дивергенция Кульбака — Лейблера широко используется в машинном обучении.

Пример: дистилляция моделей

Порой хочется сохранить точность модели и при этом уменьшить её вес и параллельно ускорить инференс. В таких случаях применяется дистилляция — процесс переноса знаний от большой, мощной модели (teacher) к более компактной (student) путём обучения последней воспроизводить поведение первой.

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

6.7

Для непрерывных случайных величин дивергенция Кульбака — Лейблера определяется похожим образом, но с использованием интеграла вместо суммы:

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

Визуализация плотностей P(x) и Q(x)

Визуализация плотностей и и вклада в KL-дивергенцию

На графике видно, как формируется KL-дивергенция . Слева: два близких нормальных распределения и , KL-дивергенция мала. Справа: распределения и , KL-дивергенция значительно больше. Зелёная пунктирная кривая показывает локальный вклад в расхождение между распределениями в конкретной точке . Чем сильнее отклоняется от в областях с высокой плотностью , тем больше вклад в .

Еще один пример, где можно встретить KL-дивергенцию, — это генеративные модели, которые учатся приближать распределение данных с помощью параметрических моделей.

Пример: вариационный автоэнкодер (VAE)

VAE — это нейросетевая архитектура, которая обучается восстанавливать объекты (например, изображения) из сжатого представления — скрытого вектора. При этом предполагается, что координаты скрытого вектора распределены по стандартному нормальному закону.

Естественная и теоретически обоснованная функция потерь для этой модели раскладывается в сумму двух слагаемых. Первое слагаемое отвечает за реконструкцию — насколько похоже восстановленное изображение на исходное. А второе слагаемое является KL-дивергенцией.

Оно стремится сделать распределение скрытых переменных похожим на заданное априорное распределение . Обычно оно стандартное нормальное.

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

Речь идёт о методе t-SNE (t-Distributed Stochastic Neighbour Embedding) — нелинейном методе понижения размерности, который позволяет отображать многомерные данные в двумерное или трёхмерное пространство, сохраняя локальные структуры.

t-SNE

t-SNE — это метод, построенный на вероятностной модели: он пытается построить двумерную карту, на которой близкие объекты (в высоком пространстве) отображаются как близкие точки, а далёкие — как далёкие.

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

Сначала коротко, что делает алгоритм:

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

Теперь давайте рассмотрим каждый этап подробнее.

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

Здесь:

  • — фиксированная точка, для которой мы хотим посчитать распределение соседей;
  • — одна из других точек, для которой мы хотим узнать, насколько она «соседняя» к ;
  • — переменная суммирования, пробегающая по всем точкам, кроме (используется для нормировки, чтобы сумма вероятностей по давала 1);
  • — параметр, определяющий, насколько «широко» точка считает других своими соседями.

Чем больше , тем больше объектов вокруг считаются похожими на .

Алгоритм t-SNE подбирает значение автоматически для каждой точки — так, чтобы перплексия распределения соседей была одинаковой для всех точек. Перплексия в данном случае задаёт желаемое эффективное число соседей и является важным гиперпараметром метода.

Этап 2. Чтобы устранить направление зависимости между точками и получить общее распределение соседства, t-SNE симметризует и нормирует условные вероятности:

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

Этап 3. Затем в двумерном пространстве рассчитывается аналогичное распределение , но не по Гауссу, а по t-распределению Стьюдента с одной степенью свободы (мы знаем его как распределение Коши):

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

Почему используется именно это распределение? Оно обладает тяжёлыми хвостами, что позволяет точкам, находившимся недалеко друг от друга, иметь более удалённые проекции. Это необходимо из-за проблемы тесноты — в низкой размерности не хватает «места», чтобы правильно отразить все расстояния между точками многомерного пространства. Название этого распределения дало букву t в названии t-SNE, его использование отличает этот метод от более раннего метода SNE.

Сравнение плотностей распределений Гаусса и Коши. Видно, что распределение Коши имеет «тяжёлые хвосты» по бокам, что используется в t-SNE

Этап 4. Оптимизация. Цель t-SNE — найти такие координаты точек в проекции, чтобы распределение было как можно ближе к . Это достигается путём минимизации дивергенции Кульбака-Лейблера:

Этот функционал штрафует ситуации, в которых две точки были близки в исходном пространстве (высокое ), но в проекции оказались далеко друг от друга (малое ). Таким образом, t-SNE фокусируется именно на сохранении локальных соседей, а не глобальной геометрии.

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

Особенности t-SNE:

  • t-SNE не сохраняет глобальные расстояния — кластеры могут располагаться произвольно.
  • Не существует явного отображения , то есть нельзя напрямую проецировать новые данные.
  • Выход сильно зависит от значения перплексии, скорости обучения и начальной инициализации.

Тем не менее, t-SNE остаётся мощным инструментом для анализа скрытых представлений (эмбеддингов), так как он может визуально раскрывать кластеры, группы и даже фазовые переходы в структуре данных.

Реализация в Python
1from sklearn.manifold import TSNE
2
3tsne = TSNE(n_components=2, perplexity=30, random_state=0)
4X_tsne = tsne.fit_transform(X)

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

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

6.7

Ещё про нелинейные методы понижения размерности: UMAP

Другим популярным методом визуализации, альтернативным t-SNE, является UMAP (англ. Uniform Manifold Approximation and Projection).

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

UMAP состоит из трех этапов:

  1. Построение взвешенного графа в исходном пространстве

  2. Начальное вложение графа в маломерное пространство.

  3. Оптимизация.

Разберём их подробнее.

Этап 1. Построение взвешенного графа в исходном пространстве. Пусть у нас есть данные в : точки . Для каждой точки мы ищем её ближайших соседей по расстоянию (обычно ). Это делается, чтобы рассматривать только локальные связи, которые близки к поверхности нашего многообразия.

Затем мы строим ориентированный взвешенный граф: для каждой точки и ближайших к ней точек мы хотим назначить вес — он показывает, насколько «плотно» точки связаны. Этот вес определяется по формуле:

где:

  • — евклидово расстояние между точками;
  • — минимальное расстояние от до ближайшего соседа (чтобы гарантировать для ближайшего);
  • — настраиваемый масштаб, подбираемый так, чтобы .

Для всех остальных точек положим . Далее веса симметризуются по формуле:

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

6.7

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

Почему спектральное разложение дает хорошее вложение?

Давайте вначале рассмотрим задачу построения вложения , минимизирующего функционал энергии:

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

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

где — взвешенная степень вершины , а — диагональная матрица взвешенных степеней вершин.

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

Примечания:

  • Матрица всегда имеет собственное значение . У соответствующего собственного вектора все координаты одинаковые. Поэтому берут собственные вектора, соответствующие наименьшим собственным значениям, кроме .

  • В исходной статье использовано немного другое нормировочное условие, которое после замены переменных приводит к другому виду лапласиана

Этап 3. Оптимизация. Теперь у нас есть граф в исходном пространстве и проекции его вершин в маломерное пространство. Дальше происходит процесс, очень похожий на градиентный спуск в t-SNE. На каждом шаге к проекции некоторой точки применяется сила притяжения

со стороны точки и силы отталкивания

со стороны некоторых других точек . Здесь и — параметры алгоритма, а — маленькое положительное число, добавленное для вычислительной стойкости. Как и в t-SNE, эти формулы не случайны, а приходят из минимизации функции потерь, которая называется кросс-энтропией нечётких множеств.

Особенности UMAP:

  • Поддерживает сохранение как локальной, так и глобальной структуры.

  • Быстрее t-SNE и масштабируется на большие объёмы.

  • Позволяет проецировать новые данные (в отличие от t-SNE).

UMAP широко используется в задачах анализа данных, где необходимо визуализировать, структурировать или упростить сложные признаки. Он особенно полезен при работе с эмбеддингами — векторными представлениями слов, изображений, документов, пользователей и т. д. В таких случаях UMAP помогает выявить кластеры, скрытую структуру, переходы между классами и аномалии. Его высокая скорость и масштабируемость делают его удобным выбором для интерактивного анализа больших наборов данных, включая тексты, геномные данные, пользовательское поведение и скрытые слои нейросетей.

Реализация в Python

UMAP в Python реализован в одноимённой библиотеке:

1mport umap
2
3umap_model = umap.UMAP(n_components=2, n_neighbors=15)
4X_umap = umap_model.fit_transform(X)

Он поддерживает метод .transform(X_new) для новых данных.

6.7


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

Мы научились измерять неопределённость с помощью энтропии, переводить её в интуитивную шкалу через перплексию и оценивать различие между распределениями с помощью дивергенции Кульбака — Лейблера. Мы также увидели, что эти идеи лежат в основе современных методов визуализации и снижения размерности данных — от t-SNE до UMAP.

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

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



Чтобы добавить в заметки выделенный текст, нажмите Ctrl + E
Предыдущий параграф6.6. Совместное распределение. Ковариация и коэффициент корреляции
Следующий параграф6.8. Чему вы научились