← 返回目录


熵与简短的编码

学校≠教育≠技能;文凭溢价=80%信号传递+20%人力资本

26 👍 / 0 💬

(如果你对贝叶斯推断还不熟悉,现在正是阅读《贝叶斯定理的直观解释》的好时机。)

假设你有一个系统 X,它处于以下 8 种可能状态中任意一种的概率都是均等的:

{X_1, X_2, X_3, X4, X_5, X_6, X_7, X_8}

在物理学、数学乃至生物学中,存在着一个极其普遍的物理量,被称为熵(entropy);在这个例子中,X 的熵是 3 比特。这意味着,平均而言,我们必须提出 3 个是非题才能找出 X 的确切状态。例如,有人可以使用这套编码规则来告诉我们 X 的值:

| X_1 : 001 | X_2 : 010 | X_3 : 011 | X_4 : 100 |

| X_5 : 101 | X_6 : 110 | X_7 : 111 | X_8 : 000 |

所以,如果我问「第一个符号是 1 吗?」听到回答「是」,接着问「第二个符号是 1 吗?」听到回答「不是」,然后问「第三个符号是 1 吗?」听到回答「不是」,我就知道 X 处于状态 4(即 100)。

现在,假设另一个系统 Y 有四种可能的状态,其概率分布如下:

| Y_1 : \frac{1}{2} (50%) | Y_2 : \frac{1}{4} (25%)|

| Y_3 : \frac{1}{8} (12.5%) | Y_4 : \frac{1}{8} (12.5%) |

那么 Y 的熵将是 1.75 比特,意味着我们可以通过提出 1.75 个是非题来找出它的值。

谈论提出「一又四分之三个问题」到底是什么意思呢?想象一下,如果我们用下面这套编码来指定 Y 的状态:

| Y_1 : 1 | Y_2 : 01 | Y_3 : 001 | Y_4 : 000 |

首先你问:「第一个符号是 1 吗?」如果答案是「是」,你就大功告成了:Y 处于状态 1。这种情况在 50% 的时间里会发生,所以在 50% 的时间里,只需要 1 个是非题就能查明 Y 的状态。

假设答案反而是「不是」。那你接着问:「第二个符号是 1 吗?」如果答案是「是」,你也大功告成了:Y 处于状态 2。系统 Y 处于状态 2 的概率是 1/4,并且每次只要 Y 处于状态 2,我们都是用了两个是非题来得出这个结论的,所以在 25% 的时间里,需要 2 个问题来查明 Y 的状态。

如果连续两次的答案都是「不是」,你就会问:「第三个符号是 1 吗?」如果「是」,你就完事了,Y 处于状态 3;如果「不是」,你也完事了,Y 处于状态 4。在 Y 处于状态 3 的那 1⁄8 的时间里,需要问三个问题;在 Y 处于状态 4 的那 1⁄8 的时间里,同样需要问三个问题。

(1⁄2 × 1) + (1⁄4 × 2) + (1⁄8 × 3) + (1⁄8 × 3)

= 0.5 + 0.5 + 0.375 + 0.375

= 1.75。

计算一个系统 S 的熵 H(S) 的通用公式是:对所有可能的状态 Si,求 -P(S_i)\log_2(P(S_i)) 的总和。

例如,1/8 以 2 为底的对数是 −3。所以 −(1⁄8 × −3) = 0.375 就是状态 S4 对总熵的贡献:也就是说,在 1⁄8 的时间里,我们必须问 3 个问题。

你不可能总是为一个系统设计出一套绝对完美的编码,但如果你必须在一条消息中告诉某人任意多份 S 的状态组合,你可以设计出无限逼近完美状态的编码。(在谷歌上搜索「算术编码 / arithmetic coding」可以找到一种简单的方法。)

现在,你可能会问:「为什么不用『10』来代表 Y_4,而不是用『000』?那样难道不会让我们传递消息的速度更快吗?」

但如果你用『10』来代表 Y_4,那么当有人对「第一个符号是 1 吗?」这个问题回答「是」的时候,你就无法判断系统状态究竟是 Y_1(编码为 1)还是 Y_4(编码为 10)。事实上,如果你这样修改编码,整个系统就乱套了——因为如果你听到「1001」,你根本搞不清楚它的意思是「Y_4,接着是 Y_2」,还是「Y_1,接着是 Y_3」。

这里的寓意是:简短的词语(短代码)是一种总数守恒的稀缺资源

创建一套优秀编码——即一套能尽可能紧凑地传递消息的编码——的关键在于,把简短的代码留给那些你需要频繁表达的事物,而把较长的代码分配给那些你不常表达的事物。

当你把这门艺术发挥到极致时,你用来描述某事物的消息长度,将完全或几乎完全对应于该事物出现的概率。这就是将奥卡姆剃刀[1]形式化为「最小描述长度」(Minimum Description Length)或「最小消息长度」(Minimum Message Length)的原理。

因此,即使是我们给词语贴上的标签(读音/拼写),也绝对不是随心所欲的。我们给概念分配的发音,同样有优劣、智愚之分。即便抛开普遍用法[2]的社会契约不谈,这一点也同样成立!

我之所以说这些,是因为「你可以随心所欲地去 X」这种想法,是学习如何明智地去 X 的巨大绊脚石。「这是一个自由的国家;我有权利保留自己的观点」,这种态度阻碍了寻找真理的艺术;「我可以随心所欲地定义一个词」,这种态度阻碍了顺着现实大自然的关节进行切分[3]的艺术;甚至连听起来颇为合理的「我们附加在词语上的标签是随意的」,这种说法也会阻碍人们去认识语言在信息压缩上的精妙。顺便说一句,声调和韵律也是如此——托尔金(J.R.R. Tolkien)曾敏锐地察觉到「cellar door(地窖门)」这个短语发音时有多么悦耳;正是需要这种对语言的敏锐觉察力,才能像托尔金那样去运用语言。

词语的长度,在语言的认知科学中也扮演着不可忽视的角色:

想想「躺椅(recliner)」、「椅子(chair)」和「家具(furniture)」这三个词。「躺椅」是比「椅子」更具体的类别;而「家具」是比「椅子」更宽泛的类别。但是,绝大多数椅子都有一个共同的用途——你用大致相同的肢体动作坐进它们里,你坐进去的目的也大同小异(吃饭、看书、打字或休息时让双脚免受体重的压迫)。躺椅并没有偏离这个核心用途。另一方面,「家具」则包含了床和桌子这些用途截然不同的东西,它们所唤起的肢体功能也与椅子大相径庭。

在认知心理学的术语中,「椅子」是一个基本层次类别(basic-level category)

人们倾向于在基本分类层次上进行交流,推测也是在这个层次上进行思考——他们倾向于把认知的边界画在「椅子」周围,而不是在更具体的「躺椅」,或是更宽泛的「家具」周围。人们更有可能说「你可以坐在那把椅子上」,而不是说「你可以坐进那个躺椅」或「你可以坐在那件家具上」。

绝非巧合的是,「椅子(chair)」这个词的音节数量少于「躺椅(recliner)」或「家具(furniture)」。通常来说,基本层次的类别往往拥有简短的名称;而名字简短的名词,也往往指代着基本层次的类别。当然这不是一条绝对完美的法则,但这是一个明确的趋势。频繁的使用催生了简短的词语;简短的词语也伴随着频繁的使用。

或者正如侯世达(Douglas Hofstadter)所说,英语用短小精悍的 the 来表达 the 的意思,而用长达 28 个字母的 antidisestablishmentarianism 来表达 antidisestablishmentarianism(反对废除国教主义),而不是反过来,这是有原因的。


总目录:

《理性:从人工智能到僵尸》导读与目录

卷:

第三卷:灵魂中的机械

章节:

人类词语指南

上一篇:

在哪里划定边界?

下一篇:

互信息与事物空间中的密度
Thoughts Memo 汉化组译制
感谢主要译者 gemini-3.1-pro,校对 Jarrett Ye
原文:Entropy, and Short Codes

参考

1. 奥卡姆剃刀 https://hpmor.xyz/ai2zb_25/
2. 诉诸普遍用法的论点 ./2052688537791750991.html
3. 在哪里划定边界? ./2057532415229301412.html

专栏:理性 & 克服偏见


← 返回目录