信息论(一):从概率开始压缩消息
假设一个随机事件,比如说 X,可以取几个可能的值:X ∈ {x₁, x₂, …, xₙ},每个值都有一个概率 P(xᵢ)。
然后香农问道:当我们得知 X = xᵢ 时,我们能获得多少信息?他将其定义为:
I(xᵢ) = -log₂ P(xᵢ)
为什么是负对数?因为,发生概率越低(P 值越小),意外性越大,信息量也越大。发生概率越高(P 值越大),意外性越小。例如:如果某事发生的概率为 50%,则 I = 1 比特。如果某事发生的概率为千分之一,则 I ≈ 9.97 比特,意外性会更加强烈。
平均意外性——熵。现在,想象一下你不知道接下来会发生什么,也许是一条消息,也许是播放列表中的下一首歌。你能接受多大的平均意外性?这被称为熵,记为 H(X):
H(X) = -\sum_i P(x_i) \log_2 P(x_i)
它是预期信息,是不确定性的体现。一个完全可预测的世界(如同寂静)的熵为 0。一个在秩序与混乱之间取得平衡的世界,如同具有切分音的音乐或具有节奏的语言,熵值很高,但又会过高。
这里有一个美妙之处:熵衡量的不是无知与秩序的对立,而是意义得以存在的空间。没有不确定性,就没有故事,没有惊喜,也没有传递信息的理由。香农的理论并非冷冰冰的。它充满诗意:它告诉我们,信息存在于已知与未知之间的空间。
熵作为“平均惊喜”,I(xᵢ) = -log₂ P(xᵢ) 代表的是单个事件的信息量,即该结果带来的“惊喜”。但在现实生活中,事件并非孤立地逐一发生,它们发生的概率各不相同。因此,香农问道:这个世界上的平均惊喜量是多少?
这就是为什么熵是对所有可能性求和的:H(X) = -\sum_i p(x_i)\log_2 p(x_i) 。这就像说,让我们把所有可能的结果都考虑进去,根据它实际发生的频率来衡量它的意外程度,看看生活整体上有多不确定。
为什么 [0.5, 0.5] 比 [0.9, 0.1] 更不确定?
对于 [0.5, 0.5]:H = - (0.5 log₂ 0.5 + 0.5 log₂ 0.5) = 1 比特。
对于 [0.9, 0.1]:H = - (0.9 log₂ 0.9 + 0.1 log₂ 0.1) ≈ 0.469 比特。
直觉微妙而精妙,当两种结果发生的概率相等时,你真的不知道会发生什么,悬念最大。当一种结果占主导地位时(例如,90%),你几乎大多数时候都能猜对,世界更可预测,因此每次事件带来的新信息较少。
当系统处于不确定性的边缘,所有可能性均等时,熵达到峰值;而当单一结果占据主导地位时,熵则趋近于零。
熵不仅仅是对不确定性的一种诗意的衡量,它也是一种极限,一种神圣的上限和下限。它告诉我们,任何语言、代码或系统在不丢失信息的前提下所能达到的最佳压缩程度。
每条信息都是一系列选择。想象一下,你有一个信息源,也许是一个讲故事的人,也许是一台机器,它不断生成符号:
X_1, X_2, X_3, …
每个符号 X_i 可能是一个字母、一个音符,甚至是一个像素,它们都来自某个分布 P(x)。如果你知道 P(x),你就能知道每个符号的可预测性或出乎意料程度。这就是熵所衡量的:
H(X) = -\sum p(x)\log_2 p(x)
它告诉你,平均而言,如果你是一位完美的编码员,要忠实地描述这个信源,每个符号需要多少比特。
完美压缩的梦想:假设你想发送一条长消息,但你不想浪费比特。如果某些符号很常见,你就不应该在它们身上花费太多空间;如果另一些符号很少见,它们就应该使用更长的编码。
香农在 1948 年证明了一个惊人的结论:无论你的编码多么巧妙,你永远无法将平均消息长度压缩到熵 H(X) 以下。
换句话说:\text{平均编码长度} \ge H(X)
而且,使用合适的方案,例如霍夫曼编码或算术编码,你实际上可以无限接近这个极限。
这里有一个具体的例子:假设你的信源以 90% 的概率发出 A,以 10% 的概率发出 B。
熵:H = -0.9 log₂ 0.9 - 0.1 log₂ 0.1 ≈ 0.469 比特/符号。
平均而言,你无法做得比使用 0.469 比特/符号更精确地表示这个信息流。
你能做到多接近这个值呢?你可以使用 A → 0,B → 1(各 1 比特)。还不错,但并不完美,平均每个符号 1 比特。使用更巧妙的方案,例如算术编码,你可以将平均值推向 0.469。
因此,熵实际上告诉你现实可以被压缩到什么程度,它是意义和冗余之间的界限。
熵悄悄地揭示了一个奇特的真理:每个世界都蕴含着无法减少的惊喜。你可以润色你的语言,创造巧妙的密码,甚至在诗歌中隐藏含义,但你无法逃避不确定性的最低代价。它就像一条沟通的物理定律,一种潜藏在所有文字之下的无声引力。

浙公网安备 33010602011771号