Теория информации
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
Предварительные знания
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 q | Cross-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