在数理统计中,库尔巴克–莱布勒散度(也称为相对熵和 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)$。