文章目录
  1. 1. Entropy
    1. 1.1. 信息
    2. 1.2. 信息熵
    3. 1.3. 条件熵
    4. 1.4. 互信息
    5. 1.5. 相对熵
    6. 1.6. 以编码角度的思考
    7. 1.7. 参考

Entropy

熵是一种衡量系统不确定的指标,量化出了信息的作用。

信息

一条信息的信息量与其不确定性有着很直接的关系。如果要搞清楚一件非常不确定的事情,那么就需要大量的信息。相反已经对一件事情非常了解,则不再需要太多信息就可以搞清楚,那么这样老看,一条信息的信息量就等于不确定性的多少。

香农用 “比特”(Bit)来度量信息量,一个比特是一个二进制数,计算机中,一个字节就是 ${8}$ 个比特。

信息的作用

一个事物内部会存有随机性,也就是不确定性,而从外部消除这个不确定性唯一的办法就是引入信息。

信息熵

香农提出的信息熵的形式如下,对于随机变量 ${X}$,它的信息熵为:

变量的不确定性越大,熵也就越大。

条件熵

如果在 ${X}$ 信息熵之外,还知道一些关于 ${Y}$ 的信息,则条件熵表示为:

可以证明 ${H(X) \geq H(X|Y)}$,也就说明了,在知道 ${Y}$ 的情况之后,不确定性减少了。在统计语言模型中,二元模型的不确定性小于等于一元模型,进一步地可以证明:


${H(X|Y) \geq H(X|Y, Z)}$,则说明了三元模型应该比二元模型要好。取等号的情况表示引入的信息对要研究的事务毫无关系。

互信息

那么如何确定是否有关系呢?互信息(mutual information)提供一个量化的度量。

可以发现 ${I(X;Y) = H(X) - H(X|Y)}$,而 ${I(X;Y)}$ 是一个取值在 ${0}$ 到 ${\min (H(X), H(Y))}$ 之间的数字,如果 ${X}$ 和 ${Y}$ 完全相关,则取值为 ${1}$,如果而且完全不相关,则取值为 ${0}$。

相对熵

相对熵用于衡量两个取值为整数的函数的相似性。

有三条结论:

  1. 对于两个完全相同的函数,它们的相对熵等于零。
  2. 相对熵越大,则两个函数的差异越大;反之,相对熵越小,两个函数的差异越小。
  3. 对于概率分布或者概率密度函数,如果取值均大于零,相对熵可以度量两个随机分布的差异性。

由于 ${\text{KL}}$ 散度是不对称的。假设有一个分布 ${p(x)}$,并且希望用另一个分布 ${q(x)}$ 来近似它。可以选择最小化 ${D_{KL}(p||q)}$ 或最小化 ${D_{KL}(q||p)}$。为了说明每种选择的效果,令 ${p}$ 是两个高斯分布的混合,令 ${q}$ 为单个高斯分布。选择使用 ${\text{KL}}$ 散度的哪个方向是取决于问题的。一些应用需要这个近似分布 ${q}$ 在真实分布 ${p}$ 放置高概率的所有地方都放置高概率,而其他应用需要这个近似分布 ${q}$ 在真实分布 ${p}$ 放置低概率的所有地方都很少放置高概率。${KL}$ 散度方向的选择反映了对于每种应用,优先考虑哪一种选择。

  • (左)最小化 ${D_{KL}(p||q)}$ 的效果。在这种情况下,选择一个 ${q}$ 使得它在 ${p}$ 具有高概率的地方具有高概率。当 ${p}$ 具有多个峰时,${q}$ 选择将这些峰模糊到一起,以便将高概率质量放到所有峰上。优化方向等价于极大似然估计,较为激进。
  • (右)最小化 ${D_{KL}(q||p)}$ 的效果。在这种情况下,选择一个${q}$使得它在 ${p}$ 具有低概率的地方具有低概率。当 ${p}$ 具有多个峰并且这些峰间隔很宽时,最小化 ${\text{KL}}$ 散度会选择单个峰,以避免将概率质量放置在 ${p}$ 的多个峰之间的低概率区域中。说明当 ${q}$ 被选择成强调左边峰时的结果。也可以通过选择右边峰来得到 ${\text{KL}}$ 散度相同的值。如果这些峰没有被足够强的低概率区域分离,那么 ${\text{KL}}$ 散度的这个方向仍然可能选择模糊这些峰。较为保守,宁愿只拟合一侧,也不接近概率密度为 ${0}$ 的地方。

KL & Reverse KL

为了让 ${\text{KL}}$ 散度能够有对称的形式,提出了 ${\text{JS}}$ 散度的概念。

以编码角度的思考

熵可以看做,对 ${X}$ 中的样本进行编码所需要的编码长度的期望值。

现在有两个分布,真实数据分布 ${p}$ 和非真实分布 ${q}$,样本来自真实分布 ${p}$。

  • 按照真实分布 ${p}$ 来编码样本所需的编码长度的期望为 ${\sum_{i}p(i)*\log\frac{1}{p(i)}}$,即信息熵 ${H(p)}$。
  • 按照不真实分布 ${q}$ 来编码样本所需的编码长度的期望为 ${\sum_{i}p(i)*\log\frac{1}{q(i)}}$,即交叉熵 ${H(p, q)}$。
  • 这里引申出 ${KL}$ 散度 ${D(p||q) = H(p,q) - H(p) = \sum_{i}p(i)*\log\frac{p(i)}{q(i)}}$,也叫做相对熵,它表示两个分布的差异,差异越大,相对熵越大。

在离散型变量的情况下,${\text{KL}}$ 散度衡量的是,当使用一种被设计成能够使得概率分布 ${Q}$ 产生的消息的长度最小的编码,发送包含由概率分布 ${P}$ 产生的符号的消息时,所需要的额外信息量 (如果使用底数为 ${2}$ 的对数时,信息量用比特衡量,但在机器学习中,通常用奈特和自然对数。)

机器学习中,用非真实分布 ${q}$ 去预测真实分布 ${p}$,因为真实分布 ${p}$ 是固定的,${D(p||q) = H(p,q) - H(p)}$ 中 ${H(p)}$ 固定,也就是说交叉熵 ${H(p,q)}$ 越大,相对熵 ${D(p||q)}$ 越大,两个分布的差异越大。所以交叉熵用来做损失函数就是这个道理,它衡量了真实分布和预测分布的差异性。

而从编码的角度,可以这样简单总结,信息熵是最优编码(最短的平均码长),交叉熵是非最优编码(大于等于最短的平均码长),${KL}$ 散度是两者的差异(距离最优编码的差距)。

参考

  1. 《数学之美》吴军
  2. 花书《深度学习》
  3. 信息熵,交叉熵和相对熵
  4. 知乎:信息熵是什么?
  5. 知乎:如何通俗的解释交叉熵与相对熵?
文章目录
  1. 1. Entropy
    1. 1.1. 信息
    2. 1.2. 信息熵
    3. 1.3. 条件熵
    4. 1.4. 互信息
    5. 1.5. 相对熵
    6. 1.6. 以编码角度的思考
    7. 1.7. 参考