信息的度量:从“信息熵”到“交叉熵”

创建时间:2026-07-20 更新时间:2026-07-20 阅读次数:1007 次

一场关于不确定性与认知偏差的数学之旅

一、天气预报与“信息量”

假设你生活在一个干旱的沙漠城市,天气预报只有两种可能:晴天和雨天。 - 如果天气预报说“明天是晴天”,你大概不会感到意外,因为这几乎是板上钉钉的事。 - 但如果天气预报说“明天有特大暴雨”,你一定会瞪大眼睛,因为你意识到这将是几十年一遇的奇观。

这引出了一个直觉:一件事发生的概率越小,它一旦发生,带给我们的“信息量”就越大。

如果雨天的概率是 $P(\text{雨天}) = 0.01$,晴天是 $P(\text{晴天}) = 0.99$。为了用数学公式描述这种反比关系,我们将一个事件 $x$ 的信息量 $h(x)$ 定义为概率的负对数:

$$h(x) = -\log P(x)$$

这个公式完美契合了直觉: - $P(x)$ 越小,$-\log P(x)$ 就越大,代表惊异程度越高。 - 如果 $P(x) = 1$(必然事件),$-\log 1 = 0$,毫无惊异,信息量为零。

这里对数的底数决定了单位:底数为 2 时,单位是我们熟知的比特

二、熵:衡量“平均不确定度”的标尺

知道了单个事件的信息量,下一个问题就是:在一条消息到来之前,我们整体的“平均不确定度”有多大?

这就是信息熵的概念,由信息论之父克劳德·香农提出。它是对一个系统中所有可能事件信息量的加权平均,用 $H$ 表示:

$$H(P) = -\sum_{i} P(x_i) \log P(x_i)$$

这里的 $P$ 代表真实概率分布。

回到沙漠城市的例子: $$H(\text{天气}) = -[0.99 \cdot \log_2(0.99) + 0.01 \cdot \log_2(0.01)] \approx 0.08 \text{ 比特}$$ 这个数值很小,说明不确定性很低——因为绝大多数时候都是晴天,很容易猜中。

想象另一个气候多变的城市,晴雨概率各一半,那么它的熵就是: $$H = -[0.5 \cdot \log_2(0.5) + 0.5 \cdot \log_2(0.5)] = 1 \text{ 比特}$$ 这个值达到了最大。信息熵越高,系统越混乱,意味着下一秒会发生什么,我们最没把握。

三、当猜测与现实不符:引入交叉熵

信息熵为我们描绘了世界本来的不确定性。但在现实中,我们往往并不知道真实的概率分布 $P$,只能通过学习和猜测,得到一个近似分布 $Q$。

比如,你第一次来沙漠城市,根据其他地区的经验,你错误地估计了这里的天气:你觉得雨天的概率很高,即 $Q(\text{雨天}) = 0.5$,$Q(\text{晴天}) = 0.5$。

你拿着这套错误的认知($Q$)去编码和预测真实的天气($P$)。那么,在真实世界里,传输一个天气状况所需要的平均“成本”就不再是熵 $H(P)$ 了。这个成本,就是交叉熵,记作 $H(P, Q)$:

$$H(P, Q) = -\sum_{i} P(x_i) \log Q(x_i)$$

注意公式的结构:权重用的是真实概率 $P$,而对数里用的是我们猜测的概率 $Q$。

代入数据,看看你用错误认知去理解沙漠天气的代价: $$H(P, Q) = -[0.99 \cdot \log_2(0.5) + 0.01 \cdot \log_2(0.5)] = 1 \text{ 比特}$$ 你发现了吗?用完全错误的 5-5 开观念去描述一个几乎永远是晴天的城市,平均成本从本来只需要 $0.08$ 比特,飙升到了 $1$ 比特。

四、从“交叉”到“偏移”:两者间的深层关系

我们已经能看出一些门道了: - 信息熵 $H(P)$:用真实分布 $P$ 编码,所需的最短平均编码长度。 - 交叉熵 $H(P, Q)$:用错误分布 $Q$ 编码,所需的平均编码长度。

由于用了错误的分布,一定会造成额外的浪费。这部分多余的、额外的开销,正是二者之间的桥梁。我们将它定义为KL散度,也叫相对熵,记为 $D_{KL}(P \parallel Q)$:

$$D_{KL}(P \parallel Q) = H(P, Q) - H(P)$$

把它展开,就是著名的 KL 散度公式: $$D_{KL}(P \parallel Q) = \sum_{i} P(x_i) \log \frac{P(x_i)}{Q(x_i)}$$

这个公式揭示了信息熵和交叉熵最本质的关系:

$$交叉熵 = 信息熵 + KL散度$$

这里隐含了一个关键的性质,叫作吉布斯不等式:$D_{KL}(P \parallel Q) \ge 0$。这意味着 交叉熵永远大于等于信息熵。只有当我们的猜测完美匹配现实,即 $Q = P$ 时,KL 散度才为零,此时交叉熵达到最小值,正好等于信息熵。

五、以机器学习视角收尾

你可能在机器学习的损失函数中频繁见到交叉熵。为什么不直接用信息熵,也不直接用 KL 散度呢?原因很巧妙:

在分类任务中,对于一个“猫”的图片,其真实分布 $P$ 是确定的:$P(\text{猫}) = 1$,$P(\text{非猫}) = 0$。此时,信息熵 $H(P) = -1 \cdot \log 1 - 0 \cdot \log 0 = 0$。

由于信息熵 $H(P)$ 是一个常数(0),在最小化过程中可以忽略。根据关系式: $$H(P, Q) = D_{KL}(P \parallel Q) + 0$$

此时,最小化交叉熵 $H(P, Q)$ 就完全等价于最小化 KL 散度 $D_{KL}(P \parallel Q)$。本质是在用梯度下降,不断拉近你的猜测分布 $Q$ 和真实分布 $P$ 之间的距离,直到你的模型对世界的认知与真实世界完全吻合。

总结一下:

信息熵衡量了世界本源的混沌程度; 交叉熵衡量了你对这个混沌世界的理解成本; 而它们的差值,就是你头脑中模型与真实规律的偏差。 学习的过程,就是不断缩小这个偏差,让交叉熵降至信息熵底线的过程。

本教程共19节,当前为第15节!
本教程最新修订时间为:2026-07-22 00:39:56