概念
考虑某个未知的分布 p(x),假定用一个 近似的分布 q(x) 对它进行建模。如果我们使用 q(x) 来建立一个编码体系,用来把 x 的值传给接收者,那么由于我们使用了q(x)而不是真实分布p(x),平均编码长度比用真实分布p(x)进行编码增加的信息量(单位是 nat )为:
![\begin{aligned} KL (p || q) &= - \int p(x) \ln q(x) d x - (-\int p(x) \ln p(x) dx) \\ &= - \int p(x) \ln [\frac{q(x)}{p(x)}] dx \end{aligned} \quad\quad\quad (1)](https://i-blog.csdnimg.cn/blog_migrate/2c27584fa918c05df907478c4abf4369.png)
这被称为分布p(x)和分布q(x)之间的相对熵(relative entropy ) 或 者 KL散 度( Kullback-Leibler divergence)。
也就是说,当我们知道真实的概率分布之后,可以给出最有效的编码。如果我们使用了不同于真实分布的概率分布,那么我们一定会损失编码效率,并且在传输时增加的平均额外信息量至少等于两个分布之间的KL散度。
注意,这不是一个对称量,即 。
为什么KL散度大于等于0
现在要证明的是KL散度满足 ,并且当且仅当 p(x) = q(x) 时等号成立。
对于连续变量, Jensen 不等式的形式为:

注意到,-ln x 是严格的凸函数且 。
把公式(2)形式的 Jensen 不等式应用于公式(1)给出的 Kullback-Leibler散度,直接可得
![KL (p || q) = - \int p(x) \ln [\frac{q(x)}{p(x)}] d x \geq -\int \ln q(x) dx = 0\quad\quad\quad (3)](https://i-blog.csdnimg.cn/blog_migrate/c90926174043db8ee256885ae8d37da6.png)
只有 q(x) = p(x) 对于所有 x 都成立时,等号才成立,
因此我们可以把 KL 散度看做两个分布 p(x) 和 q(x)之间不相似程度的度量。
最小化 Kullback-Leibler 散度等价于最大化似然函数
假设我们想要对未知分布p(x) 建模,可以试着使用一些参数分布 来近似p(x)。
由可调节的参数
控制(例如一个多元高斯分布)。
通过最小化 p(x) 和 之间关于
的 Kullback-Leibler 散度可以确定
。
但是因为不知道 p(x),所以不能直接这么做。
如果已经观察到了服从分布 p(x) 的有限数量的训练点集,其中
,那么关于 p(x) 的期望就可以通过这些点的有限加和,使用公式
来近似,即:
![KL (p || q) \simeq \frac{1}{N}\sum_{n=1}^N[-\ln q( x_n \mid \theta)+ \ln p(x_n )]\quad\quad\quad (4)](https://i-blog.csdnimg.cn/blog_migrate/79a31a825d01710440511ae866f2e1c2.png)
公式(4)右侧的第二项与 无关,第一项是使用训练集估计的分布
下的
的负对数似然函数。
因此最小化KL散度等价于最大化似然函数。
参考资料:
[1] PRML