兩個單變量高斯之間的 KL 散度
我需要確定兩個高斯之間的 KL 散度。我正在將我的結果與這些進行比較,但我無法重現他們的結果。我的結果顯然是錯誤的,因為 KL(p, p) 的 KL 不是 0。
我想知道我在哪裡做錯了,並詢問是否有人能發現它。
讓 p(x)=N(μ1,σ1) 和 q(x)=N(μ2,σ2) . 從 Bishop 的 PRML 我知道
KL(p,q)=−∫p(x)logq(x)dx+∫p(x)logp(x)dx
在所有實線上完成集成,並且
∫p(x)logp(x)dx=−12(1+log2πσ21),
所以我限制自己 ∫p(x)logq(x)dx ,我可以寫成
−∫p(x)log1(2πσ22)(1/2)e−(x−μ2)22σ22dx,
可以分為
12log(2πσ22)−∫p(x)loge−(x−μ2)22σ22dx.
記錄我得到的日誌
12log(2πσ22)−∫p(x)(−(x−μ2)22σ22)dx,
我將總和分開並得到 σ22 出積分。
12log(2πσ22)+∫p(x)x2dx−∫p(x)2xμ2dx+∫p(x)μ22dx2σ22
讓 ⟨⟩ 表示下面的期望算子 p ,我可以將其重寫為
12log(2πσ22)+⟨x2⟩−2⟨x⟩μ2+μ222σ22.
我們知道 var(x)=⟨x2⟩−⟨x⟩2 . 因此
⟨x2⟩=σ21+μ21
因此
12log(2πσ2)+σ21+μ21−2μ1μ2+μ222σ22,
我可以說
12log(2πσ22)+σ21+(μ1−μ2)22σ22.
把所有東西放在一起,我得到
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 對於兩個相同的高斯。誰能發現我的錯誤?
更新
感謝 mpiktas 清理問題。正確答案是:
KL(p,q)=logσ2σ1+σ21+(μ1−μ2)22σ22−12
好吧,我的壞。錯誤在最後一個等式中:
注意缺失. 最後一行變為零時和.