Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.

Quick Start

Create a new post

1
$ hexo new "My New Post"

More info: Writing

Run server

1
$ hexo server

More info: Server

Generate static files

1
$ hexo generate

More info: Generating

Deploy to remote sites

1
$ hexo deploy

More info: Deployment

Entropy

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

信息

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

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

信息的作用

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

信息熵

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

$$
H = - \sum_{x \in X} p(x) \log p(x)
$$

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

条件熵

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

$$
H(X|Y) = - \sum_{x \in X, y \in Y} p(x, y) \log p(x | y)
$$

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

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

互信息

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

$$
I(X;Y) = \sum_{x \in X, y \in Y} p(x, y) \log \frac{P(x, y)}{P(x) \cdot P(y)}
$$

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

相对熵

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

$$
\text{KL}(f(x)||g(x)) = \sum_{x \in X} f(x) \cdot \log \frac{f(x)}{g(x)}
$$

有三条结论:

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

$$
\text{KL}(f(x)||g(x)) \neq \text{KL}(g(x)||f(x))
$$

由于 ${\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}}$ 散度的概念。

$$
\text{JS}(f(x)||g(x)) = \frac{1}{2}[\text{KL}(f(x)||g(x)) + \text{KL}(g(x)||f(x))]
$$

以编码角度的思考

熵可以看做,对 ${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. 知乎:如何通俗的解释交叉熵与相对熵?