Muszę ustalić rozbieżność KL między dwoma Gaussami. Porównuję moje wyniki z tymi , ale nie mogę odtworzyć ich wyników. Mój wynik jest oczywiście błędny, ponieważ KL nie jest równe 0 dla KL (p, p).
Zastanawiam się, gdzie popełniam błąd i pytam, czy ktokolwiek może to zauważyć.
Niech p(x)=N(μ1,σ1) i q(x)=N(μ2,σ2) . Z PRML Bishopa wiem o tym
KL(p,q)=−∫p(x)logq(x)dx+∫p(x)logp(x)dx
gdzie integracja odbywa się na całej linii rzeczywistej i to
∫p(x)logp(x)dx=−12(1+log2πσ21),
więc ograniczam się do ∫p(x)logq(x)dx , który mogę zapisać jako
−∫p(x)log1(2πσ22)(1/2)e−(x−μ2)22σ22dx,
na które można podzielić
12log(2πσ22)−∫p(x)loge−(x−μ2)22σ22dx.
Biorę dziennik, który dostaję
12log(2πσ22)−∫p(x)(−(x−μ2)22σ22)dx,
gdzie oddzielam sumy i otrzymuję σ22 z całki.
12log(2πσ22)+∫p(x)x2dx−∫p(x)2xμ2dx+∫p(x)μ22dx2σ22
POZWALAĆ ⟨⟩ oznacza operator wartości oczekiwanej mocy p , można przepisać to jako
12log(2πσ22)+⟨x2⟩−2⟨x⟩μ2+μ222σ22.
Wiemy, że var(x)=⟨x2⟩−⟨x⟩2 . A zatem
⟨x2⟩=σ21+μ21
i dlatego
12log(2πσ2)+σ21+μ21−2μ1μ2+μ222σ22,
co mogę umieścić jako
12log(2πσ22)+σ21+(μ1−μ2)22σ22.
Łącząc wszystko, dochodzę do
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.
Co jest złe, ponieważ wynosi1dla dwóch identycznych Gaussów.
Czy ktoś może zauważyć mój błąd?
Aktualizacja
Dzięki mpiktas za uporządkowanie sprawy. Poprawna odpowiedź to:
KL(p,q)=logσ2σ1+σ21+(μ1−μ2)22σ22−12
Odpowiedzi:
OK, mój zły. Błąd znajduje się w ostatnim równaniu:
źródło
źródło