信息熵 交叉熵 KL散度
作者:互联网
信息量
事件A发生的信息量:
\[I(A) = -\log_2(P(A)) \]这样定义有以下好处:
-
概率越小的事件发生,带来的信息量就越大。
-
相互独立的事件A,B同时发生,信息量为A、B单独发生时信息量的和:
信息熵
信息熵就是信息量的期望。
设离散型随机变量X,则X的信息熵为:
\[H(X) = -E_X[log_2 p_i] = - \sum_i p_i \log_2 p_i \]其中, \(p_i\) 是 \(X=x_i\)的概率。
可见,如果X的各种取值概率相近,则信息熵大,系统较为混乱。如果X基本只会取某一个值,则信息熵小,系统较为稳定。
交叉熵
假设有离散随机变量\(X \in \{x_1, x_2 ,\cdots, x_n\}\)。\(X\)满足分布\(p\)。
假设要对\(X\)的各种取值进行2进制编码。如可以这样编码:\(x_1 \rightarrow 0\), \(x_2 \rightarrow 10\), \(x_3 \rightarrow 11\) , 也可以这样编码 \(x_1 \rightarrow 11\), \(x_2 \rightarrow 00\), \(x_3 \rightarrow 01\) (但不允许编码重复或有歧义,例如,\(x_1 \rightarrow 0\), \(x_2 \rightarrow 1\), \(x_3 \rightarrow 01\) 是不允许的,因为不能区分 \(x_3\) 和 \(x_1 x_2\)),
交叉熵就是某一编码需要的平均比特数。
\[H(p, q) = \sum_i p_i l_i \]其中,\(l_i\)是取值\(x_i\)的编码长度(比特数)(例如,编码\(x_1 \rightarrow 0\), \(x_2 \rightarrow 10\), \(x_3 \rightarrow 11\) 对应 \(l_1 = 1, l_2 = 2, l_3 = 2\))。
其实,每个编码都对应一个最优分布\(q\),分布\(q\)使用该编码是最省比特的。可以证明,这个分布是:
\[q(x_i) = (1/2)^{l_i} \]例如,编码\(x_1 \rightarrow 0\), \(x_2 \rightarrow 10\), \(x_3 \rightarrow 11\)对应的最优分布是:
\[p_1=1/2 \\ p_2=1/4 \\ p_3=1/4 \]这样算出来的交叉熵:
\[H_1 = 1/2 + 1/4 * 2 + 1/4 * 2 = 1.5 \]和信息熵:
\[H_2 = - \frac{1}{2} \log_2 \frac{1}{2} - \frac{1}{4} \log_2 \frac{1}{4} - \frac{1}{4} \log_2 \frac{1}{4} = 1.5 \]恰好相等。事实上,信息熵是交叉熵的下界。不论用什么编码方法(作弊除外),永远无法将平均编码长度降低到信息熵以下,最优情况就是相等。而交叉熵超过信息熵的部分,称为KL散度。
由于每个编码都对应一个分布q,我们也可以将交叉熵定义为真实分布\(p\)和编码分布\(q\)之间的关系:
\[\begin{align} H(p, q) =&& \sum_i p_i l_i \\ =&& \sum_i p_i \log_{\frac{1}{2}} q_i \\ =&& - \sum_i p_i \log_{2} q_i \end{align} \]表示用q分布对应的编码编码p分布时所需的平均比特数。
KL散度
如前所述,KL散度等于交叉熵减信息熵:
\[\begin{align} D_{KL} (p || q) =&& - \sum_i p_i \log_{2} q_i -(- \sum_i p_i \log_2 p_i) \\ =&& \sum_i p_i \log_{2} \frac{p_i} {q_i} \end{align} \]也就是实际编码相对于理论最优编码多用的比特数。也可以用来衡量p分布和q分布的相似程度。注意KL散度是不满足交换律的。
标签:编码,log,sum,散度,KL,信息熵,&&,rightarrow 来源: https://www.cnblogs.com/BinarySong/p/15894805.html