概念

相对熵又称KL散度,如果我们对于同一个随机变量 x 有两个单独的概率分布 P(x)P(x)Q(x)Q(x),我们可以使用 KL 散度(Kullback-Leibler (KL) divergence)来衡量这两个分布的差异。
在机器学习中,P往往用来表示样本的真实分布,Q用来表示模型所预测的分布,那么KL散度就可以计算两个分布的差异,也就是Loss损失值。

𝐷𝐾𝐿(𝑝𝑞)=𝑖=1𝑛𝑝(𝑥𝑖)𝑙𝑜𝑔(𝑝(𝑥𝑖)𝑞(𝑥𝑖))𝐷_{𝐾𝐿}(𝑝||𝑞)=\sum_{𝑖=1}^𝑛 𝑝(𝑥_𝑖)𝑙𝑜𝑔(\frac{𝑝(𝑥_𝑖)}{𝑞(𝑥_𝑖)})

从KL散度公式中可以看到Q的分布越接近P(Q分布越拟合P),那么散度值越小,即损失值越小。
因为对数函数是凸函数,所以KL散度的值为非负数。
有时会将KL散度称为KL距离,但它并不满足距离的性质:

  1. KL散度不是对称的;
  2. KL散度不满足三角不等式。

计算 KL 散度的示例

让我们通过一个具体的例子来计算 KL 散度。
假设 P 和 Q 是两个一维正态分布:

  • PN(μP,σP2)P \sim \mathcal{N}(\mu_P, \sigma_P^2)
  • QN(μQ,σQ2)Q \sim \mathcal{N}(\mu_Q, \sigma_Q^2)
    KL 散度的计算公式为:

DKL(PQ)=p(x)logp(x)q(x)dxD_{\text{KL}}(P \| Q) = \int_{-\infty}^{\infty} p(x) \log \frac{p(x)}{q(x)} \, dx

对于正态分布,这个积分有解析解:

DKL(PQ)=logσQσP+σP2+(μPμQ)22σQ212D_{\text{KL}}(P \| Q) = \log \frac{\sigma_Q}{\sigma_P} + \frac{\sigma_P^2 + (\mu_P - \mu_Q)^2}{2\sigma_Q^2} - \frac{1}{2}