В предыдущих разделах мы изучали характеристики случайных величин — математическое ожидание, дисперсию, ковариацию. Теперь обратимся к понятиям, которые традиционно относятся к теории информации, но мы рассмотрим их здесь, поскольку они идейно близки к уже изученным характеристикам и широко применяются в машинном обучении.
Эти новые величины помогают отвечать на вопросы:
- Сколько неопределённости содержится в случайной величине?
- Сколько информации мы получаем, когда узнаём её значение?
- Насколько «далеки» друг от друга две случайные величины или распределения?
Чтобы разобраться в этом, мы изучим такие понятия, как энтропия, перплексия и 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
Энтропия:
Перплексия:

Это значит, что «по степени неопределённости» распределение модели похоже на равномерный выбор из 2.56 вариантов. Если же распределение было бы равномерным (0.25 на каждое слово), энтропия была бы , а перплексия — . То есть модель была бы полностью «неуверенной».
Как мы заметили, энтропия в некотором смысле измеряет, насколько распределение «далеко» от равномерного — то есть насколько в нём выражена неопределённость.
Но иногда нам важно сравнивать два произвольных распределения между собой — например, насколько текущее поведение модели отличается от ожидаемого или насколько аппроксимация близка к реальному распределению.
И тут возникает естественный вопрос: как измерять расстояние между двумя распределениями? На этот вопрос отвечает следующая важная концепция — дивергенция Кульбака — Лейблера (KL-дивергенция).
Дивиргенция Кульбака — Лейблера
Самый естественный способ ввести расстояние между распределениями и — сравнить их функции распределения. Например, можно рассмотреть величину
которая называется расстоянием Колмогорова и обладает многими интересными свойствами.
В частности, она используется в тесте Колмогорова, проверяющем, пришёл ли набор данных из некоторого распределения. Однако из-за использования супремума (максимального отклонения) расстояние Колмогорова плохо работает в задачах, где нужно учитывать всю структуру различий между распределениями, а не только наибольшее.
Другой способ ввести расстояние — это дивергенция Кульбака — Лейблера. Для двух дискретных величин и она определяется как
Интуитивно KL-дивергенция измеряет, насколько «удивительным» кажется распределение , если мы считаем, что мир устроен по распределению . То есть она отвечает на вопрос: сколько дополнительной информации (в среднем) нам понадобится, если мы будем кодировать данные из , думая, что они приходят из ?
Сразу заметим, что это «расстояние» не симметрично, то есть часто
Давайте посмотрим на простом примере с подбрасыванием монеты, как проявляется эта асимметрия. Сравним два распределения: одно для честной монеты () и другое для нечестной (), а затем посчитаем дивергенцию и .

Как видно из расчётов, результаты получаются разными, что подтверждает асимметричность KL-дивергенции. Однако другие свойства расстояния выполняются. В частности,
причём равенство достигается тогда и только, когда их распределения совпадают, то есть для всех .
Неравенство Йенсена и неотрицательность
Применим неравенство Йенсена к , :
так как
Причём равенство достигается только когда постоянная функция, то есть когда распределения совпадают.
Дивергенция Кульбака — Лейблера широко используется в машинном обучении.
Пример: дистилляция моделей
Порой хочется сохранить точность модели и при этом уменьшить её вес и параллельно ускорить инференс. В таких случаях применяется дистилляция — процесс переноса знаний от большой, мощной модели (teacher) к более компактной (student) путём обучения последней воспроизводить поведение первой.
Для задачи классификации компактную модель обычно учат предсказывать распределения, выдаваемые мощной моделью, вместо исходных меток. При этом в функции потерь используется именно KL-дивергенция.

Для непрерывных случайных величин дивергенция Кульбака — Лейблера определяется похожим образом, но с использованием интеграла вместо суммы:
Здесь и — плотности распределения и соответственно. Как и в дискретном случае, дивергенция измеряет, насколько распределение отличается от , и также может быть несимметричной.
Визуализация плотностей и и вклада в 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.
Этап 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.
Больше подробностей про этот метод, например красивое физическое описание градиента функции потерь, желающие могут найти в исходной статье.

Ещё про нелинейные методы понижения размерности: UMAP
Другим популярным методом визуализации, альтернативным t-SNE, является UMAP (англ. Uniform Manifold Approximation and Projection).
Это метод нелинейного снижения размерности, разработанный на основе теории категорий и топологии многообразий. Он исходит из предположения, что данные лежат на гладком многообразии, и стремится сохранить локальную топологию этого многообразия. В отличие от t-SNE, он работает быстрее, а также допускает построение проекций для новых точек.
UMAP состоит из трех этапов:
-
Построение взвешенного графа в исходном пространстве
-
Начальное вложение графа в маломерное пространство.
-
Оптимизация.
Разберём их подробнее.
Этап 1. Построение взвешенного графа в исходном пространстве. Пусть у нас есть данные в : точки . Для каждой точки мы ищем её ближайших соседей по расстоянию (обычно ). Это делается, чтобы рассматривать только локальные связи, которые близки к поверхности нашего многообразия.
Затем мы строим ориентированный взвешенный граф: для каждой точки и ближайших к ней точек мы хотим назначить вес — он показывает, насколько «плотно» точки связаны. Этот вес определяется по формуле:
где:
- — евклидово расстояние между точками;
- — минимальное расстояние от до ближайшего соседа (чтобы гарантировать для ближайшего);
- — настраиваемый масштаб, подбираемый так, чтобы .
Для всех остальных точек положим . Далее веса симметризуются по формуле:
Если задавала вероятность проведения ориентированного ребра из в , то задаёт вероятность того, что между этими вершинами будет проведено хотя бы одно ребро. UMAP-граф — это неориентированный граф с весами на ребрах. Именно его структуру мы хотим повторить в маломерном пространстве.

Этап 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) для новых данных.

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