卷 I · 惊CH 01深度 1/24

你已经知道的部分,一个比特都不值

这本书只有一个词需要重新定义:信息。定义完之后,压缩、机器学习、WiFi 速率、密码强度、甚至擦掉一个比特要花多少焦耳,都会从这一个定义里长出来。

信息 = 意外−log₂p全书主线

▷ 先猜一下

「本期六合彩头奖号码是 03 11 19 26 33 41。」这条消息含多少信息

A 几乎是无穷多B 大约 24 个比特C 大约 1 MBD 这个问题没有确定答案

先记下你的选择。答案在这一章末尾——而且它会顺手把「信息」这个词的意思整个换掉。

两条消息

今天早上有人告诉你两件事:

  • 甲:「明天太阳会从东边升起。」
  • 乙:「明天奥克兰会下雪。」

哪一条含的信息多?

直觉毫不犹豫:乙。但直觉说不清为什么。两句话字数差不多,都是完整的陈述句,都是关于明天的天气现象。差别不在句子里,在你脑子里。

甲这句话,你听完之后什么都没变。你本来就打算按太阳升起来安排明天。它没有让你改任何一个念头。

乙这句话,你听完之后要改很多:穿什么、要不要出门、这是不是气候出问题了、要不要拍张照。它把你脑子里一大片「本来觉得不会发生」的东西翻了个面。

克劳德·香农(Claude Shannon)1948 年在贝尔实验室那篇论文里,把这个直觉钉成了一句可以计算的话:

◆ 全书的第一句话,也是唯一需要背的一句

一条消息的信息量 = 它消除了多少不确定性 = 它有多让人意外。

「你已经知道的部分」不算信息。哪怕它再重要、再正确、再长。

这句话里藏着一个会让人不舒服的推论,值得现在就说清楚:

✗ 这个直觉是错的
信息量是消息本身的属性。同一段字节,含的信息是固定的。 信息量是消息和收信人之间的关系。同一段字节,对不同的人含的信息不同。

「明天奥克兰会下雪」在奥克兰是一条重磅新闻,在南极洲的科考站是废话。同一句话,信息量差得很远,而句子一个字都没变。

这不是文字游戏。它有非常硬的后果:没有「通用最优压缩器」这种东西(第 5 章会证明),「这段文本的熵是多少」这个问题本身就问得不完整(第 3 章你会亲手撞上这堵墙),而「模型有多好」和「文件能压多小」是同一个数字(第 12 章)。

从直觉到公式:为什么必须是对数

现在把它变成能算的东西。我们要找一个函数 I(p),输入是「这件事发生的概率」,输出是「它发生时带来多少信息」。

它必须满足三条。前两条是常识:

  1. 概率越小,信息越多。越意外的事,信息越多。
  2. 必然的事没有信息。I(1) = 0

第三条才是真正决定形状的那一条:

  1. 两件互不相干的事,信息量应该相加。我告诉你「硬币是正面」和「骰子是 6」,这两件事毫无关系,那么这两条消息加起来带来的信息,就该等于它们各自带来的信息之和。

第三条把答案锁死了。因为——

# 两件独立的事同时发生,概率是【相乘】的
P(正面 且 出 6) = 1/2 × 1/6 = 1/12

# 但我们要求信息量是【相加】的
I(正面 且 出 6) = I(正面) + I(出 6)

# 什么函数能把乘法变成加法?
# 只有对数。这不是选择,是被三条要求逼出来的唯一解。

于是:

I(x) = −log₂ p(x)              单位:比特(bit)

# 负号是因为 p ≤ 1,log 出来是负的,加个负号变正。
# 底数取 2,是因为我们想用「是/否」当单位。

「一个比特」到底是多少

用二十问游戏来体会这个单位,比任何定义都快。

我心里想一个 0 到 255 之间的整数,你每次问一个只能答「是」或「否」的问题。最笨的办法是一个一个猜,最坏要问 255 次。最好的办法是二分:「大于 127 吗?」——不管答案是什么,可能性都砍掉一半。八个问题,必定问出来。

−log₂(1/256) = 8

◆ 比特的正确读法

一个比特 = 一个最优的是非问题的答案 = 把可能性砍掉一半这件事本身。

它不是「一个字符」,不是「一个存储单元」,也不是「0 或 1 这个符号」。它是「不确定性减半」的计量单位

存储里那个「比特」之所以也叫比特,是因为一个能独立取 0 或 1 的开关,正好能承载一次减半——两者恰好对上了。但这是结论,不是定义。

把滑杆拖一拖,感受一下这个单位:

三个数感练习

下面这几个数,自己心算一遍,比读十段解释有用:

事件概率信息量读法
抛硬币出正面1/21.000 bit一个问题
掷骰子出 61/62.585 bit两个半问题
一副牌抽到黑桃 A1/525.700 bit不到六个问题
六合彩头奖1/1398381623.737 bit三个字节
猜中一个 128 位密钥2⁻¹²⁸128 bit整整 128 个问题

停在倒数第二行。

▸ 在现实里:中奖通知只有三个字节

「你中了六合彩头奖」这条消息,信息量是 23.737 比特。不到三个字节。比一个汉字的 UTF-8 编码还小。

而「今天是星期二」这条消息有 log₂7 = 2.807 比特,「现在几点几分」有 log₂1440 = 10.49 比特。

所以按信息量算,一条中奖通知大约等于八条「今天星期几」。

这听上去荒谬,但它正是这套理论的能力边界,而且必须现在就讲清楚:信息论量的是「这条消息把可能性缩小了多少」,它完全不管这件事对你的人生意味着什么。

这不是理论的缺陷,是它的设计。香农当年要解决的是一个具体的工程问题:一条电话线一秒能可靠地送过去多少东西。他必须把「意义」这个变量彻底赶出去,公式才算得动。而正因为赶出去了,这套公式才能同时适用于英语、中文、DNA、股价和 WiFi 信号——它们的「意义」毫无共同之处,但它们的「概率结构」可以放在同一张表上比较。

记住这个分工。这本书的每一个结论都在它下面成立,也只在它下面成立。

底数换了会怎样

底数取 2,单位叫比特(bit);取自然对数 e,单位叫奈特(nat);取 10,单位叫哈特利(hartley)或者 ban

最后那个名字有个来历:二战期间图灵和同事在布莱切利园破译 Enigma 时,用的就是以 10 为底的单位,取名自附近的小镇 Banbury——他们把统计用的穿孔纸片叫 banburies。那大概是信息论第一次被真正拿去干活,比香农的论文早了六七年,而且当时它是国家机密。

换底只是乘一个常数(1 nat = 1.4427 bit),不影响任何结论。这本书全程用比特。

✎ 术语正名:「信息」这个词被用坏了

日常语言里「信息」大概等于「内容」。信息论里不是。为了后面不打架,先把三个词分开:

  • 数据(data):一串符号。有多少个符号是可以直接数的。
  • 信息(information):这串符号消除了多少不确定性。要先有一个概率分布,这个量才存在。
  • 意义(meaning):这串符号对某个人意味着什么。信息论完全不碰这一项。

一个 4 GB 的全零文件,数据 4 GB,信息接近 0。一段 24 比特的中奖号码,数据 3 字节,信息 23.7 比特——几乎榨干了

为什么这个定义值得你花二十四章

因为它一旦成立,下面这些看起来毫不相干的事情,会变成同一件事的不同侧面:

你以为它是什么它其实是什么在哪一章
zip 为什么能压缩因为你的文件里大部分内容是「已经知道的」第 5–9 章
训练神经网络的 loss字面意义上的「你的模型每个词浪费了多少比特」第 10–12 章
为什么 WiFi 靠加带宽提速带宽在括号外,功率在 log 里面第 18 章
二维码为什么盖住三成还能扫码率低于信道容量时,错误率可以任意小第 16–18 章
决策树先按哪个特征分哪个特征和标签的互信息最大第 19 章
一条内幕消息值多少钱你和市场之间的互信息,单位可以换成钱第 21 章
KPI 为什么总会失效在一个含噪声的代理量上用力优化的必然结果第 23 章
「Tr0ub4dor&3」为什么不安全它只有约 28 比特,一台显卡几秒钟第 24 章

这些不是「用信息论打比方」。它们是同一个公式在不同场合里的取值。

◇ 结账
B:大约 24 个比特(精确说 23.737)

如果你刚才选了 B,这一章对你的信息量约等于 0——你本来就知道。这个玩笑不完全是玩笑:一本书对你值多少,等于它有多少内容是你猜不到的。这本书每一章开头都会先让你猜,就是这个原因。

选 A 的人,直觉抓的是「这件事多重要」;选 C 的人,直觉抓的是「要写多少字」。两个直觉都很正常,而两个都不是信息量。选 D 的人其实最接近真相的一半——它确实取决于你事先认为中奖概率是多少,只不过这个概率有公认的算法。

这一章的一句话

信息是意外。你已经料到的部分,一个比特都不值——所以「一条消息含多少信息」这个问题,问的从来不是消息,是你。

下一章:单条消息的意外我们会算了,但真正有用的是平均的意外——一个信息源每吐一个符号,平均带来多少比特。那个数字叫熵,它是这本书后面所有事情的地板。而它会立刻给你一个可以验证的预言:一枚 90% 出正面的硬币,虽然有两种结果,但每次平均只带来 0.469 比特。你却在硬盘上花了整整 1 比特去存它。