本页目录
熵与信息度量
熵不是"混乱度"这种玄学,而是一个能数出来的比特数——把一件不确定的事问清楚,平均要问几个是非问题。自信息、熵、联合熵、条件熵、互信息是同一套语言的五个词,后面所有内容(压缩、信道、损失函数)都从这几个量长出来。
引子:猜数字要问几次
先玩个游戏,把直觉建起来,再谈定义。
对方心里想了一个 1 到 8 之间的整数。你只能问是非题,比如"是不是大于 4"。最少平均要问几次,才能保证猜中?
最优策略是每次都把剩下的可能对半砍。先问"是不是大于 4",不管答案是什么,候选都从 8 个变成 4 个;再砍成 2 个,再砍成 1 个。三刀下去,唯一答案就出来了。\log_2 8 = 3,正好三次。
这不是巧合。一个是非题的答案,恰好携带 1 bit 信息;而"平均最少要问几次",正是熵要精确回答的问题。
再改一下游戏。假设对方 80% 的概率会选 7(觉得这个数"有灵性")。这时候还老老实实对半砍就傻了——聪明的做法是第一问就直接问"是不是 7"。大多数情况一次命中,平均问题数远少于 3 次。
结论很朴素:分布越不均匀、越有结构,平均要问的问题就越少。整篇文章要做的,就是把这句直觉变成公式。信息量、熵、后面几章的压缩,追到底都是在回答同一个问题——平均要花几个 bit,才能把一件不确定的事问清楚。
自信息:一个事件有多"意外"
先看单个事件。自信息(self-information) 把猜数字的直觉推广到任意概率。事件 x 发生的概率是 p(x),它的自信息定义为:
I(x) = -\log_2 p(x)
单位是 bit。它衡量的就是"确认这件事发生,相当于问了几个是非题"。
回到游戏验证一下:8 个数均匀分布,每个数的概率是 1/8,自信息是 -\log_2(1/8) = 3\ \text{bit},和手动数出的三次提问严丝合缝。
几个例子帮你建立手感:
- 抛硬币出正面,p=0.5,自信息 -\log_2 0.5 = 1\ \text{bit}。
- 掷骰子出某个特定点数,p=1/6,自信息 -\log_2(1/6) \approx 2.58\ \text{bit}。
- "太阳明天升起"这种必然事件,p \approx 1,自信息 \approx 0\ \text{bit}。你早就知道了,它没带来任何信息,一个问题都不用问。
为什么非得用对数? 因为信息量应该"可加":两个独立事件同时发生,总信息量应该是各自之和。而独立事件的联合概率是相乘的,p(x)p(y)。对数正好把乘法翻译成加法:
-\log(p(x)p(y)) = -\log p(x) - \log p(y)
这个"可加性"不是审美偏好,而是整套熵体系的地基。
熵:自信息的期望
单个事件说清楚了,现在看整个随机变量。熵(entropy) H(X) 就是 X 所有取值的自信息的期望——也就是猜数字游戏里"平均要问几次"的精确公式:
H(X) = -\sum_x p(x) \log_2 p(x)
它同时还是另一件事的答案:用最优编码表示 X,平均需要多少比特。这两个意思为什么等价,由 源编码定理 保证。眼下只需记住:熵越大,不确定性越高,平均要问的问题(要花的 bit)就越多。
二元熵函数
最简单的情形是只有两个取值,概率分别为 p 和 1-p:
H(p) = -p\log_2 p - (1-p)\log_2(1-p)
这条曲线是理解熵最好的入口:
用猜数字的话来读这条曲线:p=0.5 时熵最大(1 bit)。最公平的硬币最难预测,不管怎么问,平均都得问满一次。往任一端偏,熵都往下掉;到 p=0 或 p=1,结果已经确定,熵为 0——一个问题都不用问。
熵的三条性质
这三条性质后面会反复用到,都能用猜数字的直觉验证:
- 非负性:H(X) \geq 0。因为 0 \leq p(x) \leq 1,每一项 -p\log p 都非负。等号只在 X 完全确定时成立(某个 p(x)=1)——确定的事没有不确定性可言。
- 上界与最大熵:H(X) \leq \log_2|X|,其中 |X| 是取值个数。等号当且仅当 X 均匀分布。所有取值等概率时不确定性最大,对应猜数字里"没有任何偏向可利用,只能老老实实对半砍"。这也解释了为什么均匀分布是"最无知"的先验:没有额外约束时,它是熵最大的那个分布(最大熵原理)。
- 链式法则:H(X,Y) = H(X) + H(Y \mid X)。这句话读作:同时问清 X 和 Y 的总不确定性,等于先问清 X,再加上"已知 X 之后 Y 还剩多少不确定性"。它是把复杂联合分布拆成条件项的核心工具,也正是 LLM 自回归分解的样子:H(\text{token 序列}) = \sum_i H(\text{token}_i \mid \text{前文})。每生成一个 token,都是在问"接下来这个位置还剩多少不确定性"。
直觉:结构如何压低熵
这里要澄清一个常见误解:熵度量的是分布的形状,不是取值的数量。
取值数量只决定"最多要问几次"(上界)。真正决定"平均实际要问几次"的,是分布的形状——它均不均匀?取值之间有没有依赖?三个例子把这个区别钉死:
- 公平硬币:2 个取值,均匀,H = 1 bit。达到上界,没有任何捷径可占。
- 公平骰子:6 个取值,均匀,H = \log_2 6 \approx 2.58 bit。
- 自然语言字符:26 个字母,若均匀应是 \log_2 26 \approx 4.7 bit/字符。但英文字母分布极不均(e 极高频,z 极低频),字母之间还有强依赖(q 后面几乎必是 u)。实测下来,逐字符熵只有约 1.0–1.3 bit,远低于 4.7。
最后这个例子值得多想一秒。按均匀假设猜一个随机英文字母,平均要问将近 5 次。但如果你先问"是不是元音""前一个字母是不是 q"这类高信息量的问题,大部分位置几乎不用猜就定了。这个"结构压低熵"的差额——4.7 和 1.2 之间的落差——正是压缩算法和语言模型赖以为生的东西。它们做的事,本质就是把这些冗余榨干。
| 量 | 定义 | 直觉 |
|---|---|---|
| H(X) | -\sum p\log p | X 自身的平均不确定性(平均要问几次) |
| H(X,Y) | -\sum p(x,y)\log p(x,y) | 同时问清 X 和 Y 要问几次 |
| H(Y \mid X) | -\sum p(x,y)\log p(y \mid x) | 已知 X 后,问清 Y 还要问几次 |
| I(X;Y) | H(Y)-H(Y \mid X) | 知道 X 让问清 Y 少问几次 |
联合熵、条件熵、互信息:两个变量之间
前面只谈了一个随机变量。有两个变量时,"平均要问几次"这套语言会自然长出一整个家族。三个成员,一个一个来:
- 联合熵(joint entropy) H(X,Y) = -\sum p(x,y)\log_2 p(x,y):同时问清 X 和 Y,平均要问几次。
- 条件熵(conditional entropy) H(Y \mid X) = -\sum p(x,y)\log_2 p(y \mid x):已经知道了 X,再问清 Y 平均还要问几次。两个极端很说明问题——若 Y 完全由 X 决定,H(Y \mid X)=0(一个问题都不用多问);若两者独立,H(Y \mid X)=H(Y)(知道 X 毫无帮助,一个问题都省不了)。
- 互信息(mutual information) I(X;Y) = H(X) - H(X \mid Y) = H(Y) - H(Y \mid X):知道一个变量,能让另一个变量少问几个问题。
互信息有几条漂亮的性质:它是对称的(I(X;Y)=I(Y;X)),非负的,并且 I(X;Y)=0 当且仅当 X 与 Y 独立。它还有一个等价写法——I(X;Y)=D_{KL}(p(x,y) \parallel p(x)p(y)),即真实联合分布与"假装两者独立"的分布之间的 KL 散度。换句话说,互信息衡量的正是"两个变量偏离独立有多远"。
维恩图:信息度量的集合关系
这四个量之间的关系,可以用两个重叠的圆精确刻画。这是信息论最经典的一张图:
所有恒等式都能从图上直接读出来。并集是 H(X,Y),左圆是 H(X),重叠部分是 I(X;Y),左边的月牙是 H(X \mid Y)。于是 H(X) = H(X \mid Y) + I(X;Y)、H(X,Y) = H(X) + H(Y \mid X) 这些式子一眼就能看明白。
一个提醒:这个类比只在两个变量时严格成立。三个变量以上,"交互信息"可能取负值,维恩图会失效。但两圆图对建立直觉已经足够了。
这套度量是后续所有内容的地基:压缩把码长逼近 H(X)(源编码),信道容量是 \max I(X;Y)(信道容量),而深度学习的损失函数是 交叉熵与 KL 散度 的直接应用。
参考
- 教材: "Elements of Information Theory" (Cover & Thomas — 信息论标准教材,第 2 章 Entropy, Relative Entropy, and Mutual Information)
- 论文: "A Mathematical Theory of Communication" (Shannon, 1948 — 熵与信息论的奠基之作,一切从这里开始)
- 教材: "Information Theory, Inference, and Learning Algorithms" (MacKay — 免费在线,第 2、4 章直觉极佳)
关键词: 自信息 self-information, 熵 entropy, 联合熵 joint entropy, 条件熵 conditional entropy, 互信息 mutual information, 链式法则 chain rule, 最大熵 maximum entropy, 二元熵函数 binary entropy, bit