1 背景概述

在机器学习中,经常使用到交叉熵、KL散度,那么它们是如何由来、为何奏效?

在有监督学习中,通常有一个当前模型的概率分布以及目标概率分布,我们希望达到的效果是让当前的概率分布尽可能的去拟合目标概率分布,那么这个时候需要一个函数,它需要具备描述两个概率分布的差异的能力。

现在我们假设目标分布为p,当前模型分布为q,为了简单起见,假设为二分类问题,只有A、B两种情况(事件)。

2 信息量

我们已知p事件的概率分布P(A)以及P(B),信息量的定义为负的P的对数。

即:I(A) = \log(\frac{1}{P(A)}) = - \log(P(A))

同理:I(B) = \log(\frac{1}{P(B)}) = - \log(P(B))

可以发现,它表达的含义是:如果事件的发生概率越大,那么它发生的信息量就越小,反之越大。

3 熵

我们通常将熵理解为:如果越“活跃”越“混沌”,那么熵越大。

在这里,熵即为信息量的期望。

即:H(P) = \sum P_i \cdot I^p_i = P(A) \cdot I^p(A) + P(B) \cdot I^p(B)

同理:H(Q) = \sum Q_i \cdot I^q_i = Q(A) \cdot I^q(A) + Q(B) \cdot I^q(B)

可以发现,熵就是“自己的概率”乘上“自己的信息量”之和。

4 交叉熵

想必知道了熵的计算,交叉熵也就好理解了,这也正式将当前概率分布于目标概率分布放在了一块:

H(p,q) = \sum P_i \cdot I^q_i = P(A) \cdot I^q(A) + P(B) \cdot I^q(B)

KL散度(相对熵)

顾名思义,交叉熵使用了p的概率、q的信息量,而相对熵的相对就在于,信息量部分换成了q的信息量减去p的信息量。

\begin{aligned} D_ {KL}(p||q) &= \sum P_i \cdot [I^q_i-I^p_i] \\ &= P(A) \cdot [I^q(A)-I^p(A)] + P(B) \cdot [I^q(B)-I^p(B)]\\ &=H(p,q) - H(p) \end{aligned}

其中D_ {KL}(p||q)表示以p为基准,q与p的差异,可以发现KL散度其实就是交叉熵减去熵。