KL散度基本概念
Kullback-Leibler 散度(KL散度),也称为相对熵,是衡量两个概率分布相对差异的一种方法。它是信息论中的一个概念,由Solomon Kullback和Richard Leibler在1951年提出。KL散度是非对称的,这意味着从分布 P P P到分布 Q Q Q的KL散度通常不等于从分布 Q Q Q到分布 P P P的KL散度。
对于离散随机变量,KL散度定义为:
D K L ( P ∥ Q ) = ∑ x P ( x ) log ( P ( x ) Q ( x ) ) D_{KL}(P \parallel Q) = \sum_{x} P(x) \log \left(\frac{P(x)}{Q(x)}\right) DKL(P∥Q)=∑xP(x)log(Q(x)P(x))
其中, P P P和 Q Q Q是两个概率分布,且 P ( x ) P(x) P(x)是在 x x x处 P P P的概率,而 Q ( x ) Q(x) Q(x)是在 x x x处 Q Q Q的概率。对数底通常为2(比特为单位)或 e e e(自然单位)。
对于连续随机变量,KL散度通过概率密度函数来定义,并通过积分来计算:
D K L ( P ∥ Q ) = ∫ − ∞ ∞ p ( x ) log ( p ( x ) q ( x ) ) d x D_{KL}(P \parallel Q) = \int_{-\infty}^{\infty} p(x) \log \left(\frac{p(x)}{q(x)}\right) dx DKL(P∥Q)=∫−∞∞p(x)log(q(x)p(x))dx
其中, p ( x ) p(x) p(x)和 q ( x ) q(x) q(x)分别是连续随机变量的两个概率密度函数。
KL散度在机器学习、统计建模和信息论中有广泛的应用,例如在模型选择、贝叶斯推理和变分推断中。
两个高斯分布KL散度推导
计算两个连续概率分布的KL散度涉及积分运算,因为连续分布的概率是通过概率密度函数 (pdf) 定义的。
这里是一个计算两个高斯分布KL散度的例子,其中 p ( x ) p(x) p(x)是均值为 μ 1 \mu_1 μ1和方差为 σ 1 2 \sigma_1^2 σ12的分布, q ( x ) q(x) q(x)是均值为 μ 2 \mu_2 μ2和方差为 σ 2 2 \sigma_2^2 σ22的分布:
D K L ( P ∥ Q ) = log ( σ 2 σ 1 ) + σ 1 2 + ( μ 1 − μ 2 ) 2 2 σ 2 2 − 1 2 D_{KL}(P \parallel Q) = \log\left(\frac{\sigma_2}{\sigma_1}\right) + \frac{\sigma_1^2 + (\mu_1 - \mu_2)^2}{2\sigma_2^2} - \frac{1}{2} DKL(P∥Q)=log(σ1σ2)+2σ22σ12+(μ1−μ2)2−21
具体推导如下:
设 P P P为均值 μ 1 \mu_1 μ1、方差 σ 1 2 \sigma_1^2 σ12的高斯分布, Q Q Q为均值 μ 2 \mu_2 μ2、方差 σ 2 2 \sigma_2^2 σ22的高斯分布。它们的概率密度函数分别为:
p
(
x
)
=
1
2
π
σ
1
2
e
−
(
x
−
μ
1
)
2
2
σ
1
2
p(x) = \frac{1}{\sqrt{2\pi\sigma_1^2}} e^{-\frac{(x-\mu_1)^2}{2\sigma_1^2}}
p(x)=2πσ121e−2σ12(x−μ1)2
q
(
x
)
=
1
2
π
σ
2
2
e
−
(
x
−
μ
2
)
2
2
σ
2
2
q(x) = \frac{1}{\sqrt{2\pi\sigma_2^2}} e^{-\frac{(x-\mu_2)^2}{2\sigma_2^2}}
q(x)=2πσ221e−2σ22(x−μ2)2
KL散度定义为:
D K L ( P ∥ Q ) = ∫ − ∞ ∞ p ( x ) log ( p ( x ) q ( x ) ) d x D_{KL}(P \parallel Q) = \int_{-\infty}^{\infty} p(x) \log\left(\frac{p(x)}{q(x)}\right) dx DKL(P∥Q)=∫−∞∞p(x)log(q(x)p(x))dx
将高斯密度函数代入,分解对数项并简化:
D K L ( P ∥ Q ) = ∫ − ∞ ∞ p ( x ) [ log ( σ 2 σ 1 ) − ( x − μ 1 ) 2 2 σ 1 2 + ( x − μ 2 ) 2 2 σ 2 2 ] d x D_{KL}(P \parallel Q) = \int_{-\infty}^{\infty} p(x) \left[ \log\left(\frac{\sigma_2}{\sigma_1}\right) - \frac{(x-\mu_1)^2}{2\sigma_1^2} + \frac{(x-\mu_2)^2}{2\sigma_2^2} \right] dx DKL(P∥Q)=∫−∞∞p(x)[log(σ1σ2)−2σ12(x−μ1)2+2σ22(x−μ2)2]dx
接下来分三个部分积分:
- 第一部分是 log ( σ 2 σ 1 ) \log\left(\frac{\sigma_2}{\sigma_1}\right) log(σ1σ2)乘以 p ( x ) p(x) p(x)的积分,即:
∫ − ∞ ∞ p ( x ) log ( σ 2 σ 1 ) d x = log ( σ 2 σ 1 ) \int_{-\infty}^{\infty} p(x) \log\left(\frac{\sigma_2}{\sigma_1}\right) dx = \log\left(\frac{\sigma_2}{\sigma_1}\right) ∫−∞∞p(x)log(σ1σ2)dx=log(σ1σ2)
因为 p ( x ) p(x) p(x)的积分(即概率)总和为1。
- 第二部分是 ( x − μ 1 ) 2 2 σ 1 2 \frac{(x-\mu_1)^2}{2\sigma_1^2} 2σ12(x−μ1)2乘以 p ( x ) p(x) p(x)的积分。由于 ( x − μ 1 ) 2 (x-\mu_1)^2 (x−μ1)2是 p ( x ) p(x) p(x)的方差项(换而言之这个积分就是 V a r ( X ) = E [ ( X − E [ X ] ) 2 ] Var(X) = E[(X - E[X])^2] Var(X)=E[(X−E[X])2]),根据高斯分布定义,其积分等于 σ 1 2 \sigma_1^2 σ12,即:
∫ − ∞ ∞ p ( x ) ( x − μ 1 ) 2 2 σ 1 2 d x = 1 2 \int_{-\infty}^{\infty} p(x) \frac{(x-\mu_1)^2}{2\sigma_1^2} dx = \frac{1}{2} ∫−∞∞p(x)2σ12(x−μ1)2dx=21
- 第三部分是 ( x − μ 2 ) 2 2 σ 2 2 \frac{(x-\mu_2)^2}{2\sigma_2^2} 2σ22(x−μ2)2乘以 p ( x ) p(x) p(x)的积分。由于 x x x的分布与 μ 2 \mu_2 μ2和 σ 2 \sigma_2 σ2无关,这个积分涉及到展开 ( x − μ 2 ) 2 (x-\mu_2)^2 (x−μ2)2并完成积分。
为了计算这个积分,我们首先将 ( x − μ 2 ) 2 (x-\mu_2)^2 (x−μ2)2展开:
( x − μ 2 ) 2 = x 2 − 2 x μ 2 + μ 2 2 (x-\mu_2)^2 = x^2 - 2x\mu_2 + \mu_2^2 (x−μ2)2=x2−2xμ2+μ22
然后,我们将展开后的表达式代入积分中,得到三个部分:
1 2 σ 2 2 [ ∫ − ∞ ∞ x 2 p ( x ) d x − 2 μ 2 ∫ − ∞ ∞ x p ( x ) d x + μ 2 2 ∫ − ∞ ∞ p ( x ) d x ] \frac{1}{2\sigma_2^2} \left[ \int_{-\infty}^{\infty} x^2 p(x) dx - 2\mu_2 \int_{-\infty}^{\infty} x p(x) dx + \mu_2^2 \int_{-\infty}^{\infty} p(x) dx \right] 2σ221[∫−∞∞x2p(x)dx−2μ2∫−∞∞xp(x)dx+μ22∫−∞∞p(x)dx]
接下来,我们计算每个部分:
-
第一部分是关于 x 2 x^2 x2的高斯积分,可以通过将 x x x视为 x = ( x − μ 1 ) + μ 1 x = (x-\mu_1)+\mu_1 x=(x−μ1)+μ1并展开 x 2 x^2 x2,然后使用高斯积分的已知结果来计算。这个部分的结果是 σ 1 2 + μ 1 2 \sigma_1^2 + \mu_1^2 σ12+μ12。
-
第二部分是关于 x x x的高斯积分,它是 μ 1 \mu_1 μ1,因为 x x x的期望值是 μ 1 \mu_1 μ1。
-
第三部分是一个标准的高斯积分,其结果是 1,因为高斯分布的总积分为 1。
将这些结果组合起来,我们得到:
1 2 σ 2 2 [ ( σ 1 2 + μ 1 2 ) − 2 μ 2 μ 1 + μ 2 2 ] \frac{1}{2\sigma_2^2} \left[ (\sigma_1^2 + \mu_1^2) - 2\mu_2\mu_1 + \mu_2^2 \right] 2σ221[(σ12+μ12)−2μ2μ1+μ22]
简化后得到:
1 2 σ 2 2 ( σ 1 2 + ( μ 1 − μ 2 ) 2 ) \frac{1}{2\sigma_2^2} (\sigma_1^2 + (\mu_1 - \mu_2)^2) 2σ221(σ12+(μ1−μ2)2)
所以,
∫ − ∞ ∞ p ( x ) ( x − μ 2 ) 2 2 σ 2 2 d x = σ 1 2 + ( μ 1 − μ 2 ) 2 2 σ 2 2 \int_{-\infty}^{\infty} p(x) \frac{(x-\mu_2)^2}{2\sigma_2^2} dx = \frac{\sigma_1^2 + (\mu_1 - \mu_2)^2}{2\sigma_2^2} ∫−∞∞p(x)2σ22(x−μ2)2dx=2σ22σ12+(μ1−μ2)2
将这三个部分合并,我们得到:
D K L ( P ∥ Q ) = log ( σ 2 σ 1 ) + σ 1 2 + ( μ 1 − μ 2 ) 2 2 σ 2 2 − 1 2 D_{KL}(P \parallel Q) = \log\left(\frac{\sigma_2}{\sigma_1}\right) + \frac{\sigma_1^2 + (\mu_1 - \mu_2)^2}{2\sigma_2^2} - \frac{1}{2} DKL(P∥Q)=log(σ1σ2)+2σ22σ12+(μ1−μ2)2−21
这是两个高斯分布之间的KL散度的封闭形式解。