Ich muss die KL-Divergenz zwischen zwei Gaußschen bestimmen. Ich vergleiche meine Ergebnisse mit diesen , aber ich kann ihr Ergebnis nicht reproduzieren. Mein Ergebnis ist offensichtlich falsch, weil die KL für KL nicht 0 ist (p, p).
Ich frage mich, wo ich einen Fehler mache und ob jemand ihn erkennen kann.
Sei und . Aus Bishops PRML weiß ich dasp(x)=N(μ1,σ1)q(x)=N(μ2,σ2)
KL(p,q)=−∫p(x)logq(x)dx+∫p(x)logp(x)dx
wo die Integration über die gesamte reale Linie erfolgt, und das auch noch
∫p(x)logp(x)dx=−12(1+log2πσ21),
deshalb beschränke ich mich auf , als das ich schreiben kann∫p(x)logq(x)dx
−∫p(x)log1(2πσ22)(1/2)e−(x−μ2)22σ22dx,
das kann in getrennt werden
12log(2πσ22)−∫p(x)loge−(x−μ2)22σ22dx.
Ich nehme das Protokoll, das ich bekomme
12log(2πσ22)−∫p(x)(−(x−μ2)22σ22)dx,
wo ich die Summen trenne und aus dem Integral erhalte .σ22
12log(2πσ22)+∫p(x)x2dx−∫p(x)2xμ2dx+∫p(x)μ22dx2σ22
Wenn ich ⟨⟨den Erwartungsoperator unter bezeichnen ⟨⟩ , kann ich dies umschreiben alsp
12log(2πσ22)+⟨x2⟩−2⟨x⟩μ2+μ222σ22.
Wir wissen, dass . Somitvar(x)=⟨x2⟩−⟨x⟩2
⟨x2⟩=σ21+μ21
und deshalb
12log(2πσ2)+σ21+μ21−2μ1μ2+μ222σ22,
das kann ich als
12log(2πσ22)+σ21+(μ1−μ2)22σ22.
Alles zusammen fasse ich zusammen
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.
Das ist falsch, da es für zwei identische Gaußsche entspricht .1
Kann jemand meinen Fehler erkennen?
Aktualisieren
Vielen Dank an mpiktas für die Aufklärung. Die richtige Antwort ist:
KL(p,q)=logσ2σ1+σ21+(μ1−μ2)22σ22−12
Antworten:
OK, mein Schlimmes. Der Fehler ist in der letzten Gleichung:
quelle
quelle