信息熵、交叉熵、KL散度公式的简单理解

整理:我不爱机器学习

1 信息量

信息量是对信息的度量,就跟时间的度量是秒一样,考虑一个离散的随机变量 x 的时候,当观察到的这个变量的一个具体值的时候,我们接收到了多少信息呢?

例如听到太阳从东方升起,这样信息对于我们来说价值不大,因为这是一个必然事件,所以这个信息传递给我们的信息量为 0。得到大厂 offer 通知书,如果在之前没有任何征兆时,这个信息量对于我们来说就很大。

例如投硬币的游戏有两种可能,分别是正面和反面朝上,可以用 H 表示正面朝上,用字母 T 表示反面朝上。我们通过传递 H 或者 T 信息给其他人告诉不在场的人关于游戏结果,当然也可以用 0 表示反面朝上,而 1 表示正面朝上来传递这个信息。

大家都了解过计算机,就是 1 个单位比特来表示 2 种可能,那么也就是我们用 1 个比特单位就可以描述投掷硬币游戏的结果传递给其他人。信息帮助我们消除了 2 种情况中出现哪一个面的不确定性。

下面来玩一个游戏,在两个人之间设立一个屏障,这个屏障只能传递 0 或者 1 电信号。有两个人分别位于屏障两端,暂且叫他们 A 和 B,A 从 A,B,C,D 字母中,随机取出一个字母,然后通过 0 和 1 组合方式将其抽取字母 A 信息通过屏障告诉 B,需要 2 个bit 可以将信息传递给 例如 00 表示 A 01 表示 B 10 表示 C 11 表示 D。也就是需要两个 bit 的信息。

log ⁡ 2 2 = 1 log ⁡ 2 4 = 4 log ⁡ 2 8 = 3 \begin{aligned} \log_2 2 = 1 \\ \log_2 4 = 4 \\ \log_2 8 = 3 \end{aligned} log22=1log24=4log28=3

上面事件中所有等概率事件的数量取以 2 为底的对数,刚好是传递这个事件结果所需要的信号数量

一个系统等可能事件越多,需要描述事件的比特位就越大。这里假设的等概率事件恰恰都可以用几个 2 连乘所表示。那么对于随机事件结果是 10 种可能的概率事件,又应该如何表示其信息量?

可以 4 bit 信息来表示 10 种可能,不过这里浪费了 6 种,当然可以用 l o g ⁡ 2 10 ≈ 3.33 log⁡_2^{10}≈3.33 log2103.33 个 bit 来传递信息。通过上面例子我们可以出信息量公式。

信息量刻画一个事实,就是一个系统中等可能的事件越多,那么传输其中一个事件的信息量就越大。等可能事件越多也就意味着哪个事件发生不确定性越大。

h ( x ) = log ⁡ M S = k B ln ⁡ Ω \begin{aligned} h(x) &=\log M \\ S &= k_B\ln \Omega \end{aligned} h(x)S=logM=kBlnΩ

这里 Ω 系统微观状态的数量对应系统等概率事件的数量,那么可以把这种度量不确定性的信息量称之为信息量

不过到现在为止我们研究系统是等可能事件组成的,可以看成理想系统,在实际中大多数情况下,系统都是由不同概率的事件所组成的。

实际上我们可以把一个概率事件转为在等概率事件系统中发生某一个事件的概率。也就是总能把一个概率事件转换为 N 个等概率事件,例如从 N 个球中摸出某一个球的概率。例如中彩票的概率为 2kw 分之一,也就是从 2kw 中个球摸中奖球的概率,所以可以 1 除以概率值 p 就可能反推得到等可能概率数量。根据上式可以得到信息量的概率表达式:

h ( x ) = log ⁡ 1 / ( 1 / M ) = − log ⁡ 1 / M = − log ⁡ 2 p ( x ) \begin{aligned} h(x) &=\log 1/(1/M) \\ &=-\log 1/M \\ &=-\log_2 p(x) \end{aligned} h(x)=log1/(1/M)=log1/M=log2p(x)

即对于某一事件,其发生的概率越小,那么其信息量越大;发生的概率越大,那么其信息量越小(最小不小于0)。上式中的 p ( x ) p(x) p(x) 可以理解为随机事件 x x x 的概率。

从这里可以发现一个事实:如果某一事件的概率为100%,那么其信息量为0,即已经确定的信息没有传递的价值

2 信息熵

还是投掷硬币为例假设现在投掷硬币正面朝上概率为 p 反面朝上概率为 q,将这两概率事件转换为等概率系统,分别转化为 1/p1/q 数量的等概率系统,这样就可以轻松计算出这 2 等概率系统信息量如下:

− log ⁡ 2 p , − log ⁡ 2 q -\log_2 p, -\log_2 q log2p,log2q

然后用 2 个等概率系统分别乘以其出现概率表求和就是当前系统信息量的期望,也就是信息熵的公式。

H ( X ) = − ∑ j = 1 n p ( x 1 ) log ⁡ p ( x i ) H(X)=-\sum_{j=1}^np(x_1)\log p(x_i) H(X)=j=1np(x1)logp(xi)

信息量度量的是一个具体事件发生了所带来的信息,而则是在结果出来之前对可能产生的信息量的期望,考虑该随机变量的所有可能取值,即所有可能发生事件所带来的信息量的期望。说白了,信息熵就是信息量的数学期望。

信息熵意义

就像光速作为物理世界速度的极限,信息熵指出了通讯的极限。或者所数据压缩效率的极限。一切试图突破这个极限的行为都是无用功。对于存在多种可能信息,就可以通过编码方式来对数据进行压缩从而进行传输和存储。

3 交叉熵

信息论中,基于相同事件测度的两个概率分布p和q的交叉熵(英语:Cross entropy)是指,当基于一个“非自然”(相对于“真实”分布p而言)的概率分布q进行编码时,在事件集合中唯一标识一个事件所需要的平均比特数(bit)

给定两个概率分布pqp相对于q的交叉熵定义为:

H ( p , q ) = E p [ − log ⁡ q ] = H ( p ) + D K L ( p ∣ ∣ q ) H(p,q)=E_p[-\log q]=H(p)+D_{KL}(p||q) H(p,q)=Ep[logq]=H(p)+DKL(p∣∣q)

其中, H ( p ) H(p) H(p) p p p 的熵, D K L ( p ∣ ∣ q ) D_{KL}(p||q) DKL(p∣∣q)是从 p p p q q q 的KL散度(也被称为 p p p 相对于 q q q 的相对熵)。

对于离散分布 p p p q q q,这意味着:

H ( p , q ) = − ∑ x p ( x ) log ⁡ q ( x ) H(p,q)=-\sum_x p(x) \log q(x) H(p,q)=xp(x)logq(x)

对于连续分布也是类似的。我们假设 p p p q q q 在测度 r r r 上是绝对连续的(通常 r r r 是Lebesgue measure on a Borel σ-algebra)。设 P P P Q Q Q 分别为 p p p q q q 在测度 r上概率密度函数。则:

− ∫ X P ( x ) log ⁡ Q ( x ) d r ( x ) = E p [ − log ⁡ Q ] -\int_X P(x)\log Q(x)dr(x)=E_p[-\log Q] XP(x)logQ(x)dr(x)=Ep[logQ]

在大多数情况下,要在不知道分布p的情况下计算其交叉熵。例如在语言模型中, 基于训练集T创建了一个语言模型,而在测试集合上通过其交叉熵来评估该模型的准确率。p是语料中词汇的真实分布,而q是获得的语言模型预测的词汇分布。由于真实分布是未知的,我们不能直接计算交叉熵。在这种情况下,可以通过下式来估计交叉熵:

H ( T , q ) = − ∑ i = 1 N 1 N log ⁡ 2 q ( x i ) H(T,q)=-\sum_{i=1}^N \frac{1}{N} \log_2 q(x_i) H(T,q)=i=1NN1log2q(xi)

N是测试集大小,q(x)是在训练集上估计的事件x发生的概率。假设训练集是**p(x)**的真实采样,则此方法获得的是真实交叉熵的蒙特卡洛估计。

4 KL散度公式

KL散度的概念来源于概率论和信息论中。KL散度又被称为:相对熵、互熵、鉴别信息、Kullback熵、Kullback-Leible散度(即KL散度的简写)。在机器学习、深度学习领域中,KL散度被广泛运用于变分自编码器中(Variational AutoEncoder,简称VAE)、EM算法、GAN网络中。

KL散度的定义是建立在熵(Entropy)的基础上的。此处以离散随机变量为例,先给出熵的定义,再给定KL散度定义。

若一个离散随机变量X的可能取值为 X = { x 1 , x 2 , ⋯ , x n } X=\{x_1,x_2,⋯,x_n\} X={ x1,x2,,xn},而对应的概率为 p i = p ( X = x i ) p_i=p(X=x_i) pi=p(X=xi),则随机变量 X 的熵定义为:

H ( X ) = − ∑ i = 1 n p ( x i ) log ⁡ p ( x i ) H(X)=−\sum_{i=1}^n p(x_i)\log p(x_i) H(X)=i=1np(xi)logp(xi)

注意:规定当 p ( x i ) = 0 p(x_i)=0 p(xi)=0 时, p ( x i ) log ⁡ p ( x i ) = 0 p(x_i) \log p(x_i)=0 p(xi)logp(xi)=0

若有两个随机变量P、Q,且其概率分布分别为p(x)q(x),则p相对q的相对熵为:

D K L ( p ∣ ∣ q ) = ∑ i = 1 n p ( x ) log ⁡ p ( x ) q ( x ) DKL(p||q)=\sum_{i=1}^n p(x)\log\frac{p(x)}{q(x)} DKL(p∣∣q)=i=1np(x)logq(x)p(x)

之所以称之为相对熵,是因为其可以通过两随机变量的交叉熵(Cross-Entropy)以及信息熵推导得到。

针对上述离散变量的概率分布**p(x)、q(x)**而言,其交叉熵定义为:

H ( p , q ) = ∑ x p ( x ) log ⁡ 1 q ( x ) − s u m x p ( x ) log ⁡ q ( x ) \begin{aligned} H(p,q)&=\sum_x p(x) \log \frac{1}{q(x)} \\ &-sum_x p(x) \log q(x) \end{aligned} H(p,q)=xp(x)logq(x)1sumxp(x)logq(x)

在信息论中,交叉熵可认为是对预测分布q(x)用真实分布p(x)来进行编码时所需要的信息量大小

因此,KL散度或相对熵可通过下式得出:

D K L ( p ∥ q ) = H ( p , q ) − H ( p ) = − ∑ x p ( x ) log ⁡ q ( x ) − ∑ x − p ( x ) log ⁡ p ( x ) = − ∑ x p ( x ) ( log ⁡ q ( x ) − log ⁡ p ( x ) ) = − ∑ x p ( x ) log ⁡ q ( x ) p ( x ) \begin{aligned} D_{K L}(p \| q) & =H(p, q)-H(p) \\ & =-\sum_{x} p(x) \log q(x)-\sum_{x}-p(x) \log p(x) \\ & =-\sum_{x} p(x)(\log q(x)-\log p(x)) \\ & =-\sum_{x} p(x) \log \frac{q(x)}{p(x)} \end{aligned} DKL(pq)=H(p,q)H(p)=xp(x)logq(x)xp(x)logp(x)=xp(x)(logq(x)logp(x))=xp(x)logp(x)q(x)

从不同角度解读KL散度

  • 统计学意义上的KL散度:在统计学意义上来说,KL散度可以用来衡量两个分布之间的差异程度。若两者差异越小,KL散度越小,反之亦反。当两分布一致时,其KL散度为0。正是因为其可以衡量两个分布之间的差异,所以在VAEEMGAN中均有使用到KL散度。
  • 信息论角度的KL散度:KL散度在信息论中的专业术语为相对熵。其可理解为编码系统对信息进行编码时所需要的平均附加信息量。其中信息量的单位随着计算公式中log运算的底数而变化。

log底数为2:单位为比特(bit)
log底数为e:单位为奈特(nat)

参考:
https://blog.csdn.net/qq_40714949/article/details/120503277
https://juejin.cn/post/7024393012650180644
http://www.ttshitu.com/news/53cb16eba9a046f58c57b2a3b06763ad.html
https://www.wikiwand.com/zh-hans/%E4%BA%A4%E5%8F%89%E7%86%B5
https://hsinjhao.github.io/2019/05/22/KL-DivergenceIntroduction/

猜你喜欢

转载自blog.csdn.net/mengjizhiyou/article/details/130611947