卷 I · 惊CH 03深度 3/24

亲手量一次你母语的熵

前两章的熵都是我算给你的。这一章你自己量。工具是一个 1951 年的实验,测量对象是你的脑子——而结果会推翻一个你可能还没意识到自己有的假设。

Shannon 1951★ 招牌 demo熵属于观察者

▷ 先猜一下

给你一段没读过的中文,让你一个字一个字往下猜(前面的字都已知)。你第一次就猜中的比例,大概是多少?

A 约 5%B 约 20%C 约 40%D 60% 以上

做完下面那个实验,你会有一个属于你自己的数字。

1951 年的那个实验

香农 1948 年那篇论文之后,有一个问题他自己也答不上来:英语的熵到底是多少?

问题在于,你没法直接算。要算熵,你需要 P(下一个字母 | 前面所有字母) 这个分布。前面有 100 个字母的时候,可能的历史有 27¹⁰⁰ 种——宇宙里没有那么多原子,更不要说去统计每一种历史下的频率。

1951 年,香农想了一个绕过去的办法,而且这个办法漂亮得像个魔术:

◆ 香农的招:不去问概率,去问「猜了几次」

找一个人,给他看一段文本的前面部分,让他猜下一个字母。猜错了就告诉他「不对」,让他再猜,直到猜对为止。

只记录他猜了几次。不记录他猜了什么。

于是一段 100 个字母的文本,变成了 100 个数字,比如 1, 1, 3, 1, 2, 1, 1, 1, 5, 1 …

魔术在下一步:

这串数字,和原文是一一对应的。

为什么?因为如果我手上有一个和你一模一样的脑子(同一个预测器),我拿着这串数字就能把原文完整还原出来:第一个数字是 1,说明「我这个脑子的第一猜」就是答案,那我猜一次就知道第一个字母是什么;第二个数字是 3,说明答案是「我这个脑子的第三猜」——我猜三次,取第三个。以此类推。

◆ 所以这串数字是原文的一种编码

一段文本的熵,不可能超过它任何一种编码的熵(否则那个编码就违反了第 5 章的定理)。

于是:H(原文) ≤ H(那串排名数字)

右边是可以算的——排名只有几十种取值,统计一下频率就行了。一个算不动的量,被换成了一个算得动的量。

香农还给出了一个下界(推导稍绕,写在下面的框里)。两个界夹在一起,就是他 1951 年那篇论文的结论:印刷体英语的熵大约在每字符 0.6 到 1.3 比特之间

对比一下第 2 章那张表:单看字母频率是 4.04 比特,而真实英语只有 1 比特上下。也就是说,英语里大约四分之三的比特,是「上下文已经告诉你了」的。

现在轮到你

下面这段中文你没读过(它是这本书语料里留出来的部分)。规则和香农当年一样:一个字一个字猜,猜错再猜,直到猜中。不要用输入法的联想,那是作弊——虽然作的是很有意思的弊,第 12 章会说为什么。

猜不出来的时候按「看答案」,那一格会被单独记账,不参与统计。

你刚才量到了什么

三个数字,一个比一个有意思。

一、一次猜中的比例

大多数人在中文上会落在 40%–60% 之间,比大多数人猜的高得多。

原因不神秘:中文里大量的字是成词出现的。「面包」的「包」、「站台」的「台」、「同样」的「样」——第一个字一出来,第二个字几乎是确定的。这些位置你的猜中率接近 100%,它们把平均值拉得很高。

而难猜的位置也很集中:句子开头、名词、和信息真正在变化的地方。那些位置你可能要猜五次十次。

▸ 在现实里:这就是你的输入法

拼音输入法的候选列表,和你刚才玩的游戏是同一件事,只是方向反过来:它替你排好了「第一猜、第二猜、第三猜」,你只需要报一个排名。

所以「输入法好不好用」这件事,可以被精确度量:看你平均要按第几个候选。那个数字越接近 1,模型越准,你敲的键就越少。

而整句输入之所以比逐字输入省力,正是因为它能用上更长的上下文——上下文越长,条件熵越低,候选排名越靠前。这是同一条公式在两个地方的两次现身。

二、熵的上下界

上界的来历上面说过了:排名序列的熵。下界的推导稍微绕一点,但值得看一眼,因为它解释了为什么两个界之间会有空隙:

∑ 那两个公式

qi 是「第 i 次才猜中」的频率。香农给的两个界是:

上界:  H ≤ −Σ q_i log₂ q_i           # 排名序列自己的熵

下界:  H ≥ Σ i · (q_i − q_{i+1}) · log₂ i

上界好理解。下界的思路是:一个理想的预测者,他的第 i 猜命中率不可能随便乱来——如果某个位置他要猜到第 5 次,说明那个位置至少有 5 个候选是「说得通」的,那这个位置至少值 log₂5 比特。把这个逻辑对所有排名做一遍加权,就得到了下界。

两个界之间的空隙来自一个假设的松紧:上界假设你的猜测顺序完全没有额外结构,下界假设你是一个「理想观察者」。真实的人两头都不是,所以真值落在中间。

那个 demo 里有一个「让模型猜同一段」的按钮,它不只是凑热闹——它是在验证这套方法本身可不可信。

因为对一台模型,我们能走两条完全独立的路:

  1. 只看它猜到第几次,套香农 1951 的两个公式,得到一个区间。
  2. 直接把它每一步给正确答案的概率取 −log₂ 加起来,得到真值。

如果真值落在区间里,说明第一条路(也就是你刚才走的那条)是可信的。点一下那个按钮,你会看到它确实落在里面。

三、你 vs 那台模型

demo 里那台模型只读过 612 个字。你读过多少?保守估计几千万字。

所以你几乎一定会赢,而且赢很多。这正是这一章真正要说的事。

这一章真正的结论

◆ 熵不是文本的属性

熵是「文本 + 观察者」这一对东西的属性。

同一段中文:

  • 不认识汉字的人:每个字约 7.8 比特(221 种符号,只能瞎猜)。
  • 只统计字频的机器:7.113 比特。
  • 读过 612 个字的模型:demo 里那个数。
  • :你刚才量到的那个数。
  • 已经读过这段话的人:0 比特。

文本一个字都没变,五个数字全不一样。所以「这段文字的熵是多少」这个问题,缺了一半——必须问「对谁来说」。

✗ 这个直觉是错的
熵是文件的客观属性,就像文件大小一样,测一下就知道了。 熵是相对于一个概率模型定义的。换个模型,同一个文件的熵就变。

你在网上看到的「英语的熵是 1.1 比特」这类说法,完整版应该是:「在人类母语者作为预测器的条件下,印刷体英语的熵约为 1.1 比特每字符」。前半句不能省。

这个坑很深,因为它会让你误以为存在一个「终极压缩器」。不存在。存在的只是「对某个分布最优的压缩器」,而换一个分布它就变差。第 5 章会把这件事变成一个鸽笼原理的三行证明。

顺手回答一个你可能有的疑问

「既然熵取决于观察者,那它还算什么客观的东西?会不会最后变成主观感受?」

不会,因为它相对的不是「感受」,是一个可以写下来、可以交换、可以互相检验的概率模型

说清楚这一点很要紧:

  • 如果你和我用同一个模型,我们算出的熵一定完全相同——它是确定的,可复现的。
  • 如果我们用不同的模型,那我们本来就在测不同的东西,得到不同的数字是应该的。
  • 而且哪个模型更好,是可以客观比较的:谁在同一段没见过的文本上给出的比特数少,谁就更好。这个比较不需要任何主观判断。

这最后一条极其重要,它是第三卷(第 10–13 章)的全部地基。「模型的好坏」这件看起来软绵绵的事,在信息论里有一把硬尺子:拿它去压一段没见过的数据,数比特。

◇ 结账
通常是 C 或 D:40% 以上,很多人到 60%

如果你猜了 A 或 B,说明你低估了自己对母语的掌握——你脑子里装着一台非常好的中文模型,只是它从来不用向你汇报。这个实验第一次让它交出了一个数字。

而这个数字之所以重要,不是因为它是多少,是因为它和别人的不一样,和机器的也不一样,而这不是测量误差

这一章的一句话

熵不属于文本,属于「文本 + 观察者」这一对。所以压缩、预测、理解这三件事从这里开始就注定要合并成一件——它们都是在问「你的模型有多好」。

下一章:卷 I 的最后一章,清一个很多人身上都有的误会。熵不是「混乱」。一张看起来乱七八糟的分布,熵可以比一张看起来整整齐齐的低。而这个澄清不只是抠字眼——它会直接给出「为什么高斯分布到处都是」的答案,并且第一次把信息论和物理学接在同一根线上。