Мне нужно определить KL-расхождение между двумя гауссианами. Я сравниваю свои результаты с этими , но я не могу воспроизвести их результаты. Мой результат, очевидно, неверен, потому что KL не 0 для KL (p, p).
Интересно, где я делаю ошибку и спрашиваю, может ли кто-нибудь ее заметить.
Пусть и . Из PRML Бишопа я знаю, чтоp(x)=N(μ1,σ1)q(x)=N(μ2,σ2)
KL(p,q)=−∫p(x)logq(x)dx+∫p(x)logp(x)dx
где интеграция осуществляется по всей реальной линии, и что
∫p(x)logp(x)dx=−12(1+log2πσ21),
поэтому я ограничусь , который я могу записать как∫p(x)logq(x)dx
−∫p(x)log1(2πσ22)(1/2)e−(x−μ2)22σ22dx,
которые могут быть разделены на
12log(2πσ22)−∫p(x)loge−(x−μ2)22σ22dx.
Принимая журнал я получаю
12log(2πσ22)−∫p(x)(−(x−μ2)22σ22)dx,
где я разделяю суммы и получаю из интеграла.σ22
12log(2πσ22)+∫p(x)x2dx−∫p(x)2xμ2dx+∫p(x)μ22dx2σ22
Позволяя обозначать оператор ожидания под , я могу переписать это как⟨⟩p
12log(2πσ22)+⟨x2⟩−2⟨x⟩μ2+μ222σ22.
Мы знаем, что . таким образомvar(x)=⟨x2⟩−⟨x⟩2
⟨x2⟩=σ21+μ21
и поэтому
12log(2πσ2)+σ21+μ21−2μ1μ2+μ222σ22,
который я могу поставить как
12log(2πσ22)+σ21+(μ1−μ2)22σ22.
Собирая все вместе, я добираюсь до
KL(p,q)=−∫p(x)logq(x)dx+∫p(x)logp(x)dx=12log(2πσ22)+σ21+(μ1−μ2)22σ22−12(1+log2πσ21)=logσ2σ1+σ21+(μ1−μ2)22σ22.
Что неверно, поскольку оно равно для двух одинаковых гауссиан.1
Кто-нибудь может определить мою ошибку?
Обновить
Спасибо mpiktas за прояснение ситуации. Правильный ответ:
KL(p,q)=logσ2σ1+σ21+(μ1−μ2)22σ22−12
Ответы:
Ок мой плохой Ошибка в последнем уравнении:
Обратите внимание на отсутствующий . Последняя строка становится нулевой, когда и .−12 μ1=μ2 σ1=σ2
источник
Я не смотрел на ваши расчеты, но вот мой с большим количеством деталей. Предположим, что - плотность нормальной случайной величины со средним значением и дисперсией , а - плотность нормальной случайной величины со средним значением и дисперсией . Расстояние Кульбака-Лейблера от до равно:p μ1 σ21 q μ2 σ22 q p
(Теперь обратите внимание, что )(X−μ2)2=(X−μ1+μ1−μ2)2=(X−μ1)2+2(X−μ1)(μ1−μ2)+(μ1−μ2)2
источник