Я собираюсь использовать дивергенцию KL в своем коде Python, и я получил это руководство .
На этом уроке реализовать дивергенцию KL довольно просто.
kl = (model * np.log(model/actual)).sum()
Как я понимаю, распределение вероятностей model
и actual
должно быть <= 1.
Мой вопрос: какова максимальная граница / максимально возможное значение k ?. Мне нужно знать максимально возможное значение расстояния кл, как для максимальной границы в моем коде.
machine-learning
distance
kullback-leibler
user46543
источник
источник
Ответы:
Или даже с той же поддержкой, когда у одного распределения гораздо более толстый хвост, чем у другого. Возьмем
источник
Для распределений, которые не имеют такой же поддержки, дивергенция KL не ограничена. Посмотрите на определение:
если P и Q не имеют одинаковой опоры, существует некоторая точка где p ( x ′ ) ≠ 0 и q ( x ′ ) = 0 , заставляя KL уходить в бесконечность. Это также применимо для дискретных распределений, что является вашим случаем.x′ p(x′)≠0 q(x′)=0
Редактировать: Возможно, лучшим выбором для измерения расхождения между распределениями вероятности будет так называемое расстояние Вассерштейна, которое является метрикой и имеет лучшие свойства, чем расхождение KL. Он стал довольно популярным благодаря своим приложениям для глубокого обучения (см. Сети WGAN).
источник
Чтобы добавить к превосходным ответам Карлоса и Сианя , также интересно отметить, что достаточное условие конечности расходимости KL состоит в том, что обе случайные величины имеют одинаковый компактный носитель, а опорная плотность ограничена , Этот результат также устанавливает неявную оценку максимума расходимости KL (см. Теорему и доказательство ниже).
Теорема: если плотности и q имеют один и тот же компактный носитель X и плотность p ограничена на этом носителе (т. Е. Имеет конечную верхнюю границу), то K L ( P | | Q ) < ∞ .p q X p KL(P||Q)<∞
Доказательство: поскольку имеет компактную поддержку X, это означает, что существует некоторое положительное минимальное значение:q X
источник