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)log⁡q(x)dx+∫p(x)log⁡p(x)dx

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

∫p(x)log⁡p(x)dx=−12(1+log⁡2πσ12),

então eu me restrico a , que eu posso escrever como∫p(x)log⁡q(x)dx

−∫p(x)log⁡1(2πσ22)(1/2)e−(x−μ2)22σ22dx,

que pode ser separado em

12log⁡(2πσ22)−∫p(x)log⁡e−(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)x2dx−∫p(x)2xμ2dx+∫p(x)μ22dx2σ22

Deixando denotar o operador de expectativa em , posso reescrever isso como⟨⟩p

12log⁡(2πσ22)+⟨x2⟩−2⟨x⟩μ2+μ222σ22.

Sabemos que . portantovar(x)=⟨x2⟩−⟨x⟩2

⟨x2⟩=σ12+μ12

e portanto

12log⁡(2πσ2)+σ12+μ12−2μ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)log⁡q(x)dx+∫p(x)log⁡p(x)dx=12log⁡(2πσ22)+σ12+(μ1−μ2)22σ22−12(1+log⁡2πσ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σ22−12


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)log⁡p(x)dx=12(1+log⁡2πσ12)
∫p(x)log⁡p(x)dx=−12(1+log⁡2πσ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)log⁡q(x)dx+∫p(x)log⁡p(x)dx=12log⁡(2πσ22)+σ12+(μ1−μ2)22σ22−12(1+log⁡2πσ12)=log⁡σ2σ1+σ12+(μ1−μ2)22σ22−12

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


@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σ22−12

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.