兩個單變量高斯之間的 KL 散度
我需要確定兩個高斯之間的 KL 散度。我正在將我的結果與這些進行比較,但我無法重現他們的結果。我的結果顯然是錯誤的,因為 KL(p, p) 的 KL 不是 0。
我想知道我在哪裡做錯了,並詢問是否有人能發現它。
讓 $ p(x) = N(\mu_1, \sigma_1) $ 和 $ q(x) = N(\mu_2, \sigma_2) $ . 從 Bishop 的 PRML 我知道
$$ KL(p, q) = - \int p(x) \log q(x) dx + \int p(x) \log p(x) dx $$
在所有實線上完成集成,並且
$$ \int p(x) \log p(x) dx = -\frac{1}{2} (1 + \log 2 \pi \sigma_1^2), $$
所以我限制自己 $ \int p(x) \log q(x) dx $ ,我可以寫成
$$ -\int p(x) \log \frac{1}{(2 \pi \sigma_2^2)^{(1/2)}} e^{-\frac{(x-\mu_2)^2}{2 \sigma_2^2}} dx, $$
可以分為
$$ \frac{1}{2} \log (2 \pi \sigma_2^2) - \int p(x) \log e^{-\frac{(x-\mu_2)^2}{2 \sigma_2^2}} dx. $$
記錄我得到的日誌
$$ \frac{1}{2} \log (2 \pi \sigma_2^2) - \int p(x) \bigg(-\frac{(x-\mu_2)^2}{2 \sigma_2^2} \bigg) dx, $$
我將總和分開並得到 $ \sigma_2^2 $ 出積分。
$$ \frac{1}{2} \log (2 \pi \sigma^2_2) + \frac{\int p(x) x^2 dx - \int p(x) 2x\mu_2 dx + \int p(x) \mu_2^2 dx}{2 \sigma_2^2} $$
讓 $ \langle \rangle $ 表示下面的期望算子 $ p $ ,我可以將其重寫為
$$ \frac{1}{2} \log (2 \pi \sigma_2^2) + \frac{\langle x^2 \rangle - 2 \langle x \rangle \mu_2 + \mu_2^2}{2 \sigma_2^2}. $$
我們知道 $ var(x) = \langle x^2 \rangle - \langle x \rangle ^2 $ . 因此
$$ \langle x^2 \rangle = \sigma_1^2 + \mu_1^2 $$
因此
$$ \frac{1}{2} \log (2 \pi \sigma^2) + \frac{\sigma_1^2 + \mu_1^2 - 2 \mu_1 \mu_2 + \mu_2^2}{2 \sigma_2^2}, $$
我可以說
$$ \frac{1}{2} \log (2 \pi \sigma_2^2) + \frac{\sigma_1^2 + (\mu_1 - \mu_2)^2}{2 \sigma_2^2}. $$
把所有東西放在一起,我得到
$$ \begin{align*} KL(p, q) &= - \int p(x) \log q(x) dx + \int p(x) \log p(x) dx\\ &= \frac{1}{2} \log (2 \pi \sigma_2^2) + \frac{\sigma_1^2 + (\mu_1 - \mu_2)^2}{2 \sigma_2^2} - \frac{1}{2} (1 + \log 2 \pi \sigma_1^2)\\ &= \log \frac{\sigma_2}{\sigma_1} + \frac{\sigma_1^2 + (\mu_1 - \mu_2)^2}{2 \sigma_2^2}. \end{align*} $$ 這是錯誤的,因為它等於 $ 1 $ 對於兩個相同的高斯。
誰能發現我的錯誤?
更新
感謝 mpiktas 清理問題。正確答案是:
$ KL(p, q) = \log \frac{\sigma_2}{\sigma_1} + \frac{\sigma_1^2 + (\mu_1 - \mu_2)^2}{2 \sigma_2^2} - \frac{1}{2} $
好吧,我的壞。錯誤在最後一個等式中:
注意缺失. 最後一行變為零時和.