Divergência de KL entre dois gaussianos univariados

79

Preciso determinar a divergência KL entre dois gaussianos. Estou comparando meus resultados com esses , mas não consigo reproduzir o resultado deles. Meu resultado está obviamente errado, porque o KL não é 0 para KL (p, p).

Gostaria de saber onde estou cometendo um erro e perguntar se alguém pode identificá-lo.

Seja e . Do PRML de Bishop, eu sei quep(x)=N(μ1,σ1)q(x)=N(μ2,σ2)

KL(p,q)=p(x)logq(x)dx+p(x)logp(x)dx

onde a integração é feita em toda a linha real e que

p(x)logp(x)dx=12(1+log2πσ12),

então eu me restrico a , que eu posso escrever comop(x)logq(x)dx

p(x)log1(2πσ22)(1/2)e(xμ2)22σ22dx,

que pode ser separado em

12log(2πσ22)p(x)loge(xμ2)22σ22dx.

Tomando o log que recebo

12log(2πσ22)p(x)((xμ2)22σ22)dx,

onde separo as somas e da integral.σ22

12log(2πσ22)+p(x)x2dxp(x)2xμ2dx+p(x)μ22dx2σ22

Deixando denotar o operador de expectativa em , posso reescrever isso comop

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

Sabemos que . portantovar(x)=x2x2

x2=σ12+μ12

e portanto

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

que eu posso colocar como

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

Juntando tudo, eu chego a

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.
que está errado, pois é igual a para dois gaussianos idênticos.1

Alguém pode detectar meu erro?

Atualizar

Obrigado a mpiktas por esclarecer as coisas. A resposta correta é:

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

bayerj
fonte
desculpe por postar a resposta incorreta em primeiro lugar. Acabei de olhar para e imediatamente pensei que a integral é zero. O ponto que foi ao quadrado completamente perdido minha mente :)xμ1
mpiktas
o que acontece com o caso multi-variável?
Acabei de ver em um trabalho de pesquisa que o kld deve ser $ KL (p, q) = ½ * ((μ₁-μ₂) ² + σ₁² + σ₂²) * ((1 / σ₁²) + (1 / σ₂²)) - 2
skyde
1
Acho que há um erro de digitação na sua pergunta, pois não posso validá-la e também parece que você usou a versão correta posteriormente na sua pergunta: Acho que deveria ser (observe o menos): Tentei editar sua pergunta e fui banido, talvez faça você mesmo.
p(x)logp(x)dx=12(1+log2πσ12)
p(x)logp(x)dx=12(1+log2πσ12)
você precisa saber é
A resposta também está no meu artigo de 1996 sobre perdas intrínsecas .
Xian

Respostas:

59

OK, meu mal. O erro está na última equação:

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

Observe a falta . A última linha se torna zero quando e .12μ1=μ2σ1=σ2

mpiktas
fonte
@mpiktas Eu realmente quis dizer a pergunta - bayerj É um pesquisador bem publicado e sou um estudante de graduação. É bom ver que até os caras espertos voltam a perguntar na internet algumas vezes :)
N. McA.
3
é p ouμ1σ1μ2σ2
Kong
@Kong p é , conforme observado na pergunta. N(u1,σ1)
zplizzi 03/10
31

Não dei uma olhada no seu cálculo, mas aqui está o meu com muitos detalhes. Suponha que seja a densidade de uma variável aleatória normal com média e variância , e que seja a densidade de uma variável aleatória normal com média e variância . A distância Kullback-Leibler de até é: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

(Agora observe que )(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
fonte