卷 VI · 界CH 24深度 24/24

七个错觉,和你手上这把尺子

最后一章。先把二十三章里散落的错误直觉集中收一次账,再用一个你每天都在用的东西把尺子交到你手上,然后说清楚从这里往哪走。

错觉总账密码熵继续探索

▷ 先猜一下

两个密码:Tr0ub4dor&3(人自己想的,11 位混合字符)和 四个随机挑的常用词(比如 correct horse battery staple)。哪个更难破?差多少?

A 前者,字符复杂B 差不多C 后者,强几十倍D 后者,强几万倍

七个错觉,一次收清

这本书每一章都在拆一个错误直觉。集中列一遍,你可以拿它当自查表:

✗ 一、信息量 = 数据量
文件越大,信息越多。 一个 4 GB 的全零文件,信息量接近 0。一条 24 比特的中奖号码,几乎榨干。信息是「消除了多少不确定性」,不是「占了多少字节」。

诊断句:「这段数据里,有多少是我本来就能猜到的?」(第 1 章)

✗ 二、熵 = 混乱
看起来越乱,熵越高。 熵是「你离知道答案还差几个是非问题」。一张「看起来很乱」的分布(H=2.812)可以比一张「整整齐齐」的(H=2.999)熵更低。熵量的是难猜程度,不是视觉印象。

诊断句:「下一个结果,我要问几个问题才能确定?」(第 4 章)

✗ 三、熵是文件的客观属性
这段文本的熵是多少,测一下就知道了。 熵是相对于一个概率模型定义的。同一段中文,对不认字的人是 7.8 比特/字,对一台读过 612 个字的模型是另一个数,对你是第三个数,对已经读过它的人是 0。

诊断句:「对谁来说?」——这句话要跟在每一个熵数字后面。(第 3 章)

✗ 四、存在能压缩任意数据的方法
只要算法够聪明,总能把文件压小。 鸽笼原理:任何无损压缩器都必然让某些文件变大。压缩不是「变小」这门手艺,是「赌哪些文件会出现」这笔赌注。

诊断句:「它把 2ⁿ 个文件塞进 2ⁿ−1 个格子的哪一步做了手脚?」(第 5 章)

✗ 五、可靠和速度是连续的权衡
要更可靠就得更慢,要多可靠就得多慢。 那是一道悬崖不是斜坡。码率低于容量:错误率想多小就多小;高于容量:一堵谁也过不去的墙。

诊断句:「这真的是一条连续权衡曲线,还是我站错了悬崖的一侧?」(第 16 章)

✗ 六、后期处理能挖出更多信息
再跑一个更强的模型,说不定能从这份数据里挖出更多东西。 数据处理不等式:没有新观测,任何处理都只能损失。「增强」出来的清晰细节全部来自先验——它让画面更好看,同时让它更不可信。

诊断句:「这一步引入了新的观测吗?」没有的话,别指望它变出信息。(第 20 章)

✗ 七、指标失效是人品问题
KPI 被钻空子,是因为人不诚实。 这是「用力优化一个含噪声的代理」的算术后果。它在完全诚实的人身上、在没有动机的 AI 身上,一样发生。

诊断句:「这个指标和我真正想要的东西,相关性有多高?我在多大的候选池里挑?」(第 23 章)

把尺子用一次:密码

这本书的第一个概念——「信息 = 意外」——可以直接量一件你每天在用的东西。

方案1e12 次/秒 的离线爆破
人自己想的 8–11 位混合密码约 28 bit瞬间
4 个随机常用词(2048 词表)44 bit8.8 秒
8 位真随机 ASCII52.6 bit55 分钟
6 词 diceware(7776 词表)77.5 bit约 3500 年
AES-128 密钥128 bit远超宇宙年龄
◆ 熵不在字符里,在「你是从多大的池子里、多随机地挑的」这件事里

Tr0ub4dor&3 看起来复杂:有大写、有数字、有符号。但那些替换(o→0a→4e→3是所有人都会做的同一套替换,攻击者的字典里早就有

它的熵不来自字符集大小,来自「你在多大的可能空间里做了多随机的选择」。而人做的选择极其不随机——选一个常见单词、首字母大写、做几个标准替换、末尾加个数字。这个空间只有几亿个,约 28 比特。

四个从 2048 词表里真随机挑的词,空间是 2048⁴ ≈ 1.8 × 10¹³,44 比特。比 28 比特强 2¹⁶ = 65536 倍。

而且它更好记。这是密码学里少见的「安全性和易用性同时提升」的案例,也是 XKCD 那张著名漫画(第 936 期)的全部内容。

✗ 但这里有一个致命前提,而它才是全部
「那我自己随便想四个词就行了。」 必须是真随机挑的。你「随便想」的四个词,熵会掉到十几比特——因为你想到的词和别人想到的词高度重合。

用骰子,或者用一个可信的密码管理器生成。「我觉得这挺随机的」是不可靠的随机源——这也是第 3 章那个结论的又一次现身:熵取决于攻击者的模型,而攻击者对「人会想什么」建模得很好。

▸ 在现实里:这把尺子还能量什么

「从多大的空间里、多随机地挑」这个问法,可以直接套到你系统里每一个 ID 上:

东西该担心什么
6 位数字验证码19.9 bit离线爆破瞬间破——它的安全性完全来自「限次 + 限时」,不来自熵。所以「验证码错 5 次锁定」不是体验设计,是唯一的防线
7 位 base62 短链41.7 bit空间 3.5 万亿,但生日碰撞在约 1,876,597 条之后就开始了——如果你是随机生成而不是自增,到百万量级必须处理冲突
16 位十六进制 token64.0 bit够用,但别用它当长期凭证
UUIDv4122 bit够。但UUIDv1 只有约 60 bit 有效熵而且含 MAC 地址和时间戳,当安全 token 用是漏洞
32 字节 base64 API key258 bit远超需要,但没坏处

三个可以带走的判断:

  • 低熵不等于不安全,但它意味着安全性得由别的东西提供(限次、限时、绑定设备)。六位验证码是这条的教科书例子。
  • 碰撞发生在 2^(n/2),不是 2^n。生日悖论把你的可用空间开了平方根。选 ID 长度时算的应该是这个数。
  • 「看起来随机」不算数。UUIDv1 看起来和 UUIDv4 一模一样,熵差了一半还多。永远问「它是从多大的池子里、用什么随机源挑的」,而不是「它长不长、乱不乱」。

这本书的一句话

◆ 全书主线

信息是意外。你已经料到的部分一个比特都不值——所以「压缩得多好」「预测得多准」「理解得多深」在数学上是同一句话,而这句话有一个谁也绕不过去的下限。

把这条线上的站点连起来:

意外  −log₂p                        (第 1 章)
  ↓ 取平均
熵    H = −Σ p log₂ p                (第 2 章)
  ↓ 这是压缩的地板
香农第一定理                          (第 5 章)
  ↓ 真造出来
霍夫曼 → 算术编码 → LZ77             (第 6–9 章)
  ↓ 概率是估的,估错要付钱
交叉熵 = 熵 + KL                      (第 10 章)
  ↓ 换个单位
困惑度 = 2^交叉熵                     (第 11 章)
  ↓ 模型 + 算术编码 = 压缩器
【预测 ⟺ 压缩】                       (第 12 章)
  ↓ 把模型自己也算进账
柯尔莫哥洛夫复杂度 / MDL              (第 13 章)
  ↓ 线路会出错
容量 C = 1 − H(p)                     (第 14–18 章)
  ↓ 两样东西之间
互信息 I(X;Y)                         (第 19–21 章)
  ↓ 换成焦耳
兰道尔 kT·ln2                         (第 22 章)
  ↓ 换成控制
好的调节器必是模型                     (第 23 章)

继续往下走

如果你想把理论学扎实

  • Cover & Thomas,《Elements of Information Theory》。这个领域的标准教材,写得极其清楚。看完这本书之后读它,你会发现前六章基本是复习。
  • David MacKay,《Information Theory, Inference, and Learning Algorithms》。作者本人把 PDF 免费放出来了。它的独特之处是把信息论、贝叶斯推断和机器学习当成一件事来讲——如果你只读一本,读这本。
  • 香农 1948 年那篇原文A Mathematical Theory of Communication)。它出乎意料地好读。一个领域被一个人在一篇论文里从零建立起来,这种事不多。

如果你想往编码理论走

  • MacKay 那本书的后半部分就有 LDPC 的完整讲解(他是重新发现 LDPC 的人之一)。
  • Reed–Solomon 的实现是一个非常好的动手项目:它需要有限域运算,而写完之后你会对 CD、二维码、RAID-6 有完全不同的理解。
  • Polar 码(Arıkan 2008)如果你想看一个「有数学证明能达到容量」的构造长什么样。

如果你想往机器学习走

  • 变分推断和 ELBO。那个 evidence lower bound 拆开来就是「重构误差 + KL 散度」,而 VAE 的整个损失函数可以完全用「用多少比特描述这个数据」来解释。这条路叫「比特回传(bits-back coding)」,非常漂亮。
  • 信息瓶颈(Information Bottleneck)。Tishby 等人提出的框架:好的表示应该最小化 I(输入; 表示) 同时最大化 I(表示; 标签)注意:它用来解释深度学习训练动力学的那部分主张有过不小的争议,读的时候留个心。
  • 最小描述长度和贝叶斯的关系。第 13 章只开了个头,这条线可以一直走到 Solomonoff 归纳——一个「理论上最优的学习者」的定义,代价是不可计算。

如果你想往物理走

  • Jaynes,《Probability Theory: The Logic of Science》。把概率论当成逻辑的推广,最大熵原理在这里被推到极致。这本书的观点很强硬,但值得认真对待。
  • 随机热力学 / 涨落定理。兰道尔原理只是入口,这个领域在过去二十年把「信息」正式写进了热力学第二定律。
  • 黑洞信息悖论。贝肯斯坦–霍金熵说黑洞的熵正比于它的表面积而不是体积——由此得出的贝肯斯坦界给出了「一个给定大小和能量的区域最多能装多少比特」。信息论在这里变成了宇宙学。

如果你想往控制论走(这本书没展开的那一半)

第 23 章那两条定律,属于另一个完整的领域。它回答的是「一个会看自己的系统,为什么会稳定、为什么会失控、为什么会震荡」:

  • 负反馈为什么能用不精确的元件造出精确的系统(Black 1927 的反馈放大器);
  • 延迟为什么是反馈的毒药——为什么淋浴的水温总是调不好、为什么自动扩容会震荡、为什么供应链有牛鞭效应;
  • PID 三个字母的直觉:你离目标多远(现在)、你欠了多久(过去)、你正在多快接近(未来);
  • 库存-流量思维:为什么「减排」和「浓度下降」是两件事。

入门读物推荐 Donella Meadows 的《Thinking in Systems》(中译《系统之美》),它几乎不用数学。想要数学版的话,任何一本本科控制理论教材的前几章就够了。

◇ 结账
D:后者强 2¹⁶ = 65536 倍

44 比特 vs 28 比特,差 16 比特,也就是 65536 倍

而如果你选了 A,那正是这本书从第 1 章起就在拆的那个直觉——把「看起来复杂」当成了「信息量大」。

这也是这本书最后一次演示它的主线:意外不在符号里,在选择的空间里。

最后一句

如果这本书只留下一样东西,希望是一个习惯:

遇到任何「这里有多少信息」「这个能压多小」「这个模型有多好」「这条线能跑多快」的问题时,先问一句——「相对于什么?」

因为这本书从头到尾只说了一件事:信息不是内容,是内容和预期之间的差。而预期是谁的、从哪来的、有多准,决定了那个差是多少。

你现在有一把尺子,它的单位是比特。去量点什么。