仓库源文站点原文


title: "Side Note: Information Entropy, Cross-Entropy and KL Divergence" categories: Mathematics updated: comments: true

mathjax: true

我们考虑一个事件 $A$, 它发生的概率是 $p$. 假设我们观测到事件 $A$ 发生, 我们希望定义一个信息量 $I(p)$ 来衡量 "$A$ 发生了" 这件事给了我们多少信息.

  1. $I(p)$ 是关于 $p$ 的递减函数. 如果事件发生概率高, 而且它发生了, 我们得到的信息应该比较少, 因为我们认为它确实容易发生, 这不稀奇.
  2. 考虑另一个独立的事件 $B$, 它发生的概率是 $q$, 则 $I(pq) = I(p) + I(q)$. 也就是说我们希望独立事件同时发生时提供的信息量应该是他们分别提供的信息量之和.
<!-- more -->

$$ (I\circ\exp)(\log p + \log q) = (I\circ\exp)(\log p) + (I\circ\exp)(\log q), $$

Cauchy's functional equation, 根据 $I\circ\exp$ 单调, 可知

$$ I(p) = (I\circ\exp)(\log p) = c\log p, $$

其中 $c$ 是一个常数, 由单调递减可知 $c<0$, 不妨取 $c=-1$. 而且我们也可以看出

  1. $I(p)\ge 0$. 信息量是非负的.
  2. $I(1) = 0$. 一件总是会发生的事情不提供任何信息量.

考虑一个离散分布, 互斥事件 $A_i$ 发生的概率为 $p_i$, 假设观测 $N$ 次, $A_i$ 恰好发生了 $n_i = N p_i$ 次, 则我们得到的总的信息量为

$$ \sum_i n_i I(p_i) = -\sum_i Np_i\log p_i. $$

我们用平均信息量来衡量每次观测到事件发生得到的信息量, 即 信息熵)

$$ -\sum_i p_i\log p_i. $$

更一般地, 若 $X$ 有密度函数 $p$, 则它的熵定义为

$$ H(p) = \mathbb E_p(I(X)) = \mathbb E_p(-\log p(X)). $$

关于最大熵分布可以参见 这个回答.

若有另一个密度函数 $q$, 我们可以定义 交叉熵

$$ H(p, q) = -\mathbb E_p \log q, $$

一个 informal 但是简单直观的解释可以参见 这个回答.

以及 KL 散度

$$ \operatorname{KL}(p\Vert q) = H(p, q) - H(p) \ge 0, $$

其中不等号是由 Jensen 不等式.