KL расхождение между двумя одномерными гауссианами

79

Мне нужно определить 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πσ12),

поэтому я ограничусь , который я могу записать как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)x2dxp(x)2xμ2dx+p(x)μ22dx2σ22

Позволяя обозначать оператор ожидания под , я могу переписать это какp

12log(2πσ22)+x22xμ2+μ222σ22.

Мы знаем, что . таким образомvar(x)=x2x2

x2=σ12+μ12

и поэтому

12log(2πσ2)+σ12+μ122μ1μ2+μ222σ22,

который я могу поставить как

12log(2πσ22)+σ12+(μ1μ2)22σ22.

Собирая все вместе, я добираюсь до

KL(p,q)=p(x)logq(x)dx+p(x)logp(x)dx=12log(2πσ22)+σ12+(μ1μ2)22σ2212(1+log2πσ12)=logσ2σ1+σ12+(μ1μ2)22σ22.
Что неверно, поскольку оно равно для двух одинаковых гауссиан.1

Кто-нибудь может определить мою ошибку?

Обновить

Спасибо mpiktas за прояснение ситуации. Правильный ответ:

KL(p,q)=logσ2σ1+σ12+(μ1μ2)22σ2212

bayerj
источник
Извините за размещение неправильного ответа в первую очередь. Я просто посмотрел на и сразу подумал, что интеграл равен нулю. xμ1
Смысл в
как насчет многовариантного случая?
Я только что видел в исследовательской работе, что kld должен быть $ KL (p, q) = ½ * ((μ₁-μ₂) ² + σ₁² + σ₂²) * ((1 / σ₁²) + (1 / σ₂²)) - 2
Skyde
1
Я думаю, что в вашем вопросе есть опечатка, так как я не могу ее проверить, и также кажется, что вы использовали правильную версию позже в своем вопросе: Я думаю, что это должно быть (обратите внимание на минус): Я попытался отредактировать ваш вопрос и получил за него бан, так что, возможно, сделайте это сами.
p(x)logp(x)dx=12(1+log2πσ12)
p(x)logp(x)dx=12(1+log2πσ12)
y-spreen
Ответ также в моей статье 1996 года о внутренних потерях .
Сиань

Ответы:

59

Ок мой плохой Ошибка в последнем уравнении:

KL(p,q)=p(x)logq(x)dx+p(x)logp(x)dx=12log(2πσ22)+σ12+(μ1μ2)22σ2212(1+log2πσ12)=logσ2σ1+σ12+(μ1μ2)22σ2212

Обратите внимание на отсутствующий . Последняя строка становится нулевой, когда и .12μ1=μ2σ1=σ2

mpiktas
источник
@mpiktas Я действительно имел в виду вопрос - bayerj Хорошо опубликованный исследователь, и я студент. Приятно видеть, что даже умные парни иногда задают вопросы в Интернете :)
Н. Мака.
3
р илиμ1σ1μ2σ2
Гонконг
@ Конг р равен , как отмечено в вопросе. N(u1,σ1)
zplizzi
31

Я не смотрел на ваши расчеты, но вот мой с большим количеством деталей. Предположим, что - плотность нормальной случайной величины со средним значением и дисперсией , а - плотность нормальной случайной величины со средним значением и дисперсией . Расстояние Кульбака-Лейблера от до равно:pμ1σ12qμ2σ22qp

[log(p(x))log(q(x))]p(x)dx

=[12log(2π)log(σ1)12(xμ1σ1)2+12log(2π)+log(σ2)+12(xμ2σ2)2] ×12πσ1exp[12(xμ1σ1)2]dx

={log(σ2σ1)+12[(xμ2σ2)2(xμ1σ1)2]} ×12πσ1exp[12(xμ1σ1)2]dx

=E1{log(σ2σ1)+12[(xμ2σ2)2(xμ1σ1)2]}

=log(σ2σ1)+12σ22E1{(Xμ2)2}12σ12E1{(Xμ1)2}

=log(σ2σ1)+12σ22E1{(Xμ2)2}12

(Теперь обратите внимание, что )(Xμ2)2=(Xμ1+μ1μ2)2=(Xμ1)2+2(Xμ1)(μ1μ2)+(μ1μ2)2

=log(σ2σ1)+12σ22[E1{(Xμ1)2}+2(μ1μ2)E1{Xμ1}+(μ1μ2)2]12

=log(σ2σ1)+σ12+(μ1μ2)22σ2212

ocram
источник