你已经知道的部分,一个比特都不值
这本书只有一个词需要重新定义:信息。定义完之后,压缩、机器学习、WiFi 速率、密码强度、甚至擦掉一个比特要花多少焦耳,都会从这一个定义里长出来。
「本期六合彩头奖号码是 03 11 19 26 33 41。」这条消息含多少信息?
先记下你的选择。答案在这一章末尾——而且它会顺手把「信息」这个词的意思整个换掉。
两条消息
今天早上有人告诉你两件事:
- 甲:「明天太阳会从东边升起。」
- 乙:「明天奥克兰会下雪。」
哪一条含的信息多?
直觉毫不犹豫:乙。但直觉说不清为什么。两句话字数差不多,都是完整的陈述句,都是关于明天的天气现象。差别不在句子里,在你脑子里。
甲这句话,你听完之后什么都没变。你本来就打算按太阳升起来安排明天。它没有让你改任何一个念头。
乙这句话,你听完之后要改很多:穿什么、要不要出门、这是不是气候出问题了、要不要拍张照。它把你脑子里一大片「本来觉得不会发生」的东西翻了个面。
克劳德·香农(Claude Shannon)1948 年在贝尔实验室那篇论文里,把这个直觉钉成了一句可以计算的话:
一条消息的信息量 = 它消除了多少不确定性 = 它有多让人意外。
「你已经知道的部分」不算信息。哪怕它再重要、再正确、再长。
这句话里藏着一个会让人不舒服的推论,值得现在就说清楚:
「明天奥克兰会下雪」在奥克兰是一条重磅新闻,在南极洲的科考站是废话。同一句话,信息量差得很远,而句子一个字都没变。
这不是文字游戏。它有非常硬的后果:没有「通用最优压缩器」这种东西(第 5 章会证明),「这段文本的熵是多少」这个问题本身就问得不完整(第 3 章你会亲手撞上这堵墙),而「模型有多好」和「文件能压多小」是同一个数字(第 12 章)。
从直觉到公式:为什么必须是对数
现在把它变成能算的东西。我们要找一个函数 I(p),输入是「这件事发生的概率」,输出是「它发生时带来多少信息」。
它必须满足三条。前两条是常识:
- 概率越小,信息越多。越意外的事,信息越多。
- 必然的事没有信息。
I(1) = 0。
第三条才是真正决定形状的那一条:
- 两件互不相干的事,信息量应该相加。我告诉你「硬币是正面」和「骰子是 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/2 | 1.000 bit | 一个问题 |
| 掷骰子出 6 | 1/6 | 2.585 bit | 两个半问题 |
| 一副牌抽到黑桃 A | 1/52 | 5.700 bit | 不到六个问题 |
| 六合彩头奖 | 1/13983816 | 23.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,这一章对你的信息量约等于 0——你本来就知道。这个玩笑不完全是玩笑:一本书对你值多少,等于它有多少内容是你猜不到的。这本书每一章开头都会先让你猜,就是这个原因。
选 A 的人,直觉抓的是「这件事多重要」;选 C 的人,直觉抓的是「要写多少字」。两个直觉都很正常,而两个都不是信息量。选 D 的人其实最接近真相的一半——它确实取决于你事先认为中奖概率是多少,只不过这个概率有公认的算法。
这一章的一句话
信息是意外。你已经料到的部分,一个比特都不值——所以「一条消息含多少信息」这个问题,问的从来不是消息,是你。
下一章:单条消息的意外我们会算了,但真正有用的是平均的意外——一个信息源每吐一个符号,平均带来多少比特。那个数字叫熵,它是这本书后面所有事情的地板。而它会立刻给你一个可以验证的预言:一枚 90% 出正面的硬币,虽然有两种结果,但每次平均只带来 0.469 比特。你却在硬盘上花了整整 1 比特去存它。