Теория информации

KL-дивергенция и cross-entropy

1951 год: Кульбак и Лейблер измеряют языки для NSA. 2017 год: та же формула определяет, сколько стоит обучение GPT. 2024 год: DPO использует KL как штраф за RLHF-коллапс. Одна идея - три поколения применений. Cross-entropy loss - это не 'выбранная функция потерь', это единственно правильный ответ теории информации.

  • **nn.CrossEntropyLoss** в PyTorch: $H(P, Q)$ где P - one-hot target, Q - softmax output. Каждый шаг обучения классификатора
  • **VAE**: ELBO = E[log p(x|z)] - $D_{KL}(q(z|x) \| p(z))$. KL-term регуляризует latent space
  • **RLHF/DPO**: $D_{KL}(\pi_{\theta} \| \pi_{ref})$ штрафует отклонение от reference model при тонкой настройке
  • **Perplexity**: стандартная метрика LLM, $2^{H(P,Q)}$. GPT-4 ~6-8 на английских текстах vs GPT-2 ~30

Предварительные знания

  • Joint and Conditional Entropy

KL-Divergence

1951 год. Соломон Кульбак и Ричард Лейблер работают в NSA над криптоанализом. Задача: перехвачен шифрованный текст. Он из немецкого? Из русского? Нужна мера того, насколько распределение частот букв в тексте отличается от эталонного распределения языка.

Они изобрели **KL-дивергенцию** - меру «стоимости» использования неправильной модели. Если истинное распределение P, а модель Q, то $D_{KL}(P \| Q)$ - сколько дополнительных бит в среднем тратится на кодирование данных из P с помощью кода, оптимального для Q.

Несимметричность - не баг, а фича. $D_{KL}(P \| Q)$ и $D_{KL}(Q \| P)$ отвечают на разные вопросы. В ML чаще всего минимизируют $D_{KL}(P_{data} \| P_{model})$: штрафуют модель за то, что она не покрывает реальные данные. Если $P_{data}$ имеет режим, который модель считает невозможным, штраф бесконечен.

**Label smoothing** в обучении классификаторов - прямое следствие этой бесконечности. Если целевые метки one-hot (P(класс) = 0 или 1), а модель случайно выдаёт Q(класс) = 0 для правильного класса, то $D_{KL} = \infty$. Смягчение: заменить P = [0, 0, 1, 0] на P = [0.05, 0.05, 0.85, 0.05] - тогда все q(x) > 0.

D_KL(P || Q) = 0.5 бит, D_KL(Q || P) = 0.8 бит. Какое утверждение верно?

MI как KL-Divergence

В предыдущем уроке mutual information I(X;Y) выглядела как «просто ещё одна формула». Теперь можно сказать точнее: это KL-дивергенция между реальным совместным распределением и «миром независимости».

Это объясняет, почему I(X;Y) ≥ 0 всегда: из неравенства Гиббса для KL-дивергенции. И почему MI симметрично (I(X;Y) = I(Y;X)): формула KL здесь симметрична по X и Y - в отличие от обычного $D_{KL}(P \| Q)$.

**Information Bottleneck** (Tishby, 2017): нейросеть можно рассматривать как канал X → Z → Y. Хорошее обучение: максимизировать I(Z; Y) (представление информативно о метке) и минимизировать I(Z; X) (представление сжимает вход). Этот trade-off - вся суть feature learning, сформулированная через MI.

Что измеряет I(X;Y) = D_KL(P(X,Y) || P(X)P(Y))?

Cross-Entropy и PyTorch Loss

Каждый вызов `loss = nn.CrossEntropyLoss()(logits, targets)` вычисляет одну формулу. Не эвристику, не «что-то придуманное для ML» - кодировочную стоимость данных P под моделью Q. Кульбак и Лейблер придумали это в 1951.

**Perplexity** = $2^{H(P,Q)}$ - экспоненцированная cross-entropy. Perplexity 10 означает: модель «колеблется» между 10 равновероятными вариантами на каждом шаге. GPT-2 small - около 30 на WikiText-103. GPT-4 - в районе 6-8. Разница в 4-5 раз на числах означает разницу в экспоненте на практике.

ВеличинаФормулаРоль в ML
H(P)-Σ p log pТеоретический минимум loss (не зависит от модели)
H(P, Q)-Σ p log qCross-entropy loss (то, что минимизируем)
D_KL(P||Q)H(P,Q) - H(P)Насколько модель хуже идеала
Perplexity$2^{H(P,Q)}$LLM metric: 6 = «выбирает из 6 вариантов» в среднем

Почему минимизация H(P, Q) по Q эквивалентна минимизации D_KL(P || Q)?

f-Divergences: GAN, VAE, WGAN

KL-дивергенция - один из бесчисленных способов измерить расстояние между распределениями. Всё семейство называется **f-дивергенциями**: выпуклая функция f(t) задаёт правило. Выбор f - это выбор «что мы считаем ошибкой».

**Forward KL** (mode-covering): штрафует за пропущенные режимы - модель должна покрыть всё. Используется в VAE и обучении классификаторов. **Reverse KL** (mode-seeking): штрафует за галлюцинации - лучше молчать, чем ошибаться. Используется в variational inference.

Оригинальный GAN (Goodfellow, 2014) минимизирует Jensen-Shannon дивергенцию. WGAN (Arjovsky, 2017) переключился на Wasserstein distance - не f-дивергенцию, но схожую идею. Причина: при непересекающихся поддержках KL и JSD вырождаются (бесконечность или константа), а Wasserstein остаётся информативной.

ДивергенцияСимметрична?Метрика?Применение
KL (forward)НетНетCrossEntropyLoss, VAE (ELBO)
KL (reverse)НетНетVariational inference
Jensen-ShannonДаДа (√JSD)Original GAN
Total VariationДаДаТеор. ограничения, privacy
WassersteinДаДаWGAN, optimal transport

**DPO** (Direct Preference Optimization, 2023) в RLHF тоже основан на KL-дивергенции: $D_{KL}(\pi_{\theta} \| \pi_{ref})$ - штраф за отклонение от reference policy. Это предотвращает коллапс в «галлюцинирующую» модель, которая получает высокую reward, но ушла слишком далеко от преобученной базы.

KL-дивергенция - это метрика расстояния между распределениями

KL - не метрика: несимметрична и не удовлетворяет неравенству треугольника. Это мера информационной стоимости.

Метрика d(P,Q) должна: быть симметричной, удовлетворять неравенству треугольника, обнуляться только при P=Q. KL нарушает первые два. Если нужна метрика - √JSD или Total Variation. Если нужны геометрические свойства - Wasserstein.

Почему WGAN предпочёл Wasserstein distance вместо Jensen-Shannon для тренировки GAN?

Ключевые идеи

  • **D_KL(P||Q)** - сколько дополнительных бит нужно, если кодировать P через код для Q. Несимметрична, всегда ≥ 0
  • **I(X;Y) = D_KL(P(X,Y) || P(X)P(Y))** - mutual information как KL от совместного к произведению маргинальных
  • **H(P,Q) = H(P) + D_KL(P||Q)**: cross-entropy = энтропия данных + KL. Минимизация CE ≡ минимизация KL
  • **f-дивергенции**: KL, JSD, Wasserstein - разные способы измерить расстояние. Выбор = выбор определения ошибки

Связанные темы

KL-дивергенция - мост между IT и всем современным ML:

  • Совместная и условная энтропия — MI из предыдущего урока - частный случай KL-дивергенции
  • Энтропия Шеннона — Cross-entropy = энтропия + KL. Энтропия - нижняя граница cross-entropy loss

Вопросы для размышления

  • Почему в VAE используется KL(q(z|x) || p(z)), а не наоборот? Что изменится при обращении аргументов?
  • Perplexity модели = 100. Что это интуитивно значит? Когда perplexity может быть обманчивой метрикой?
  • Forward KL (mode-covering) vs Reverse KL (mode-seeking): какой подход лучше для генерации текста? Для медицинской диагностики?

Связанные уроки

  • it-01 — Базовая энтропия H(X) нужна для понимания cross-entropy H(p,q)
  • it-02 — Условная энтропия H(Y|X) используется в вычислении KL через chain rule
  • it-04 — Mutual information I(X;Y) = H(X) - H(X|Y) строится поверх KL-дивергенции
  • prob-04-bayes — KL(P||Q) измеряет стоимость замены prior на posterior в байесовском обновлении
  • stat-03-mle
  • ml-09-gradient-descent
KL-дивергенция и cross-entropy

0

1

Войти