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

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

Не расстояние, а цена неверной модели — и почему она неотрицательна

Шаг 56 из 117 · ~30 мин

Определение и что оно значит

KL(pq)=xp(x)log2p(x)q(x)=Ep ⁣[log2p(X)q(X)]\htmlData{k=kl}{\text{KL}(p \,\|\, q)} = \sum_x p(x)\log_2 \htmlData{k=ratio}{\frac{p(x)}{q(x)}} = \mathbb{E}_{p}\!\left[\log_2 \frac{p(X)}{q(X)}\right]

Три прочтения одного числа, и каждое пригодится:

  • лишние биты. Сколько в среднем вы переплачиваете, кодируя данные из pp кодом, построенным под qq. Это разложение H(p,q)H(p)H(p,q) - H(p) из прошлого урока;
  • ожидание логарифма . Тот же объект dPdQ\frac{dP}{dQ}, что в уроке 180 блока 3;
  • насколько данные различают гипотезы. Если KL\text{KL} велика, одного наблюдения почти хватает, чтобы отличить pp от qq; если мала — потребуется много.

Почему KL0\text{KL} \ge 0

Вывод короткий, и стоит его проделать — он объясняет, откуда неотрицательность берётся. Неравенство Йенсена для выпуклой φ\varphi говорит E[φ(X)]φ(E[X])\mathbb{E}[\varphi(X)] \ge \varphi(\mathbb{E}[X]). Возьмём φ=log\varphi = -\log, она выпукла:

KL(pq)=Ep ⁣[logqp]  logEp ⁣[qp]=logxp(x)q(x)p(x)=log1=0\text{KL}(p\|q) = \mathbb{E}_p\!\left[-\log\frac{q}{p}\right] \ \ge \ -\log \mathbb{E}_p\!\left[\frac{q}{p}\right] = -\log \sum_x p(x)\frac{q(x)}{p(x)} = -\log 1 = 0

Равенство в неравенстве Йенсена достигается только когда аргумент постоянен почти наверное, то есть q/p=constq/p = \text{const}; вместе с нормировкой это даёт q=pq = p. Отсюда и «равенство тогда и только тогда».

Это же неравенство даёт всё остальное в блоке:

утверждениекак получается
H(p,q)H(p)H(p, q) \ge H(p)=H(p)+KLH(p)= H(p) + \text{KL} \ge H(p)
H(p)log2nH(p) \le \log_2 nиз KL(puniform)0\text{KL}(p \| \text{uniform}) \ge 0
I(X;Y)0I(X;Y) \ge 0это KL\text{KL} совместного от произведения
ELBOlogp(x)\text{ELBO} \le \log p(x)зазор равен KL0\text{KL} \ge 0

То есть одно неравенство Йенсена держит весь блок. Если запоминать здесь одну вещь, то эту.

Не расстояние

Слово «дивергенция» вместо «расстояния» выбрано не из скромности. KL нарушает два из трёх свойств метрики:

  • не симметрична: KL(pq)KL(qp)\text{KL}(p\|q) \ne \text{KL}(q\|p);
  • не удовлетворяет неравенству треугольника;
  • неотрицательность и «нуль только при совпадении» — выполняются.

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

распределение p

a 0.6
b 0.3
c 0.1

распределение q

a 0.333
b 0.333
c 0.333
H(p)
1.2955 бит
H(p, q)
1.585 бит
KL(p‖q)
0.2895 бит
KL(q‖p)
0.347 бит
H(q)
1.585 бит

Если хочется настоящей метрики, она есть: дивергенция Йенсена–Шеннона

JS(p,q)=12KL(pm)+12KL(qm),m=p+q2\text{JS}(p, q) = \tfrac12 \text{KL}(p \| m) + \tfrac12 \text{KL}(q \| m), \qquad m = \tfrac{p+q}{2}

симметрична, ограничена одним битом, а её корень — настоящая метрика. Усреднённое mm покрывает носители обоих, поэтому JS никогда не бесконечна — свойство, за которое её и взяли в оригинальный GAN.

Что делать с бесконечностью

Обнуление в qq там, где pp положительна, — не редкий вырожденный случай, а повседневная проблема. Три стандартных ответа:

  • сглаживание: подмешать ε\varepsilon равномерного, q=(1ε)q+εuq' = (1-\varepsilon)q + \varepsilon u;
  • параметризация без нулей: softmax, гауссиана с носителем на всей прямой;
  • другая дивергенция: JS, полное вариационное расстояние или Вассерштейн, которые конечны при непересекающихся носителях.

Последний пункт — исторически важный. Ранние GAN’ы оптимизировали JS, и при непересекающихся носителях генератора и данных её градиент обращался в нуль: дивергенция равна своему максимуму, но не подсказывает, куда двигаться. Вассерштейновское расстояние это исправило, потому что оно учитывает, насколько далеко носители друг от друга, а не только то, что они не пересекаются.

Где встречается

Стоит увидеть, что это одна величина в разных костюмах:

месточто за KL
кросс-энтропийный лоссKL(p^данныеpмодель)\text{KL}(\hat p_{\text{данные}} \| p_{\text{модель}}) плюс константа
L2-регуляризацияKL\text{KL} posterior до prior, если смотреть байесовски
VAEKL(q(zx)p(z))\text{KL}(q(z\|x) \| p(z)) — второй член ELBO
дистилляцияKL\text{KL} от ученика до учителя
PPOKL\text{KL}-ограничение на шаг политики
RLHFKL\text{KL}-штраф к исходной модели
взаимная информацияKL\text{KL} совместного от произведения маргинальных

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

Источники

Проверки

0 из 2
  1. Почему KL не расстояние

    Отметьте все верные утверждения о KL-дивергенции.

  2. Четыре дивергенции на одной паре

    Даны ненормированные веса p_weights и q_weights. Нормируйте оба и верните [kl_pq, kl_qp, js, tv] в битах:

    • kl_pq = ipilog2piqi\sum_i p_i \log_2 \frac{p_i}{q_i}, слагаемые с pi=0p_i = 0 пропускаются;
    • kl_qp — то же с переставленными аргументами;
    • js = 12KL(pm)+12KL(qm)\frac12 \text{KL}(p\|m) + \frac12 \text{KL}(q\|m), где mi=pi+qi2m_i = \frac{p_i + q_i}{2};
    • tv = 12ipiqi\frac12 \sum_i |p_i - q_i| — полное вариационное расстояние.

    Если какое-то из двух направлений KL не определено (есть ii с pi>0p_i > 0, qi=0q_i = 0 — или наоборот, для обратного направления), верните для этого направления -1.0. На js и tv это не влияет: они определены всегда, и в этом весь смысл задачи.

    функция divergences

    Загрузка редактора…

    Ctrl/⌘ + Enter