信息熵是怎么来的?——从“问问题”到香农公式的直觉推导
为什么需要一把“信息尺子”¶
我们每天都说“这条消息信息量很大”“那句话啥也没说”,但“信息”到底有多少?能不能像称体重、量身高那样,给信息一个确切的数字?
1948年,克劳德·香农给出了答案——信息熵。但这不是拍脑袋想出来的公式,而是从几个几乎“废话”般的直觉出发,一步步推导出来的。这篇文章就带你走一遍这条推导之路,让你不仅知道公式长什么样,更知道它为什么长这样。
第1步:从“猜卡片”获得原始直觉¶
想象你有一堆编号卡片(1~8),要找出某一张,每次只能问“是/否”问题。怎样问最快?
答案很朴素:每次把剩余可能性对半分。8张卡,问3次;16张卡,问4次。每问一次,不确定性减半,你就获得了1个单位的“信息”。
这个例子告诉我们:
信息的价值 = 它消除了多少不确定性。
但“不确定性”怎么量化?总不能说“这条消息有5斤信息”吧。我们需要一个数学公式。
第2步:给“信息量”立规矩(三条公理)¶
设事件 \(x\) 发生的概率为 \(P(x)\),它携带的信息量记为 \(H(x)\)。我们先不管具体形式,只要求它满足三个合情合理的规则。
公理一:信息量只取决于概率¶
一个事件的信息量应该只由它发生的概率决定:
事情发生的概率越大,产生的信息量越小;事情发生的概率越小,产生的信息量越大。
公理二:独立事件的信息量可相加¶
如果 \(x\) 和 \(y\) 是两个独立事件,那么同时知道它们的信息量,等于分别知道它们的信息量之和:
公理三:独立事件的概率相乘¶
这是我们学过的概率论基本事实:
第3步:乘法变加法 → 对数自然现身¶
对两个独立事件 \(x\) 和 \(y\):
由公理一和公理三:
由公理二:
两式结合,得到:
令\(a = P(x), b = P(y)\),得到函数方程:
这个方程要求一个能把乘法映射为加法的连续函数。谁有这样的性质?对数。
数学上可以证明(通过柯西函数方程证明),在连续条件下,这个方程的唯一解就是对数函数(允许乘以一个常数系数):
于是单事件的信息量可写作:
第4步:负号:保证信息量非负¶
现在有一个问题: \(\log(P(x))\) 是增函数,也就是说 \(P(x)\) 越大, \(\log(P(x))\)越大。但我们希望:概率越小的事件,信息量越大。
例如:
- "太阳从东边升起"概率接近 1,信息量接近 0;
- "今天中彩票头奖"概率极小,信息量很大。
所以需要加一个负号,把方向反过来:
取 \(C = 1\),并选择以 2 为底的对数,得到:
这里的底数取 2 是约定俗成,此时信息量的单位是 bit(比特)。
第5步:验证几个例子¶
| 事件 | 概率 \(P(x)\) | 信息量 \(H(x)\) |
|---|---|---|
| 必然事件 | 1 | \(-\log_2(1) = 0\) bit |
| 掷硬币正面 | 0.5 | \(-\log_2(0.5) = 1\) bit |
| 掷骰子得 6 点 | ⅙ | \(-\log_2(1/6) \approx 2.58\) bit |
| 抛硬币连续 3 次正面 | ⅛ | \(-\log_2(1/8) = 3\) bit |
结果完全符合预期::概率每减半一次,信息量就增加 1 bit。概率事件带来大量信息,必然事件零信息。
第6步:从“单个结果”到“整个系统”——熵的定义¶
上面定义的 \(H(x)\) 是某个具体取值的信息量。但一个随机变量有很多可能的取值,我们想知道它"平均能带来多少信息量"。
这就是熵的定义:信息量的期望。
设随机变量 \(X\) 有 \(n\) 个可能取值 \(x_1, x_2, ..., x_n\),对应的概率是 \(P(x_1), P(x_2), ..., P(x_n)\),则熵为:
整理一下,得到信息熵的经典公式:
第7步:熵到底在说什么?看两个极端¶
- 当分布越均匀,熵越大,不确定性越高。
- 当分布越偏斜,熵越小,不确定性越低。
例如:
- 二分类问题中,\(P = [0.5, 0.5]\) 时熵最大,为 1 bit。
- \(P = [0.9, 0.1]\) 时熵约为 0.47 bit,明显更小。
回到猜卡片的例子:为什么“对半分”的问题最高效?因为它让答案的分布最均匀,每次提问获得的平均信息量最大,不确定性下降最快。熵正是这个“平均信息量”的度量。
总结:一条公式,三条公理,五个步骤¶
信息熵不是天降神谕,而是从三条直觉公理出发:
- 信息量只取决于概率;
- 独立事件的信息量相加;
- 独立事件的概率相乘。
联立得对数;加负号调方向;再求期望得熵。最终公式:
这就是香农信息熵。它不仅是信息论的基石,也是机器学习、通信、统计物理等众多领域的核心工具。下次你再说“信息量很大”时,心里就有了一把精确的尺子。