在上一块我们看到,压缩极限由概率分布决定,而最优前缀码可以通过 Huffman 算法构造。但这只是故事的一半。香农真正了不起的地方在于,他把「压缩需要多少比特」这个问题,提炼成了两个更基本的概念:信息与熵。这一块的中心目标,是让你感觉这两个定义几乎是被压缩问题逼迫出来的。
机器人指令、前缀码、Huffman 编码与压缩极限。
信息定义 -log₂(p)、熵的面积解释、香农无噪声编码定理。
语言建模、条件概率链式法则、交叉熵损失、压缩⇔智能。
请回忆第二位同学的编码:她把常见指令「上」编码为 0,「下」编码为 10,「左」「右」分别编码为 110、111。我们现在问一个更抽象的问题:完美压缩后的比特流应该是什么样子?
香农的洞察是:完美压缩应当产生与随机噪声不可区分的输出。这里的随机噪声指每个比特为 0 或 1 的概率各为 50%,且所有比特彼此独立。如果压缩后的输出还存在可被预测的规律,那就说明我们还能进一步压缩它;只有当没有规律可循时,才到达极限。
以机器人指令为例,消息以「上」开头的概率是 1/2,所以第一位比特是 0 的概率也是 1/2;若第一位是 1,则下一位来自「下」「左」「右」的概率又各以 1/2 对半分。整个比特流每一步都像抛硬币,这正是完美压缩的标志。
完美压缩的消息若有 n 个比特,则这条消息的概率应为 1 / 2ⁿ,反过来说,分配的比特数 n = -log₂(p)。这就是信息(information)的定义:
它测量的是:某个事件发生时,你需要把可能性空间对半分割多少次才能把它定位出来。罕见事件概率小、信息量大;常见事件概率大、信息量小。
太阳东升,p ≈ 1,-log₂(p) ≈ 0 比特。几乎不提供新信息。
彩票中奖,p 极小,-log₂(p) 很大。一旦发生,带来巨大的信息量。
单个符号的信息量是 -log₂(p),但压缩关心的是整条消息的平均成本。对所有符号取加权平均,就得到熵(entropy)H:
下图把每个符号画成一个矩形:宽度是概率 p,高度是信息量 -log₂(p)。所有矩形的总面积就是熵 H,也就是每个符号的平均信息量,也是无损压缩的理论下限。
图中的紫色虚线标记熵 H 的高度。当分布越接近均匀分布,每个符号的信息量越接近相等,总面积越大,熵越高;当分布越偏斜,少数符号占据大部分概率,罕见符号虽然很高但只占很窄的宽度,总面积反而变小,熵越低。
把前面的思想汇总起来,就得到信息论最核心的结果——香农无噪声编码定理(Shannon's noiseless coding theorem)。它指出:
Huffman 编码给出的是最优的整数长度前缀码,它可能略高于 H,因为真实码长必须是整数。但如果允许对符号序列进行分组编码(比如一次编码多个符号),平均码长就会越来越逼近 H。
这个定理的重要性远超数据压缩。它把「压缩效率」与「不确定性」两个看似无关的概念牢牢绑在一起:熵既是描述一个分布需要多少比特的最低成本,也是分布内在不确定性的度量。
-log₂(p) 度量单个事件的惊讶程度;熵 H 是对分布中所有事件取加权平均后的平均信息量。熵同时给出了无损压缩的理论下界——这就是香农定理。分布越均匀,熵越高;分布越偏斜,熵越低。下一块将把这个框架扩展到不同符号遵循不同分布的情形,并引出交叉熵与语言模型预训练目标。