熵-相对熵-交叉熵

熵/信息熵

熵是不确定性的一种度量。信息论中,熵代表着根据信息的概率分布对信息编码所需要的最短平均编码长度。表达式为:

H(P)=i=1nP(xi)log2P(xi)H(P)=-\sum_{i=1}^{n}P(x_i)\log_2{P(x_i)}

注意上式中的负号,以及对数函数的底数在这里是不重要的,一般可以看作 2 ,或者是 ee

下面具体解释为什么**“熵代表着根据信息的概率分布对信息编码所需要的最短平均编码长度”**。

首先 P(xi)P(x_i) 是 信息 xix_i 的出现概率,显然我们要让平均编码长度最短,那么就应该让出现概率越高的信息具有越短的比特长度,即处于哈夫曼树的越顶部的位置。根据这一点,刚好可以用 log21P(xi)\log_2 \frac{1}{P(x_i)} 来表示信息 xix_i 的比特长度,比如 P(xi)=12P(x_i)=\frac{1}{2} ,那么计算得到比特长度为1,对应的就是哈夫曼树的第一个分叉/比特,要不是 0 ,要不是 1 。注意这里的 log21P(xi)=log2P(xi)\log_2 \frac{1}{P(x_i)}=-\log_2 P(x_i)

因此,整个信息的概率分布所对应的最短平均编码长度期望值就是所有概率乘以对应的编码长度。

相对熵/K-L 散度

K-L 散度也叫相对熵,是一种量化真实分布和近似分布之间差异的方式。假设 PP 为真实分布,QQ 为近似分布,则K-L散度为:

DKL(PQ)=E[logP(xi)logQ(xi)]=i=1nP(xi)(logP(xi)logQ(xi))=i=1nP(xi)(logP(xi)Q(xi))=i=1nP(xi)logP(xi)i=1nP(xi)logQ(xi)=H(P)+(i=1nP(xi)logQ(xi))\begin{aligned} D_{KL}(P||Q)&=E[\log P(x_i)-\log Q(x_i)] \\ &=\sum_{i=1}^nP(x_i)(\log P(x_i)-\log Q(x_i)) \\ &=\sum_{i=1}^nP(x_i)(\log \frac{P(x_i)}{Q(x_i)}) \\ &=\sum_{i=1}^nP(x_i)\log P(x_i)-\sum_{i=1}^nP(x_i)\log Q(x_i) \\ &=-H(P)+(-\sum_{i=1}^nP(x_i)\log Q(x_i)) \end{aligned}

K-L 散度是不对称的。

交叉熵

对于公式(6),前一部分是熵的相反数,后一部分恰好就是交叉熵的定义,即交叉熵就等于熵加上相对熵。

H(P,Q)=i=1nP(xi)logQ(xi)H(P,Q)=-\sum_{i=1}^nP(x_i)\log Q(x_i)

所以可以这么理解:

  • 信息熵,指编码方案完美时,对应的最短平均编码长度。
  • 交叉熵,指编码方案不一定完美时 ( 由于对概率分布的估计不一定正确 ) 的平均编码长度。
  • 相对熵,指编码方案不一定完美时,平均编码长度相对于最短平均编码长度的增加值。