KL散度理解

概念

考虑某个未知的分布 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)

这被称为分布p(x)和分布q(x)之间的相对熵(relative entropy ) 或 者 KL散 度( Kullback-Leibler divergence)

也就是说,当我们知道真实的概率分布之后,可以给出最有效的编码。如果我们使用了不同于真实分布的概率分布,那么我们一定会损失编码效率,并且在传输时增加的平均额外信息量至少等于两个分布之间的KL散度。

注意,这不是一个对称量,即KL (p || q) \neq KL (q || p)

为什么KL散度大于等于0

现在要证明的是KL散度满足 KL (p || q) \geq 0 ,并且当且仅当 p(x) = q(x) 时等号成立。

对于连续变量, Jensen 不等式的形式为:

f(\int xp(x)dx) \leq \int f(x)p(x)dx\quad\quad\quad (2)

注意到,-ln x 是严格的凸函数且 \displaystyle \int q(x) dx = 1

把公式(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)

只有 q(x) = p(x) 对于所有 x 都成立时,等号才成立,

因此我们可以把 KL 散度看做两个分布 p(x) 和 q(x)之间不相似程度的度量

最小化 Kullback-Leibler 散度等价于最大化似然函数

假设我们想要对未知分布p(x) 建模,可以试着使用一些参数分布 q(x|\theta) 来近似p(x)。 q(x|\theta) 由可调节的参数 \theta 控制(例如一个多元高斯分布)。

通过最小化 p(x) 和 q(x|\theta) 之间关于 \theta 的 Kullback-Leibler 散度可以确定\theta

但是因为不知道 p(x),所以不能直接这么做

如果已经观察到了服从分布 p(x) 的有限数量的训练点集\{x_n\},其中 n = 1,\dots, N ,那么关于 p(x) 的期望就可以通过这些点的有限加和,使用公式 \displaystyle E(f) \simeq \frac{1}{N}  \sum_{N=1}^N f(x_n)来近似,即:

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)

公式(4)右侧的第二项与 \theta 无关,第一项是使用训练集估计的分布 q(x | \theta) 下的 \theta 的负对数似然函数。

因此最小化KL散度等价于最大化似然函数。

参考资料:

[1] PRML


猜你喜欢

转载自juejin.im/post/5b558ee3f265da0fa759d28d