在数理统计中,库尔巴克–莱布勒散度(也称为相对熵和 I 散度 ),表示为 $D_{ KL }(P \| Q)$,是一种统计距离:衡量一个参考概率分布 $P$ 与第二个概率分布 $Q{ }$ 之间的差异。从数学上讲,它定义为
$$ D_{KL}(P \| Q)=\sum_{x \in X } P(x) \log \left(\frac{P(x)}{Q(x)}\right) $$
让我们从离散情况开始。因此,让 P 和 Q 成为在同一概率空间 $\mathcal { X }$ 上定义的两个概率分布。第一次尝试可能是考虑分布之间差异的平均值。确实非常接近,但以下定义略有不同。库尔巴克–莱布勒散度(也称为相对熵)$KL (P \| Q)$ 定义为概率 $P(x)$ 和 $Q(x)$ 的对数之间差异的平均值:
$$ KL(P \| Q) \stackrel{\text { def }}{=} E [\log P(x)-\log Q(x)] $$
期望值使用概率 $P$(通常写为 $x \sim P$ )计算。期望值的定义可得出以下表达式
$$ KL(P \| Q)=\sum_{x \in X } P(x) \log \left(\frac{P(x)}{Q(x)}\right) $$
对于连续分布,我们写为
$$ KL(P \| Q)=\int_{-\infty}^{\infty} p(x) \log \left(\frac{p(x)}{q(x)}\right) d x $$
其中 $p(x)$ 和 $q(x)$ 分别是 P 和 Q 的密度。
如果 $\left\{p_i\right\}$ 和 $\left\{q_i\right\}$ 是两个概率质量函数,即两个可数或有限的非负数序列,且和为 1,那么
$$ \sum_i p_i \log \left(\frac{p_i}{q_i}\right) \geq 0 $$
关于散度实际上表达了两个分布之间的某种距离,表达式
$$ \begin{aligned} KL(P \| Q) & =\int_{-\infty} p(x)(\log p(x)-\log q(x)) d x \\ & =\int_{-\infty}^{\infty} p(x) D(x) d x \end{aligned} $$
令 P 和 Q 为以下分布(每个可能的结果 $x$ 都在 $X =\{0,1,2\}$ 中):
$$ \begin{array}{|c|c|c|c|} \hline & 0 & 1 & 2 \\ \hline \text { 分布 } P(x) & 9 / 25 & 12 / 25 & 4 / 25 \\ \hline \text { 分布 } Q(x) & 1 / 3 & 1 / 3 & 1 / 3 \\ \hline \end{array} $$
xychart-beta
title "P"
x-axis [0,1,2]
y-axis 0.0 --> 0.5
bar [0.36,0.48,0.16]
xychart-beta
title "Q"
x-axis [0,1,2]
y-axis 0.0 --> 0.35
bar [0.33,0.33,0.33]
下图显示 P(蓝色)和 Q(绿色)重叠。
xychart-beta
title "Q"
x-axis [0,1,2]
y-axis 0.0 --> 0.5
bar [0.36,0.48,0.16]
bar [0.33,0.33,0.33]
我们来计算一下$KL(P\|Q)$。