Je dois déterminer la divergence KL entre deux Gaussiennes. Je compare mes résultats à ceux - ci , mais je ne peux pas reproduire leurs résultats. Mon résultat est évidemment faux, car le KL n'est pas 0 pour KL (p, p).
Je me demande où je fais une erreur et demande si quelqu'un peut la repérer.
Soit p(x)=N(μ1,σ1) et q(x)=N(μ2,σ2) . De PRML Bishop je sais que
KL(p,q)=−∫p(x)logq(x)dx+∫p(x)logp(x)dx
où l'intégration est faite sur toute la ligne réelle, et que
∫p(x)logp(x)dx=−12(1+log2πσ21),
donc je me limite à ∫p(x)logq(x)dx , que je peux écrire comme
−∫p(x)log1(2πσ22)(1/2)e−(x−μ2)22σ22dx,
qui peut être séparé en
12log(2πσ22)−∫p(x)loge−(x−μ2)22σ22dx.
Je prends le journal
12log(2πσ22)−∫p(x)(−(x−μ2)22σ22)dx,
où je sépare les sommes et obtient σ22 de l'intégrale.
12log(2πσ22)+∫p(x)x2dx−∫p(x)2xμ2dx+∫p(x)μ22dx2σ22
Letting ⟨⟩ désignent l'opérateur d'espérance sous p , je peux réécrire ce que
12log(2πσ22)+⟨x2⟩−2⟨x⟩μ2+μ222σ22.
var(x)=⟨x2⟩−⟨x⟩2
⟨x2⟩=σ21+μ21
et donc
12log(2πσ2)+σ21+μ21−2μ1μ2+μ222σ22,
que je peux mettre comme
12log(2πσ22)+σ21+(μ1−μ2)22σ22.
Tout mettre ensemble, je dois
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
Quelqu'un peut-il repérer mon erreur?
Mise à jour
Merci à mpiktas pour avoir clarifié les choses. La bonne réponse est:
KL(p,q)=logσ2σ1+σ21+(μ1−μ2)22σ22−12