熵 · 压缩 · 交叉熵 · 信道容量 · 互信息 —— 一本信息论小书

意外

S U R P R I S E

有人告诉你两件事:「明天太阳会从东边升起」,和「明天奥克兰会下雪」

哪句话含的信息多?直觉毫不犹豫,但直觉说不清为什么。差别不在句子里——差别在你脑子里。第一句你早就知道,听完之后一个念头都没改;第二句把你一大片「本来觉得不会发生」的东西翻了个面。

1948 年,香农把这个直觉钉成了一句可以计算的话,而这本书只需要你接受这一句:

信息就是意外。你已经知道的部分,一个比特都不值。

这个定义看起来朴素得像句废话。但它一旦成立,下面这些毫不相干的东西会变成同一件事的不同侧面——zip 为什么能压缩、训练神经网络那个 loss 到底在量什么、WiFi 为什么靠加带宽而不是加功率提速、二维码盖住三成为什么还能扫、决策树先按哪个特征分、一条内幕消息值多少钱、擦掉一个比特要花多少焦耳、以及为什么 KPI 一旦成为目标就必然失效。

而这本书的中心,是一个可以当场验证的等号。

24章 · 六卷
24个真引擎 Demo
112种单错,全纠回来
1比特 —— 算术编码在 2053 字符上的全部损失

这本书和别的信息论材料不一样的地方

每一台机器都是真的

这本书里的每一个数字,都是页面上那台引擎当场算出来的,不是从教科书上抄的表格,也不是画给你看的示意图:

  • 真霍夫曼(第 6 章):换一段文本,树当场重新长一遍,码表重出,编码解码全跑一遍。克拉夫特和恰好等于 1——那是它最优性的形状证据。
  • 真算术编码(第 8 章):一台 30 位整数区间编码器,带下溢处理。它压 2053 个字符的英文语料,只比理论地板多了 1 个比特——不是每字符 1 比特,是整条消息一共 1 个。解码逐字符验证。
  • 真 LZ77(第 9 章):能看见每一个 ⟨往回多少,抄几个⟩ 的匹配。三种语料三种命运:日志上压到四分之一,随机 DNA 上一败涂地(LZ77 985 字节,而算术编码正好踩在地板 500 字节上)。
  • 真 n-gram 模型 + 真压缩器(第 12 章):这是全书的招牌。同一台模型走两条路——一条算交叉熵(352.4 比特),一条真的编出比特串(354 比特)。两个数字差 1.6,而它们的计算过程毫无交集。
  • 真汉明 (7,4) 码(第 17 章):点任意一位翻转,看三个校验位怎么把它指认出来。16 × 7 = 112 种单错,一个不漏地纠回来;336 种双错,一个也救不了——而这两句话是同一个「最小码距 3」的两面。
  • 真信道、真凯利、真兰道尔:BSC 翻位、重复码的代价(要到十亿分之一错误率得重复 35 次)、凯利增长率与信道容量逐位相同、擦一个比特的 2.871 泽普托焦耳。

一场你可以亲手做的实验

第 3 章有一个 1951 年的实验,你可以现在就做一遍:给你一段没读过的中文,一个字一个字往下猜,猜错再猜,只记录你猜了几次。

那串「猜了几次」的数字,和原文是一一对应的——拿着同一个脑子和这串数字,任何人都能把原文还原出来。所以它是原文的一种编码,而原文的熵不可能超过它。一个算不动的量,就这样被换成了一个算得动的量。

做完之后你会拿到一个属于你自己的数字。而更要紧的是,你会发现「这段文字的熵是多少」这个问题问得不完整——同一段中文,对不认字的人是 7.8 比特一个字,对一台只读过 612 个字的模型是另一个数,对你是第三个数,对已经读过它的人是 0。

旁边还有一个对照按钮:让那台只读过 612 个字的模型来猜同一段。你会赢,赢很多——而这正是重点。

每章开头先让你猜一个数字

每一章都以一个「▷ 先猜一下」开始,章末有「◇ 结账」揭晓。这个设计不是花样,它就是这本书的主题:你猜得越准,这一章对你的信息量就越小。

另外每章都有一个「✗ 这个直觉是错的」——集中拆一个大多数人都有、而且会真的害到你的错误直觉。第 24 章会把它们收成一张自查表。

◆ 这本书的主线,和它的两条边界

主线:信息是意外。你已经料到的部分一个比特都不值——所以「压缩得多好」「预测得多准」「理解得多深」在数学上是同一句话。

边界一(这本书会诚实地反复提醒你):信息论量的是「这条消息把可能性缩小了多少」,它完全不管这件事意味着什么。「你中了六合彩」这条消息只有 23.7 比特,三个字节装得下。这不是理论的缺陷,是它的设计——正因为把「意义」赶了出去,同一套公式才能同时适用于英语、中文、DNA、股价和 WiFi 信号。

边界二:「压缩 = 理解」这个诱人的推论,只有一半是对的。第 12 章和第 13 章会把这一半和另一半都摆出来,不含糊过去。

这本书写给

  • 有软件开发背景、但没有系统学过信息论的人
  • 知道「熵」这个词、但说不清它到底量的是什么
  • 训练过模型,想知道那个 cross_entropy 字面上在算什么
  • 想要一层能同时看穿压缩、通信、机器学习、赌博和物理的透镜
  • 零数学前提:会读 log₂ 就够了,所有公式都从直觉推出来

这本书不打算

  • 做一本严谨的教材(想要的话第 24 章推荐了三本,其中一本作者免费放出了 PDF)
  • 覆盖率失真理论、多用户信息论、量子信息(第 24 章给了入口)
  • 教你实现一个生产级压缩器(引擎是为讲清楚写的,不是为跑得快写的)
  • 论证「压缩就是智能」(会给出这个论点强的一半和弱的一半,然后停在那里)

怎么读这本书

顺着读。这本书的依赖关系比大多数技术书紧——第 12 章那个中心等号,需要第 8 章(算术编码可以换概率表)和第 10 章(交叉熵是什么)两块拼图同时在手上。

如果只有半小时:第 1 章(换掉「信息」这个词的意思)→ 第 3 章(亲手量一次自己的熵)→ 第 12 章(那个等号)。这三章能给你这本书八成的冲击。

如果你是冲着 AI 来的:第 10、11、12、13 章是一整块,读完你对 cross_entropyperplexity、过拟合和奥卡姆剃刀的理解会换一层地基。

如果你是冲着通信/底层来的:第 14–18 章可以单独读,只需要第 2 章的熵。

每一章都可以只看 demo。那些数字全都是当场算的,你换个输入它就换个答案。